1 23 package com.sun.enterprise.deployment.annotation.handlers; 24 25 import java.lang.annotation.Annotation ; 26 import java.lang.annotation.ElementType ; 27 import java.lang.reflect.AnnotatedElement ; 28 import java.lang.reflect.Method ; 29 30 import javax.interceptor.AroundInvoke; 31 32 import com.sun.enterprise.deployment.EjbDescriptor; 33 import com.sun.enterprise.deployment.EjbInterceptor; 34 import com.sun.enterprise.deployment.LifecycleCallbackDescriptor; 35 36 import com.sun.enterprise.deployment.annotation.AnnotationInfo; 37 import com.sun.enterprise.deployment.annotation.AnnotationProcessorException; 38 import com.sun.enterprise.deployment.annotation.HandlerProcessingResult; 39 import com.sun.enterprise.deployment.annotation.context.EjbContext; 40 import com.sun.enterprise.deployment.annotation.context.EjbInterceptorContext; 41 42 46 public class AroundInvokeHandler extends AbstractAttributeHandler { 47 48 public AroundInvokeHandler() { 49 } 50 51 54 public Class <? extends Annotation > getAnnotationType() { 55 return AroundInvoke.class; 56 } 57 58 protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, 59 EjbContext[] ejbContexts) throws AnnotationProcessorException { 60 61 for(EjbContext next : ejbContexts) { 62 63 EjbDescriptor ejbDescriptor = 64 (EjbDescriptor) next.getDescriptor(); 65 66 ejbDescriptor.addAroundInvokeDescriptor( 67 getAroundInvokeDescriptor(ainfo)); 68 } 69 70 return getDefaultProcessedResult(); 71 } 72 73 protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, 74 EjbInterceptorContext ejbInterceptorContext) 75 throws AnnotationProcessorException { 76 77 EjbInterceptor ejbInterceptor = ejbInterceptorContext.getDescriptor(); 78 79 ejbInterceptor.addAroundInvokeDescriptor( 80 getAroundInvokeDescriptor(ainfo)); 81 82 return getDefaultProcessedResult(); 83 } 84 85 private LifecycleCallbackDescriptor getAroundInvokeDescriptor( 86 AnnotationInfo ainfo) { 87 88 Method m = (Method ) ainfo.getAnnotatedElement(); 89 LifecycleCallbackDescriptor lccDesc = 90 new LifecycleCallbackDescriptor(); 91 lccDesc.setLifecycleCallbackClass(m.getDeclaringClass().getName()); 92 lccDesc.setLifecycleCallbackMethod(m.getName()); 93 return lccDesc; 94 } 95 96 101 public Class <? extends Annotation >[] getTypeDependencies() { 102 return getEjbAnnotationTypes(); 103 } 104 105 protected boolean isDelegatee() { 106 return true; 107 } 108 } 109 | Popular Tags |