Search in sources :

Example 1 with ComponentDefinition

use of org.glassfish.apf.impl.ComponentDefinition in project Payara by payara.

the class InterceptorsHandler method processInterceptorClass.

private void processInterceptorClass(Class interceptorClass, EjbBundleDescriptorImpl ejbBundle, AnnotationInfo ainfo) throws AnnotationProcessorException {
    Set<LifecycleCallbackDescriptor> aroundInvokeDescriptors = new HashSet<LifecycleCallbackDescriptor>();
    Set<LifecycleCallbackDescriptor> aroundTimeoutDescriptors = new HashSet<LifecycleCallbackDescriptor>();
    Set<LifecycleCallbackDescriptor> postActivateDescriptors = new HashSet<LifecycleCallbackDescriptor>();
    Set<LifecycleCallbackDescriptor> prePassivateDescriptors = new HashSet<LifecycleCallbackDescriptor>();
    ComponentDefinition cdef = new ComponentDefinition(interceptorClass);
    for (Method m : cdef.getMethods()) {
        if (m.getAnnotation(AroundInvoke.class) != null) {
            aroundInvokeDescriptors.add(getLifecycleCallbackDescriptor(m, true));
        }
        if (m.getAnnotation(AroundTimeout.class) != null) {
            aroundTimeoutDescriptors.add(getLifecycleCallbackDescriptor(m, true));
        }
        if (m.getAnnotation(PostActivate.class) != null) {
            postActivateDescriptors.add(getLifecycleCallbackDescriptor(m, false));
        }
        if (m.getAnnotation(PrePassivate.class) != null) {
            prePassivateDescriptors.add(getLifecycleCallbackDescriptor(m, false));
        }
    }
    EjbInterceptor interceptor = ejbBundle.getInterceptorByClassName(interceptorClass.getName());
    if (interceptor == null) {
        interceptor = new EjbInterceptor();
        interceptor.setInterceptorClassName(interceptorClass.getName());
        // Add interceptor to the set of all interceptors in the ejb-jar
        ejbBundle.addInterceptor(interceptor);
    }
    if (aroundInvokeDescriptors.size() > 0) {
        interceptor.addAroundInvokeDescriptors(aroundInvokeDescriptors);
    }
    if (aroundTimeoutDescriptors.size() > 0) {
        interceptor.addAroundTimeoutDescriptors(aroundTimeoutDescriptors);
    }
    if (postActivateDescriptors.size() > 0) {
        interceptor.addCallbackDescriptors(CallbackType.POST_ACTIVATE, postActivateDescriptors);
    }
    if (prePassivateDescriptors.size() > 0) {
        interceptor.addCallbackDescriptors(CallbackType.PRE_PASSIVATE, prePassivateDescriptors);
    }
    // process resource related annotations
    EjbInterceptorContext ejbInterceptorContext = new EjbInterceptorContext(interceptor);
    ProcessingContext procContext = ainfo.getProcessingContext();
    procContext.pushHandler(ejbInterceptorContext);
    procContext.getProcessor().process(procContext, new Class[] { interceptorClass });
    return;
}
Also used : PostActivate(javax.ejb.PostActivate) ProcessingContext(org.glassfish.apf.ProcessingContext) LifecycleCallbackDescriptor(com.sun.enterprise.deployment.LifecycleCallbackDescriptor) PrePassivate(javax.ejb.PrePassivate) EjbInterceptorContext(com.sun.enterprise.deployment.annotation.context.EjbInterceptorContext) EjbInterceptor(com.sun.enterprise.deployment.EjbInterceptor) Method(java.lang.reflect.Method) AroundTimeout(javax.interceptor.AroundTimeout) AroundInvoke(javax.interceptor.AroundInvoke) HashSet(java.util.HashSet) ComponentDefinition(org.glassfish.apf.impl.ComponentDefinition)

Aggregations

EjbInterceptor (com.sun.enterprise.deployment.EjbInterceptor)1 LifecycleCallbackDescriptor (com.sun.enterprise.deployment.LifecycleCallbackDescriptor)1 EjbInterceptorContext (com.sun.enterprise.deployment.annotation.context.EjbInterceptorContext)1 Method (java.lang.reflect.Method)1 HashSet (java.util.HashSet)1 PostActivate (javax.ejb.PostActivate)1 PrePassivate (javax.ejb.PrePassivate)1 AroundInvoke (javax.interceptor.AroundInvoke)1 AroundTimeout (javax.interceptor.AroundTimeout)1 ProcessingContext (org.glassfish.apf.ProcessingContext)1 ComponentDefinition (org.glassfish.apf.impl.ComponentDefinition)1