--- /dev/null
+package test;
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MyAnnotation {}
+
--- /dev/null
+package test;\r
+\r
+public aspect MyAspect {\r
+ after(test.MyAnnotation ma) : set (public String test.MyClass._myField) && @target(ma){\r
+ System.err.println("pointcut matching : " + ma);\r
+ }\r
+}\r
+\r
--- /dev/null
+package test;
+@MyAnnotation public class MyClass {
+
+ public String _myField;
+
+ public static void main(String[] args) {
+ new MyClass().setMyField("test");
+ }
+
+ public void setMyField(String nv) {
+ this._myField = nv;
+ }
+}
RunResult rR = run("AtTarget4");
}
+ // @target() with an annotation in a package
+ public void testAtTargetAnnotationBinding5() {
+ CompilationResult cR = ajc(new File(baseDir,"usingPackageNames"),
+ new String[]{"MyAspect.aj","MyAnnotation.java","MyClass.java","-1.5"});
+ assertMessages(cR,new EmptyMessageSpec());
+ RunResult rR = run("test.MyClass");
+ }
+
///////////////////////////////////// @THIS
Member getClass = Member.method(TypeX.OBJECT, 0, "getClass", "()Ljava/lang/Class;");
il.append(Utility.createInvoke(fact, world, getClass));
// aload annotationClass
- il.append(fact.createConstant(new ObjectType(hasAnnotation.getAnnotationType().getClassName())));
+ String s = hasAnnotation.getAnnotationType().getName();
+ il.append(fact.createConstant(new ObjectType(hasAnnotation.getAnnotationType().getName())));
// int annClassIndex = fact.getConstantPool().addClass(hasAnnotation.getAnnotationType().getSignature());
// il.append(new LDC_W(annClassIndex));
Member isAnnotationPresent = Member.method(TypeX.forName("java/lang/Class"),0,
Type jlaAnnotation = BcelWorld.makeBcelType(TypeX.forSignature("Ljava.lang.annotation.Annotation;"));
il.append(target.createLoad(fact));
il.append(fact.createInvoke("java/lang/Object","getClass",jlClass,new Type[]{},Constants.INVOKEVIRTUAL));
- il.append(fact.createConstant(new ObjectType(toType.getClassName())));
+ il.append(fact.createConstant(new ObjectType(toType.getName())));
il.append(fact.createInvoke("java/lang/Class","getAnnotation",jlaAnnotation,new Type[]{jlClass},Constants.INVOKEVIRTUAL));
il.append(Utility.createConversion(fact,jlaAnnotation,BcelWorld.makeBcelType(toType)));
return il;
} else {
// Non binding case
- String cleanname = annotationType.getClassName();
+ String cleanname = annotationType.getName();
annotationType = scope.getWorld().resolve(annotationType,true);
// We may not have found it if it is in a package, lets look it up...