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.

FieldGetJoinPointsInAroundAdvice.java 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import java.util.*;
  2. public aspect FieldGetJoinPointsInAroundAdvice {
  3. private static int secretField1;
  4. private int secretField2;
  5. public static int nonsecretField3;
  6. public int nonsecretField4;
  7. static int privateNonstaticFieldGets = 0;
  8. static int privateStaticFieldGets = 0;
  9. static int publicNonstaticFieldGets = 0;
  10. static int publicStaticFieldGets = 0;
  11. before () : cflow(adviceexecution()) && get(private !static * *secret*) { privateNonstaticFieldGets++; tjps.add(thisJoinPoint.getSourceLocation());}
  12. before () : cflow(adviceexecution()) && get(private static * *secret*) { privateStaticFieldGets++;}
  13. before () : cflow(adviceexecution()) && get(public !static * *secret*) { publicNonstaticFieldGets++;}
  14. before () : cflow(adviceexecution()) && get(public static * *secret*) { publicStaticFieldGets++;}
  15. pointcut execTest () : execution(* FieldGetJoinPointsInAroundAdvice.test());
  16. before () : execTest() {
  17. int i = secretField1;
  18. i=secretField2;
  19. i=nonsecretField3;
  20. i=nonsecretField4;
  21. }
  22. void around () : execTest() {
  23. int i=secretField1;
  24. i=secretField2;
  25. i=nonsecretField3;
  26. i=nonsecretField4;
  27. proceed();
  28. }
  29. after () : execTest () {
  30. int i=secretField1;
  31. i=secretField2;
  32. i=nonsecretField3;
  33. i=nonsecretField4;
  34. }
  35. private static List tjps = new ArrayList();
  36. public static void test () {
  37. System.out.println("? test()");
  38. }
  39. public static void main (String[] args) {
  40. test();
  41. if (privateNonstaticFieldGets!=privateStaticFieldGets ||
  42. privateStaticFieldGets!=publicStaticFieldGets ||
  43. publicStaticFieldGets!=publicNonstaticFieldGets) throw new RuntimeException(
  44. "\n privateNonstaticFieldGets="+privateNonstaticFieldGets+
  45. "\n publicNonstaticFieldGets="+publicNonstaticFieldGets+
  46. "\n privateStaticFieldGets="+privateStaticFieldGets+
  47. "\n publicStaticFieldGets="+publicStaticFieldGets);
  48. //System.err.println(tjps);
  49. }
  50. }