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.

AnnoBinding2.java 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import java.lang.annotation.Retention;
  2. import java.lang.annotation.RetentionPolicy;
  3. import org.aspectj.lang.reflect.FieldSignature;
  4. import com.sun.org.apache.bcel.internal.classfile.Field;
  5. @Retention(RetentionPolicy.RUNTIME)
  6. @interface Marker {
  7. String message();
  8. }
  9. public class AnnoBinding2 {
  10. public static void main(String[] argv) {
  11. runOne();
  12. runTwo();
  13. java.lang.reflect.Field[] fs = AnnoBinding2.class.getDeclaredFields();
  14. int count = 0;
  15. for (java.lang.reflect.Field f: fs) {
  16. if (f.getName().startsWith("ajc$anno")) {
  17. count++;
  18. }
  19. }
  20. System.out.println(count+" ajc$anno$NNN fields");
  21. }
  22. @Marker(message = "foo")
  23. static int field1;
  24. @Marker(message = "bar")
  25. static int field2;
  26. public static void runOne() {
  27. field1 = field1 * 2; // set and get jps
  28. }
  29. public static void runTwo() {
  30. field2 = field2 * 2; // set and get jps
  31. }
  32. }
  33. aspect X {
  34. pointcut pWoven(Marker l): withincode(* run*(..)) && get(@Marker * * ) && @annotation(l);
  35. before(Marker l): pWoven(l) {
  36. System.out.println(thisJoinPointStaticPart+" "+l);
  37. }
  38. }