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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. public class WhatsGoingOn {
  2. static public void main (String [] args) { }
  3. }
  4. aspect TraceClass {
  5. static private int level = 0;
  6. static private void offset() {
  7. for (int i = 0; i < level; ++i) System.err.print(" ");
  8. }
  9. pointcut pc() :
  10. !cflow(within(Trace*))
  11. // !(within(Trace*) || cflowbelow(within(Trace*)))
  12. ;
  13. before () : pc() {
  14. offset();
  15. System.err.println("-> " + thisJoinPoint);
  16. ++level;
  17. }
  18. after () : pc() {
  19. --level;
  20. offset();
  21. System.err.println("<- " + thisJoinPoint);
  22. }
  23. }
  24. aspect TraceTrace {
  25. static private int level = 0;
  26. static private void offset() {
  27. for (int i = 0; i < level; ++i) System.err.print(" ");
  28. }
  29. pointcut pc() : within(TraceClass);
  30. before () : pc() {
  31. offset();
  32. System.err.println("=> " + thisJoinPoint);
  33. ++level;
  34. }
  35. after () : pc() {
  36. --level;
  37. offset();
  38. System.err.println("<= " + thisJoinPoint);
  39. }
  40. }
  41. //Expected output:
  42. //"=> staticinitialization(TraceClass.<clinit>)\n"+
  43. //" => set(int TraceClass.level)\n"+
  44. //" <= set(int TraceClass.level)\n"+
  45. //" => preinitialization(TraceClass())\n"+
  46. //" <= preinitialization(TraceClass())\n"+
  47. //" => initialization(TraceClass())\n"+
  48. //" => execution(TraceClass())\n"+
  49. //" <= execution(TraceClass())\n"+
  50. //" <= initialization(TraceClass())\n"+
  51. //"<= staticinitialization(TraceClass.<clinit>)\n"+
  52. //"=> execution(ADVICE: void TraceClass.ajc$before$TraceClass$1$346234(JoinPoint))\n"+
  53. //" => call(void TraceClass.offset())\n"+
  54. //" => execution(void TraceClass.offset())\n"+
  55. //" => get(int TraceClass.level)\n"+
  56. //" <= get(int TraceClass.level)\n"+
  57. //" <= execution(void TraceClass.offset())\n"+
  58. //" <= call(void TraceClass.offset())\n"+
  59. //" => get(PrintStream java.lang.System.err)\n"+
  60. //" <= get(PrintStream java.lang.System.err)\n"+
  61. //" => call(java.lang.StringBuffer(String))\n"+
  62. //" <= call(java.lang.StringBuffer(String))\n"+
  63. //" => call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  64. //" <= call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  65. //" => call(String java.lang.StringBuffer.toString())\n"+
  66. //" <= call(String java.lang.StringBuffer.toString())\n"+
  67. //" => call(void java.io.PrintStream.println(String))\n"+
  68. //"-> staticinitialization(WhatsGoingOn.<clinit>)\n"+
  69. //" <= call(void java.io.PrintStream.println(String))\n"+
  70. //" => get(int TraceClass.level)\n"+
  71. //" <= get(int TraceClass.level)\n"+
  72. //" => set(int TraceClass.level)\n"+
  73. //" <= set(int TraceClass.level)\n"+
  74. //"<= execution(ADVICE: void TraceClass.ajc$before$TraceClass$1$346234(JoinPoint))\n"+
  75. //"=> execution(ADVICE: void TraceClass.ajc$after$TraceClass$2$346234(JoinPoint))\n"+
  76. //" => get(int TraceClass.level)\n"+
  77. //" <= get(int TraceClass.level)\n"+
  78. //" => set(int TraceClass.level)\n"+
  79. //" <= set(int TraceClass.level)\n"+
  80. //" => call(void TraceClass.offset())\n"+
  81. //" => execution(void TraceClass.offset())\n"+
  82. //" => get(int TraceClass.level)\n"+
  83. //" <= get(int TraceClass.level)\n"+
  84. //" <= execution(void TraceClass.offset())\n"+
  85. //" <= call(void TraceClass.offset())\n"+
  86. //" => get(PrintStream java.lang.System.err)\n"+
  87. //" <= get(PrintStream java.lang.System.err)\n"+
  88. //" => call(java.lang.StringBuffer(String))\n"+
  89. //" <= call(java.lang.StringBuffer(String))\n"+
  90. //" => call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  91. //" <= call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  92. //" => call(String java.lang.StringBuffer.toString())\n"+
  93. //" <= call(String java.lang.StringBuffer.toString())\n"+
  94. //" => call(void java.io.PrintStream.println(String))\n"+
  95. //"<- staticinitialization(WhatsGoingOn.<clinit>)\n"+
  96. //" <= call(void java.io.PrintStream.println(String))\n"+
  97. //"<= execution(ADVICE: void TraceClass.ajc$after$TraceClass$2$346234(JoinPoint))\n"+
  98. //"=> execution(ADVICE: void TraceClass.ajc$before$TraceClass$1$346234(JoinPoint))\n"+
  99. //" => call(void TraceClass.offset())\n"+
  100. //" => execution(void TraceClass.offset())\n"+
  101. //" => get(int TraceClass.level)\n"+
  102. //" <= get(int TraceClass.level)\n"+
  103. //" <= execution(void TraceClass.offset())\n"+
  104. //" <= call(void TraceClass.offset())\n"+
  105. //" => get(PrintStream java.lang.System.err)\n"+
  106. //" <= get(PrintStream java.lang.System.err)\n"+
  107. //" => call(java.lang.StringBuffer(String))\n"+
  108. //" <= call(java.lang.StringBuffer(String))\n"+
  109. //" => call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  110. //" <= call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  111. //" => call(String java.lang.StringBuffer.toString())\n"+
  112. //" <= call(String java.lang.StringBuffer.toString())\n"+
  113. //" => call(void java.io.PrintStream.println(String))\n"+
  114. //"-> execution(void WhatsGoingOn.main(String[]))\n"+
  115. //" <= call(void java.io.PrintStream.println(String))\n"+
  116. //" => get(int TraceClass.level)\n"+
  117. //" <= get(int TraceClass.level)\n"+
  118. //" => set(int TraceClass.level)\n"+
  119. //" <= set(int TraceClass.level)\n"+
  120. //"<= execution(ADVICE: void TraceClass.ajc$before$TraceClass$1$346234(JoinPoint))\n"+
  121. //"=> execution(ADVICE: void TraceClass.ajc$after$TraceClass$2$346234(JoinPoint))\n"+
  122. //" => get(int TraceClass.level)\n"+
  123. //" <= get(int TraceClass.level)\n"+
  124. //" => set(int TraceClass.level)\n"+
  125. //" <= set(int TraceClass.level)\n"+
  126. //" => call(void TraceClass.offset())\n"+
  127. //" => execution(void TraceClass.offset())\n"+
  128. //" => get(int TraceClass.level)\n"+
  129. //" <= get(int TraceClass.level)\n"+
  130. //" <= execution(void TraceClass.offset())\n"+
  131. //" <= call(void TraceClass.offset())\n"+
  132. //" => get(PrintStream java.lang.System.err)\n"+
  133. //" <= get(PrintStream java.lang.System.err)\n"+
  134. //" => call(java.lang.StringBuffer(String))\n"+
  135. //" <= call(java.lang.StringBuffer(String))\n"+
  136. //" => call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  137. //" <= call(StringBuffer java.lang.StringBuffer.append(Object))\n"+
  138. //" => call(String java.lang.StringBuffer.toString())\n"+
  139. //" <= call(String java.lang.StringBuffer.toString())\n"+
  140. //" => call(void java.io.PrintStream.println(String))\n"+
  141. //"<- execution(void WhatsGoingOn.main(String[]))\n"+
  142. //" <= call(void java.io.PrintStream.println(String))\n"+
  143. //"<= execution(ADVICE: void TraceClass.ajc$after$TraceClass$2$346234(JoinPoint))\n");