private InterceptorDescriptor processInterceptor(Class interceptorClass, ManagedBeanContext managedBeanCtx,
ProcessingContext procCtx)
throws AnnotationProcessorException {
InterceptorDescriptor interceptorDesc = new InterceptorDescriptor();
interceptorDesc.setInterceptorClassName(interceptorClass.getName());
managedBeanCtx.setInterceptorMode(interceptorDesc);
procCtx.pushHandler(managedBeanCtx);
procCtx.getProcessor().process(procCtx, new Class[] {interceptorClass});
managedBeanCtx.unsetInterceptorMode();
Class nextIntClass = interceptorClass;
while(nextIntClass != Object.class) {
Method interceptorAroundInvoke =
getMethodForMethodAnnotation(nextIntClass, "javax.interceptor.AroundInvoke");
if( (interceptorAroundInvoke != null) && !(methodOverridden(interceptorAroundInvoke,
nextIntClass, interceptorClass)) ) {
LifecycleCallbackDescriptor desc = new LifecycleCallbackDescriptor();
desc.setLifecycleCallbackClass(nextIntClass.getName());
desc.setLifecycleCallbackMethod(interceptorAroundInvoke.getName());
interceptorDesc.addAroundInvokeDescriptor(desc);
}
nextIntClass = nextIntClass.getSuperclass();
}
return interceptorDesc;
}