123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import org.aspectj.testing.Tester;
- import java.util.*;
-
- public class AspectInheritance {
- public static void main(String[] args) {
- new C().m(2);
-
- Tester.checkEqual(Base.aspectNames, "FullConcrete ConcreteFlow", "names");
- }
- }
-
-
- abstract aspect Base {
- public static Set aspectNames = new HashSet();
-
- abstract pointcut targets(int i, C c);
-
- after(int i, C c): targets(i, c) {
- Base.aspectNames.add(this.getClass().getName());
- }
- }
-
- aspect EmptyConcrete extends Base {
- pointcut targets(int i, C c);
- }
-
- aspect FullConcrete extends Base {
- pointcut targets(int i, C c): target(c) && call(void C.m(int)) && args(i);
- }
-
- abstract aspect Flow percflow(entries()) {
- abstract pointcut entries();
-
- {
- Base.aspectNames.add(this.getClass().getName());
- }
- }
-
- abstract aspect MainFlow extends Flow {
- pointcut entries(): execution(void C.m(..));
- }
-
- aspect ConcreteFlow extends MainFlow { }
-
-
-
- abstract aspect AbstractWorld {
- before(): execution(void C.m(..)) {
- System.out.println("before C.m");
- }
- }
-
-
-
- class C {
- public void m(int i) { }
- }
|