use of org.jboss.as.weld.spi.InterceptorInstances in project wildfly by wildfly.
the class Jsr299BindingsCreateInterceptor method processInvocation.
@Override
public Object processInvocation(InterceptorContext interceptorContext) throws Exception {
BeanManagerImpl beanManager = this.beanManager;
if (beanManager == null) {
// cache the BM lookup, as it is quite slow
beanManager = this.beanManager = weldContainerSupplier.get().getBeanManager(beanArchiveId);
}
// this is not always called with the deployments TCCL set
// which causes weld to blow up
SessionBean<Object> bean = null;
if (ejbName != null) {
EjbDescriptor<Object> descriptor = beanManager.getEjbDescriptor(this.ejbName);
if (descriptor != null) {
bean = beanManager.getBean(descriptor);
}
}
InterceptorBindings interceptorBindings = interceptorBindingsSupplier.get();
final ComponentInstance componentInstance = interceptorContext.getPrivateData(ComponentInstance.class);
InterceptorInstances existing = interceptorSupport.getInterceptorInstances(componentInstance);
if (existing == null) {
CreationalContext<Object> creationalContext = beanManager.createCreationalContext(bean);
HashMap<String, SerializableContextualInstance<Interceptor<Object>, Object>> interceptorInstances = new HashMap<String, SerializableContextualInstance<Interceptor<Object>, Object>>();
if (interceptorBindings != null) {
for (Interceptor<?> interceptor : interceptorBindings.getAllInterceptors()) {
addInterceptorInstance((Interceptor<Object>) interceptor, beanManager, interceptorInstances, creationalContext);
}
}
interceptorSupport.setInterceptorInstances(componentInstance, new WeldInterceptorInstances(creationalContext, interceptorInstances));
}
return interceptorContext.proceed();
}
use of org.jboss.as.weld.spi.InterceptorInstances in project wildfly by wildfly.
the class Jsr299BindingsInterceptor method processInvocation.
@Override
public Object processInvocation(final InterceptorContext context) throws Exception {
final ComponentInstance componentInstance = context.getPrivateData(ComponentInstance.class);
final InterceptorInstances interceptorInstances = interceptorSupport.getInterceptorInstances(componentInstance);
final InterceptorBindings interceptorBindings = interceptorBindingsSupplier.get();
switch(interceptionType) {
case AROUND_INVOKE:
return doMethodInterception(context.getInvocationContext(), InterceptionType.AROUND_INVOKE, interceptorInstances, interceptorBindings);
case AROUND_TIMEOUT:
return doMethodInterception(context.getInvocationContext(), InterceptionType.AROUND_TIMEOUT, interceptorInstances, interceptorBindings);
case PRE_DESTROY:
try {
return doLifecycleInterception(context, interceptorInstances, interceptorBindings);
} finally {
interceptorInstances.getCreationalContext().release();
}
case POST_CONSTRUCT:
return doLifecycleInterception(context, interceptorInstances, interceptorBindings);
case AROUND_CONSTRUCT:
return doLifecycleInterception(context, interceptorInstances, interceptorBindings);
default:
// should never happen
return context.proceed();
}
}
Aggregations