1 22 package org.jboss.test.aop.jdk15.annotated; 23 24 import java.lang.reflect.Constructor ; 25 import java.lang.reflect.Method ; 26 27 import org.jboss.aop.AnnotationIntroductionDef; 28 import org.jboss.aop.Bind; 29 import org.jboss.aop.InterceptorDef; 30 import org.jboss.aop.advice.Interceptor; 31 import org.jboss.aop.annotation.AnnotationElement; 32 import org.jboss.aop.introduction.AnnotationIntroduction; 33 import org.jboss.aop.joinpoint.ConstructorInvocation; 34 import org.jboss.aop.joinpoint.Invocation; 35 import org.jboss.aop.joinpoint.MethodInvocation; 36 37 42 @InterceptorDef (scope=org.jboss.aop.advice.Scope.PER_VM) 43 @Bind (pointcut="all(org.jboss.test.aop.jdk15.annotated.IntroducedAnnotationPOJO)") 44 public class IntroducedAnnotationInterceptor implements Interceptor 45 { 46 @AnnotationIntroductionDef (expr="method(* org.jboss.test.aop.jdk15.annotated.IntroducedAnnotationPOJO->annotationIntroductionMethod())", invisible=false, annotation="@org.jboss.test.aop.jdk15.annotated.MyAnnotation (string='hello', integer=5, bool=true)") 47 public static AnnotationIntroduction annotationIntroduction; 48 49 public static MyAnnotation lastMyAnnotation; 50 51 public String getName() 52 { 53 return "TestAnnotationInterceptor"; 54 } 55 56 public Object invoke(Invocation invocation) throws Throwable 57 { 58 System.out.println("IntroducedInterceptor"); 59 if (invocation instanceof MethodInvocation) 60 { 61 Method method = ((MethodInvocation)invocation).getMethod(); 62 System.out.println("executing method " + method.toString()); 63 MyAnnotation myAnn = (MyAnnotation)AnnotationElement.getAnyAnnotation(method, MyAnnotation.class); 64 lastMyAnnotation = myAnn; 65 } 66 else if (invocation instanceof ConstructorInvocation) 67 { 68 Constructor constructor = ((ConstructorInvocation)invocation).getConstructor(); 69 System.out.println("executing constructor " + constructor); 70 MyAnnotation myAnn = (MyAnnotation)AnnotationElement.getAnyAnnotation(constructor, MyAnnotation.class); 71 lastMyAnnotation = myAnn; 72 } 73 74 return invocation.invokeNext(); 75 } 76 } 77 | Popular Tags |