You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AroundAdviceOnMethodsCalledInAroundAdvice.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import org.aspectj.testing.Tester;
  2. public class AroundAdviceOnMethodsCalledInAroundAdvice {
  3. public static void main(String[] args) {
  4. new AroundAdviceOnMethodsCalledInAroundAdvice().realMain(args);
  5. }
  6. public void realMain(String[] args) {
  7. Expect.expect();
  8. new C().g();
  9. new C().f("AroundMetaJoinpoints.realMain");
  10. new C("C.package.constructor");
  11. new C(123);
  12. new D().g();
  13. new D("D.package.constructor");
  14. new D(123);
  15. Tester.checkAllEvents();
  16. }
  17. }
  18. aspect A {
  19. Object around(): call(public Object f(String)) {
  20. jp(thisJoinPoint);
  21. return proceed();
  22. }
  23. private void jp (Object join) {}
  24. void around(): call(* jp(..)) {
  25. proceed();
  26. }
  27. }
  28. class D {
  29. Object o = new C().f("D.o");
  30. public D() { new C().f("D.public.constructor"); }
  31. D(String f) { new C().f(f); }
  32. protected D(int i) { new C().f("D.protected.constructor"); }
  33. private D(Integer i) { new C().f("D.private.constructor"); }
  34. { new C().f("D.init"); }
  35. static {
  36. new D(new Integer(123));
  37. new C().f("D.static");
  38. }
  39. public void g() {
  40. Tester.event("D.g");
  41. new C().f("D.g");
  42. }
  43. }
  44. class C {
  45. public C() { f("C.public.constructor"); }
  46. C(String f) { f(f); }
  47. protected C(int i) { f("C.protected.constructor"); }
  48. private C(Integer i) { f("C.private.constructor"); }
  49. Object o = f("C.o");
  50. static { new C(new Integer(123)).f("C.static"); }
  51. { f("C.init"); }
  52. public void g() {
  53. Tester.event("C.g");
  54. f("C.g");
  55. }
  56. public Object f(String f) {
  57. Tester.event("C.f-"+f);
  58. return null;
  59. }
  60. }
  61. class Expect {
  62. static void expect() {
  63. Tester.expectEvent("C.f-C.o");
  64. Tester.expectEvent("C.f-C.init");
  65. Tester.expectEvent("C.f-C.private.constructor");
  66. Tester.expectEvent("C.f-C.static");
  67. Tester.expectEvent("C.f-C.o");
  68. Tester.expectEvent("C.f-C.init");
  69. Tester.expectEvent("C.f-C.public.constructor");
  70. Tester.expectEvent("C.g");
  71. Tester.expectEvent("C.f-C.g");
  72. Tester.expectEvent("C.f-C.o");
  73. Tester.expectEvent("C.f-C.init");
  74. Tester.expectEvent("C.f-C.public.constructor");
  75. Tester.expectEvent("C.f-AroundMetaJoinpoints.realMain");
  76. Tester.expectEvent("C.f-C.o");
  77. Tester.expectEvent("C.f-C.init");
  78. Tester.expectEvent("C.f-C.package.constructor");
  79. Tester.expectEvent("C.f-C.o");
  80. Tester.expectEvent("C.f-C.init");
  81. Tester.expectEvent("C.f-C.protected.constructor");
  82. Tester.expectEvent("C.f-C.o");
  83. Tester.expectEvent("C.f-C.init");
  84. Tester.expectEvent("C.f-C.public.constructor");
  85. Tester.expectEvent("C.f-D.o");
  86. Tester.expectEvent("C.f-C.o");
  87. Tester.expectEvent("C.f-C.init");
  88. Tester.expectEvent("C.f-C.public.constructor");
  89. Tester.expectEvent("C.f-D.init");
  90. Tester.expectEvent("C.f-C.o");
  91. Tester.expectEvent("C.f-C.init");
  92. Tester.expectEvent("C.f-C.public.constructor");
  93. Tester.expectEvent("C.f-D.private.constructor");
  94. Tester.expectEvent("C.f-C.o");
  95. Tester.expectEvent("C.f-C.init");
  96. Tester.expectEvent("C.f-C.public.constructor");
  97. Tester.expectEvent("C.f-D.static");
  98. Tester.expectEvent("C.f-C.o");
  99. Tester.expectEvent("C.f-C.init");
  100. Tester.expectEvent("C.f-C.public.constructor");
  101. Tester.expectEvent("C.f-D.o");
  102. Tester.expectEvent("C.f-C.o");
  103. Tester.expectEvent("C.f-C.init");
  104. Tester.expectEvent("C.f-C.public.constructor");
  105. Tester.expectEvent("C.f-D.init");
  106. Tester.expectEvent("C.f-C.o");
  107. Tester.expectEvent("C.f-C.init");
  108. Tester.expectEvent("C.f-C.public.constructor");
  109. Tester.expectEvent("C.f-D.public.constructor");
  110. Tester.expectEvent("D.g");
  111. Tester.expectEvent("C.f-C.o");
  112. Tester.expectEvent("C.f-C.init");
  113. Tester.expectEvent("C.f-C.public.constructor");
  114. Tester.expectEvent("C.f-D.g");
  115. Tester.expectEvent("C.f-C.o");
  116. Tester.expectEvent("C.f-C.init");
  117. Tester.expectEvent("C.f-C.public.constructor");
  118. Tester.expectEvent("C.f-D.o");
  119. Tester.expectEvent("C.f-C.o");
  120. Tester.expectEvent("C.f-C.init");
  121. Tester.expectEvent("C.f-C.public.constructor");
  122. Tester.expectEvent("C.f-D.init");
  123. Tester.expectEvent("C.f-C.o");
  124. Tester.expectEvent("C.f-C.init");
  125. Tester.expectEvent("C.f-C.public.constructor");
  126. Tester.expectEvent("C.f-D.package.constructor");
  127. Tester.expectEvent("C.f-C.o");
  128. Tester.expectEvent("C.f-C.init");
  129. Tester.expectEvent("C.f-C.public.constructor");
  130. Tester.expectEvent("C.f-D.o");
  131. Tester.expectEvent("C.f-C.o");
  132. Tester.expectEvent("C.f-C.init");
  133. Tester.expectEvent("C.f-C.public.constructor");
  134. Tester.expectEvent("C.f-D.init");
  135. Tester.expectEvent("C.f-C.o");
  136. Tester.expectEvent("C.f-C.init");
  137. Tester.expectEvent("C.f-C.public.constructor");
  138. Tester.expectEvent("C.f-D.protected.constructor");
  139. }
  140. }