spogulis no
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-27 05:54:38 +02:00
46 rindas
1.0 KiB
Java
46 rindas
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 {}
|