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.

NonstaticInnerClassesInAspects.java 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import org.aspectj.testing.Tester;
  2. public class NonstaticInnerClassesInAspects {
  3. public static void main(String[] args) {
  4. new NonstaticInnerClassesInAspects().realMain(args);
  5. }
  6. public void realMain(String[] args) {
  7. new C().c();
  8. Tester.checkAllEvents();
  9. }
  10. static {
  11. Tester.expectEvent("A$Inner-before-c");
  12. Tester.expectEvent("A$Inner$InnerInner-before-c");
  13. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-before-c");
  14. Tester.expectEvent("A$Inner-after-c");
  15. Tester.expectEvent("A$Inner$InnerInner-after-c");
  16. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-after-c");
  17. Tester.expectEvent("A$Inner-around-c");
  18. Tester.expectEvent("A$Inner$InnerInner-around-c");
  19. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-around-c");
  20. Tester.expectEvent("A$Inner-before-d");
  21. Tester.expectEvent("A$Inner$InnerInner-before-d");
  22. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-before-d");
  23. Tester.expectEvent("A$Inner-after-d");
  24. Tester.expectEvent("A$Inner$InnerInner-after-d");
  25. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-after-d");
  26. Tester.expectEvent("A$Inner-around-d");
  27. Tester.expectEvent("A$Inner$InnerInner-around-d");
  28. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-around-d");
  29. Tester.expectEvent("A$Inner-before-x");
  30. Tester.expectEvent("A$Inner$InnerInner-before-x");
  31. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-before-x");
  32. Tester.expectEvent("A$Inner-after-x");
  33. Tester.expectEvent("A$Inner$InnerInner-after-x");
  34. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-after-x");
  35. Tester.expectEvent("A$Inner-around-x");
  36. Tester.expectEvent("A$Inner$InnerInner-around-x");
  37. Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-around-x");
  38. }
  39. }
  40. class C {
  41. public void c() { d(); }
  42. public void d() { }
  43. }
  44. aspect A {
  45. pointcut c(): target(C) && call(void c());
  46. pointcut d(): call(void C.d());
  47. pointcut x(): target(C) && execution(void c());
  48. after() : c() { new Inner().i("after-c"); }
  49. after() : d() { new Inner().i("after-d"); }
  50. after() : x() { new Inner().i("after-x"); }
  51. before() : c() { new Inner().i("before-c"); }
  52. before() : d() { new Inner().i("before-d"); }
  53. before() : x() { new Inner().i("before-x"); }
  54. void around(): c() { new Inner().i("around-c"); proceed(); }
  55. void around(): d() { new Inner().i("around-d"); proceed(); }
  56. void around(): x() { new Inner().i("around-x"); proceed(); }
  57. class Inner {
  58. void i(String s) {
  59. a(s,this);
  60. new InnerInner().i(s);
  61. }
  62. class InnerInner {
  63. void i(String s) {
  64. a(s,this);
  65. new InnerInnerInner().i(s);
  66. }
  67. class InnerInnerInner {
  68. void i(String s) {
  69. a(s,this);
  70. }
  71. }
  72. }
  73. }
  74. public static void a(String s, Object o) {
  75. Tester.event(o.getClass().getName() + "-" + s);
  76. }
  77. }