Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

HasAspect.java 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import org.aspectj.testing.*;
  2. public class HasAspect {
  3. static boolean p = false;
  4. public static void main(String[] args) {
  5. HasAspect c = new HasAspect();
  6. c.someMethod();
  7. Tester.check(p, "p advice was not run");
  8. Tester.check(A.aspectOf(c).advised, "hasaspect(A)");
  9. Tester.check(B.aspectOf().advised, "hasaspect(B)");
  10. Tester.check(C.aspectOf().advised, "hasaspect(C)");
  11. }
  12. public void someMethod() {}
  13. }
  14. aspect A pertarget(target(HasAspect)) {
  15. boolean advised = false;
  16. pointcut p(): call(void someMethod()) && hasaspect(A);
  17. //pointcut p(): receptions(void someMethod()) && instanceof(HasAspect);
  18. before() : p() {
  19. HasAspect.p = true;
  20. }
  21. }
  22. aspect B issingleton() {
  23. boolean advised = false;
  24. }
  25. aspect C percflow(entries()) {
  26. pointcut entries(): executions(void HasAspect.main(String[]));
  27. boolean advised = false;
  28. }
  29. aspect TestAspect {
  30. before(A a, B b, C c) : call(void someMethod())
  31. && hasaspect(a) && hasaspect(b) && hasaspect(c)
  32. {
  33. a.advised = true;
  34. b.advised = true;
  35. c.advised = true;
  36. }
  37. }