123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
-
- import org.aspectj.lang.reflect.FieldSignature;
-
- import com.sun.org.apache.bcel.internal.classfile.Field;
-
- @Retention(RetentionPolicy.RUNTIME)
- @interface Marker {
- String message();
- }
-
- public class AnnoBinding2 {
- public static void main(String[] argv) {
- runOne();
- runTwo();
- java.lang.reflect.Field[] fs = AnnoBinding2.class.getDeclaredFields();
- int count = 0;
- for (java.lang.reflect.Field f: fs) {
- if (f.getName().startsWith("ajc$anno")) {
- count++;
- }
- }
- System.out.println(count+" ajc$anno$NNN fields");
- }
-
- @Marker(message = "foo")
- static int field1;
-
- @Marker(message = "bar")
- static int field2;
-
- public static void runOne() {
- field1 = field1 * 2; // set and get jps
- }
-
- public static void runTwo() {
- field2 = field2 * 2; // set and get jps
- }
- }
-
- aspect X {
- pointcut pWoven(Marker l): withincode(* run*(..)) && get(@Marker * * ) && @annotation(l);
-
- before(Marker l): pWoven(l) {
- System.out.println(thisJoinPointStaticPart+" "+l);
- }
- }
|