mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-14 02:10:40 +02:00
97 lines
2.6 KiB
Java
97 lines
2.6 KiB
Java
import org.aspectj.testing.Tester;
|
|
|
|
public class CallsTo {
|
|
public static void main(String[] args) {
|
|
Tester.clearNotes();
|
|
//System.out.println("cleared events");
|
|
//Tester.printEvents();
|
|
C c = new C();
|
|
Tester.checkAndClear
|
|
("ca-newC",
|
|
"new C");
|
|
c.m("a");
|
|
Tester.checkAndClear
|
|
("re-all re-C ca-all ca-C ",
|
|
"c.m");
|
|
c.m_C("b");
|
|
Tester.checkAndClear
|
|
("re-all re-C ca-all ca-C ",
|
|
"c.m_C");
|
|
|
|
c = new SubC();
|
|
Tester.checkAndClear
|
|
("ca-newC",
|
|
"new SubC");
|
|
c.m("c");
|
|
Tester.checkAndClear
|
|
("re-all re-C re-SubC ca-all ca-C ca-SubC ca-inst(SubC)",
|
|
"subc.m");
|
|
c.m_C("d");
|
|
Tester.checkAndClear
|
|
("re-all re-C re-SubC ca-all ca-C ca-SubC ca-inst(SubC)",
|
|
"subc.m_C");
|
|
|
|
SubC subC = new SubC();
|
|
Tester.checkAndClear
|
|
("ca-newC",
|
|
"new SubC");
|
|
subC.m("e");
|
|
Tester.checkAndClear
|
|
("re-all re-C re-SubC ca-all ca-C ca-SubC ca-inst(SubC)",
|
|
"subc.m");
|
|
subC.m_C("f");
|
|
Tester.checkAndClear
|
|
("re-all re-C re-SubC ca-all ca-C ca-SubC ca-inst(SubC)",
|
|
"subc.m_C");
|
|
subC.m_SubC();
|
|
Tester.checkAndClear
|
|
("re-all re-SubC ca-all ca-SubC",
|
|
"subc.m_SubC");
|
|
}
|
|
}
|
|
|
|
class C {
|
|
public void m(String s1) {}
|
|
public void m_C(String s2) {}
|
|
}
|
|
|
|
class SubC extends C {
|
|
public void m(String s3) {}
|
|
public void m_SubC() {}
|
|
}
|
|
|
|
aspect A {
|
|
// pointcut allReceptions(): receptions(void *(..)) && instanceof(C);
|
|
// pointcut receptionsInC(String s): receptions(void C.*(s));
|
|
// pointcut receptionsInSubC(): receptions(void SubC.*(..));
|
|
|
|
pointcut allcall(): call(void *(..)) && target(C+);
|
|
pointcut callInC(String s): call(void C+.*(String)) && args(s);
|
|
pointcut callInSubC(): call(void *(..)) && target(SubC);
|
|
|
|
before(): allcall() { note("re-all"); }
|
|
before(String s): callInC(s) { note("re-C"); }
|
|
before(): callInSubC() { note("re-SubC"); }
|
|
|
|
before(): allcall() { note("ca-all"); }
|
|
before(String s): callInC(s) { note("ca-C"); }
|
|
before(): callInSubC() { note("ca-SubC"); }
|
|
|
|
|
|
before(): call(void C.*(..)) && target(SubC) { note("ca-inst(SubC)"); }
|
|
|
|
// not implemented
|
|
// before(OnSubC o): call(void C.*(..)) && (hasaspect(OnSubC) && target(o)) {
|
|
// note("ca-asp(SubC)");
|
|
// }
|
|
|
|
before(): call(C+.new(..)) { note("ca-newC"); }
|
|
|
|
private final static void note(String msg) {
|
|
Tester.note(msg);
|
|
}
|
|
}
|
|
|
|
aspect OnSubC /**of eachobject(instanceof(SubC))*/ {
|
|
}
|