mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-09-13 15:45:38 +02:00
46 lines
1.0 KiB
Java
46 lines
1.0 KiB
Java
|
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 {}
|