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.

FieldJoinPointsInAroundAdvice.java 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import java.util.*;
  2. public aspect FieldJoinPointsInAroundAdvice {
  3. private static int secretField1;
  4. private int secretField2;
  5. public static int nonsecretField3;
  6. public int nonsecretField4;
  7. static int privateNonstaticFieldSets = 0;
  8. static int privateStaticFieldSets = 0;
  9. static int publicNonstaticFieldSets = 0;
  10. static int publicStaticFieldSets = 0;
  11. before () : cflow(adviceexecution()) && set(private !static * *secret*) { privateNonstaticFieldSets++; tjps.add(thisJoinPoint.getSourceLocation());}
  12. before () : cflow(adviceexecution()) && set(private static * *secret*) { privateStaticFieldSets++; tjps.add(thisJoinPoint.getSourceLocation());}
  13. before () : cflow(adviceexecution()) && set(public !static * *secret*) { publicNonstaticFieldSets++;}
  14. before () : cflow(adviceexecution()) && set(public static * *secret*) { publicStaticFieldSets++;}
  15. pointcut execTest () : execution(* FieldJoinPointsInAroundAdvice.test());
  16. before () : execTest() {
  17. secretField1++;
  18. secretField2++;
  19. nonsecretField3++;
  20. nonsecretField4++;
  21. }
  22. void around () : execTest() {
  23. secretField1++;
  24. secretField2++;
  25. nonsecretField3++;
  26. nonsecretField4++;
  27. proceed();
  28. }
  29. after () : execTest () {
  30. secretField1++;
  31. secretField2++;
  32. nonsecretField3++;
  33. 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 (privateNonstaticFieldSets!=privateStaticFieldSets ||
  42. privateStaticFieldSets!=publicStaticFieldSets ||
  43. publicStaticFieldSets!=publicNonstaticFieldSets) throw new RuntimeException(
  44. "\n privateNonstaticFieldSets="+privateNonstaticFieldSets+
  45. "\n publicNonstaticFieldSets="+publicNonstaticFieldSets+
  46. "\n privateStaticFieldSets="+privateStaticFieldSets+
  47. "\n publicStaticFieldSets="+publicStaticFieldSets);
  48. //System.err.println(tjps);
  49. }
  50. }