use of com.sun.enterprise.deployment.EjbInterceptor in project Payara by payara.
the class EjbDescriptor method getCallbackInterceptors.
/**
* Common code to add the bean class as a LC interceptor
*/
private LinkedList<EjbInterceptor> getCallbackInterceptors(CallbackType type, Set<LifecycleCallbackDescriptor> callbackDescriptors) {
LinkedList<EjbInterceptor> callbackInterceptors = new LinkedList<EjbInterceptor>();
ClassLoader classLoader = getEjbBundleDescriptor().getClassLoader();
List<EjbInterceptor> classOrMethodInterceptors = (type.equals(CallbackType.AROUND_CONSTRUCT)) ? getConstructorInterceptors(classLoader) : interceptorChain;
for (EjbInterceptor next : classOrMethodInterceptors) {
if (next.getCallbackDescriptors(type).size() > 0) {
callbackInterceptors.add(next);
}
}
if (callbackDescriptors != null && callbackDescriptors.size() > 0) {
EjbInterceptor beanClassCallbackInfo = new EjbInterceptor();
beanClassCallbackInfo.setFromBeanClass(true);
beanClassCallbackInfo.addCallbackDescriptors(type, callbackDescriptors);
beanClassCallbackInfo.setInterceptorClassName(getEjbImplClassName());
callbackInterceptors.add(beanClassCallbackInfo);
}
return callbackInterceptors;
}
use of com.sun.enterprise.deployment.EjbInterceptor in project Payara by payara.
the class AroundInvokeNode method getDescriptor.
@Override
public LifecycleCallbackDescriptor getDescriptor() {
if (descriptor == null) {
descriptor = new LifecycleCallbackDescriptor();
Descriptor parentDesc = (Descriptor) getParentNode().getDescriptor();
if (parentDesc instanceof EjbDescriptor) {
EjbDescriptor ejbDesc = (EjbDescriptor) parentDesc;
descriptor.setDefaultLifecycleCallbackClass(ejbDesc.getEjbClassName());
} else if (parentDesc instanceof EjbInterceptor) {
EjbInterceptor ejbInterceptor = (EjbInterceptor) parentDesc;
descriptor.setDefaultLifecycleCallbackClass(ejbInterceptor.getInterceptorClassName());
}
}
return descriptor;
}
use of com.sun.enterprise.deployment.EjbInterceptor in project Payara by payara.
the class AroundTimeoutHandler method processAnnotation.
protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, EjbInterceptorContext ejbInterceptorContext) throws AnnotationProcessorException {
EjbInterceptor ejbInterceptor = ejbInterceptorContext.getDescriptor();
ejbInterceptor.addAroundTimeoutDescriptor(getAroundInvocationDescriptor(ainfo));
return getDefaultProcessedResult();
}
use of com.sun.enterprise.deployment.EjbInterceptor 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));
}
if (m.getAnnotation(AroundTimeout.class) != null) {
aroundTimeoutDescriptors.add(getLifecycleCallbackDescriptor(m));
}
if (m.getAnnotation(PostActivate.class) != null) {
postActivateDescriptors.add(getLifecycleCallbackDescriptor(m));
}
if (m.getAnnotation(PrePassivate.class) != null) {
prePassivateDescriptors.add(getLifecycleCallbackDescriptor(m));
}
}
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;
}
use of com.sun.enterprise.deployment.EjbInterceptor in project Payara by payara.
the class PrePassivateHandler method processAnnotation.
protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, EjbInterceptorContext ejbInterceptorContext) throws AnnotationProcessorException {
EjbInterceptor ejbInterceptor = ejbInterceptorContext.getDescriptor();
ejbInterceptor.addPrePassivateDescriptor(getPrePassivateDescriptor(ainfo));
return getDefaultProcessedResult();
}
Aggregations