mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-07-24 05:44:46 +02:00
49 lines
1.1 KiB
Java
49 lines
1.1 KiB
Java
import org.aspectj.testing.*;
|
|
|
|
public class HasAspect {
|
|
static boolean p = false;
|
|
public static void main(String[] args) {
|
|
HasAspect c = new HasAspect();
|
|
c.someMethod();
|
|
Tester.check(p, "p advice was not run");
|
|
|
|
Tester.check(A.aspectOf(c).advised, "hasaspect(A)");
|
|
Tester.check(B.aspectOf().advised, "hasaspect(B)");
|
|
Tester.check(C.aspectOf().advised, "hasaspect(C)");
|
|
}
|
|
|
|
public void someMethod() {}
|
|
}
|
|
|
|
aspect A pertarget(target(HasAspect)) {
|
|
boolean advised = false;
|
|
|
|
pointcut p(): call(void someMethod()) && hasaspect(A);
|
|
//pointcut p(): receptions(void someMethod()) && instanceof(HasAspect);
|
|
|
|
before() : p() {
|
|
HasAspect.p = true;
|
|
}
|
|
}
|
|
|
|
aspect B issingleton() {
|
|
boolean advised = false;
|
|
}
|
|
|
|
aspect C percflow(entries()) {
|
|
pointcut entries(): executions(void HasAspect.main(String[]));
|
|
|
|
boolean advised = false;
|
|
}
|
|
|
|
|
|
aspect TestAspect {
|
|
before(A a, B b, C c) : call(void someMethod())
|
|
&& hasaspect(a) && hasaspect(b) && hasaspect(c)
|
|
{
|
|
a.advised = true;
|
|
b.advised = true;
|
|
c.advised = true;
|
|
}
|
|
}
|