package a;
import org.aspectj.lang.annotation.SuppressAjWarnings;
+import java.lang.annotation.Annotation;
@TypeAnnotation
public aspect AnnotatedAspect05 {
@MethodAnnotation
@SuppressAjWarnings
- void around() : call(new(..)) { proceed(); }
+ Object around() : call(new(..)) { return proceed(); }
+ public static void main(String[] args) {
+ java.lang.reflect.Method[] methods = AnnotatedAspect05.class.getDeclaredMethods();
+ for (int i = 0; i < methods.length; i++) {
+ if (methods[i].getName().startsWith("ajc$afterThrowing")) {
+ Annotation annotation = methods[i].getAnnotation(AnyAnnotation.class);
+ if (annotation == null) {
+ throw new RuntimeException("advice should be annotated");
+ }
+ }
+ }
+ }
}
package org.aspectj.systemtest.ajc150;
import java.io.File;
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.net.URLClassLoader;
import junit.framework.Test;
public void testAnnotatedAdvice() {
runTest("annotated advice");
- try {
- File classFile = new File(ajc.getSandboxDirectory(),"a/AnnotatedAspect05.class");
- ClassLoader cl = new URLClassLoader(new URL[] {ajc.getSandboxDirectory().toURI().toURL()});
- Class c = cl.loadClass("a.AnnotatedAspect05");
- Class ann = cl.loadClass("a.AnyAnnotation");
- java.lang.reflect.Method[] methods = c.getDeclaredMethods();
- for (int i = 0; i < methods.length; i++) {
- if (methods[i].getName().startsWith("ajc$afterThrowing")) {
- Annotation annotation = methods[i].getAnnotation(ann);
- assertNotNull("Should have @AnyAnnotation",annotation);
- }
- }
- } catch (Exception ex) {
- fail(ex.getMessage());
- }
}
public void testAnnotatedAdviceWithWrongAnnotationType() {
<ajc-test dir="java5/annotations/aspectMembers" title="annotated advice">
<compile files="a/Annotations.java,a/AnnotatedAspect05.aj" options="-1.5">
- <message kind="warning" line="16"/>
+ <message kind="warning" line="17"/>
</compile>
+ <run class="a.AnnotatedAspect05"/>
</ajc-test>
<ajc-test dir="java5/annotations/aspectMembers" title="annotated advice with bad target">