Here’s a sample program with a
working form of the pointcut to pick out only default access (package friendly)
methods:
public aspect TestDefaultDetection {
pointcut
defaultMethod() : execution(!private !public !protected * *(..));
declare warning:
defaultMethod(): “default method”;
void testMatch() {}
public void testNoMatch()
{}
}
class Baz {
public void alsoNoMatch()
{}
}
C:\devel\scratch\access>ajc
TestDefaultDetection.aj
C:\devel\scratch\access\TestDefaultDetection.aj:4
[warning] default method
void testMatch() {}
^^^^^^^^^^^^^^^^^^^
method-execution(void TestDefaultDetection.testMatch())
see also: C:\devel\scratch\access\TestDefaultDetection.aj:3::0
1 warning
From:
aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of David Hatton (AT/LMI)
Sent: Tuesday, September 26, 2006
11:23 AM
To: aspectj-users@xxxxxxxxxxx
Subject: RE: [aspectj-users]
Pointcut for package protected methods
Actually, this doesn't work ... I
originally thought it did, but got a syntax error when I tried it.
I've reverted to my original solution
unless anyone else has a better mechanism????
From:
aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of David Hatton (AT/LMI)
Sent: 21 September 2006 15:50
To: aspectj-users@xxxxxxxxxxx
Subject: RE: [aspectj-users]
Pointcut for package protected methods
Yes, I thought I had tried that and got an
error, but it definitely works.
From:
aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Eric Bodden
Sent: 21 September 2006 15:47
To: aspectj-users@xxxxxxxxxxx
Subject: RE: [aspectj-users]
Pointcut for package protected methods
You can do things
like this, I believe:
execution((!private && !final && !public) *
com.ericsson.nms.cif.cs.transaction.*.*(..))
From:
aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of David Hatton (AT/LMI)
Sent: Thursday, September 21, 2006
10:34 AM
To: aspectj-users@xxxxxxxxxxx
Subject: [aspectj-users] Pointcut
for package protected methods
Hi,
I
am trying to define a point but for methods in a particular package which are
either protected or package protected (default access).
I
can't come up with anything better than this:
pointcut protectedTxMethods() :
execution(* com.ericsson.nms.cif.cs.transaction.*.*(..)) &&
execution(!final * com.ericsson.nms.cif.cs.transaction.*.*(..)) &&
execution(!private * com.ericsson.nms.cif.cs.transaction.*.*(..));
Is
there a better way, or is this the only way to do it???
/David