Search in sources :

Example 1 with InterceptorInstances

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();
}
Also used : HashMap(java.util.HashMap) InterceptorInstances(org.jboss.as.weld.spi.InterceptorInstances) SerializableContextualInstance(org.jboss.weld.serialization.spi.helpers.SerializableContextualInstance) BeanManagerImpl(org.jboss.weld.manager.BeanManagerImpl) InterceptorBindings(org.jboss.weld.ejb.spi.InterceptorBindings) ComponentInstance(org.jboss.as.ee.component.ComponentInstance) Interceptor(javax.enterprise.inject.spi.Interceptor)

Example 2 with InterceptorInstances

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();
    }
}
Also used : InterceptorInstances(org.jboss.as.weld.spi.InterceptorInstances) InterceptorBindings(org.jboss.weld.ejb.spi.InterceptorBindings) ComponentInstance(org.jboss.as.ee.component.ComponentInstance)

Aggregations

ComponentInstance (org.jboss.as.ee.component.ComponentInstance)2 InterceptorInstances (org.jboss.as.weld.spi.InterceptorInstances)2 InterceptorBindings (org.jboss.weld.ejb.spi.InterceptorBindings)2 HashMap (java.util.HashMap)1 Interceptor (javax.enterprise.inject.spi.Interceptor)1 BeanManagerImpl (org.jboss.weld.manager.BeanManagerImpl)1 SerializableContextualInstance (org.jboss.weld.serialization.spi.helpers.SerializableContextualInstance)1