123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import org.aspectj.testing.Tester;
-
- public class AroundCalls {
- public static void main(String[] args) { test(); }
-
- public static void test() {
- //Tester.checkEqual(new C().m(), "abc:2", "many arounds");
- Tester.checkEqual(new C().m(), "acb:2", "many arounds");
- }
- }
-
- class C {
- public String m() {
- return new D().m1("a", 0);
- }
- }
-
- class D {
- public String m1(String s, int x) { return s + ":" + x; }
- }
-
- aspect A {
- String around(D d, String as, int ax):
- call(String D.m1(String,int)) &&
- args(as,ax) &&
- target(d)
- //receptions(String d.m1(as, ax))
-
- {
- //System.out.println(as + " : " + d + " : " + ax);
- return proceed(d, as + "c", ax + 1);
- }
-
- String around(String as/*, C c1*/, D d1, int ax):
- within(C) &&
- target(d1) && call(String m1(String,int)) && args(as,ax)
- //instanceof(c1) && callsto(instanceof(d1) && receptions(String m1(as, ax)))
- {
- //System.out.println(as + " : " + c1 + " : " + d1 + " : " + ax);
- return proceed(as + "b", /*c1,*/ d1, ax + 1);
- }
- }
|