|
123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import org.aspectj.testing.Tester;
-
- public class IntroOrder {
- public static void main(String[] args) {
- Persist.HasPersistor hp1 = new Class1();
- Persist.HasPersistor hp2 = new Class2();
-
- Persistor p = new Persistor();
- hp1.setPersistor(p);
- Tester.checkEqual(p, hp1.getPersistor(), "basic intro");
- }
- }
-
- class Class1 {}
- class Class2 {}
-
- aspect A1 {
- declare parents: Class1 implements Persist.HasPersistor;
- }
-
- abstract aspect Persist {
- interface HasPersistor {
- // introduction below specifies this interface
- }
-
- private Persistor HasPersistor.persistor;
- public void HasPersistor.setPersistor(Persistor p) { persistor = p; }
- public Persistor HasPersistor.getPersistor() { return persistor; }
-
- abstract pointcut readMethods();
-
- abstract pointcut writeMethods();
-
- //advices
- }
-
- aspect A2 extends Persist {
- declare parents: Class2 implements HasPersistor;
- // concretize pointcuts
-
- pointcut readMethods();
- pointcut writeMethods();
- }
-
- class Persistor {}
|