Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

AfterReturningConstructor.java 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import org.aspectj.testing.Tester;
  2. /** @testcase PR#827 after returning advice on interface and implementation constructor */
  3. public class AfterReturningConstructor {
  4. public static void main(String[] args) {
  5. U.ee(U.before + U.ijp);
  6. U.ee(U.afterReturning + U.ijp);
  7. U.ee(U.before + U.cjp);
  8. U.ee(U.c);
  9. U.ee(U.afterReturning + U.cjp);
  10. U.ee("done");
  11. new C();
  12. U.e("done");
  13. Tester.checkAllEvents();
  14. }
  15. }
  16. class C implements I {
  17. C() { U.e("C()"); }
  18. public void run() { }
  19. }
  20. interface I {
  21. void run();
  22. }
  23. class U {
  24. static final String before = "before(): ";
  25. static final String after = "after(): ";
  26. static final String afterReturning = "after() returning(): ";
  27. static final String afterThrowing = "after() throwing(): ";
  28. static final String c = "C()";
  29. static final String i = "I()";
  30. static final String cjp = "initialization(" + c + ")";
  31. static final String ijp = "initialization(" + i + ")";
  32. static void e(String event) {
  33. //System.err.println("act event: " + event); // XXX
  34. Tester.event(event);
  35. }
  36. static void ee(String event) {
  37. //System.err.println("exp event: " + event); // XXX
  38. Tester.expectEvent(event);
  39. }
  40. }
  41. aspect A {
  42. /** must pick out both interface and implementor initializers */
  43. pointcut pc(): initialization(new(..)) && !within(A);
  44. before(): pc() {
  45. U.e(U.before + thisJoinPoint);
  46. }
  47. after() returning(): pc() {
  48. U.e(U.afterReturning + thisJoinPoint);
  49. }
  50. }