[jboss-cvs] JBossAS SVN: r109981 - in trunk/weld-int: ejb/src/main/java/org/jboss/weld/integration/ejb and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Dec 17 04:20:03 EST 2010


Author: marius.bogoevici
Date: 2010-12-17 04:20:02 -0500 (Fri, 17 Dec 2010)
New Revision: 109981

Modified:
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java
   trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java
   trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java
   trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java
   trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java
   trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java
   trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java
Log:
JBAS-8293, JBAS-8742

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -109,7 +109,7 @@
    @Override
    public void undeploy(DeploymentUnit unit, InjectionManager deployment)
    {
-      if (isCDIDeployment(unit))
+      if (isCDIDeployment(unit) && hasInjector(unit))
       {
          kernelController.uninstall(getJsr299InjectorMcBeanName(unit));
       }
@@ -126,4 +126,17 @@
          return deploymentUnit.getParent().getName() + "/" + deploymentUnit.getName() + "_Jsr299Injector";
       }
    }
+
+   private boolean hasInjector(DeploymentUnit deploymentUnit)
+   {
+      if (!deploymentUnit.isComponent())
+      {
+         return true;
+      }
+      else
+      {
+         JBossEnterpriseBeanMetaData enterpriseBeanMetaData = deploymentUnit.getAttachment(JBossEnterpriseBeanMetaData.class);
+         return (enterpriseBeanMetaData != null && enterpriseBeanMetaData.getJBossMetaData().isEJB3x());
+      }
+   }
 }

Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -1,5 +1,7 @@
 package org.jboss.weld.integration.ejb;
 
+import java.io.Serializable;
+
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.ejb3.ejbref.resolver.spi.EjbReferenceResolver;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
@@ -7,11 +9,10 @@
 import org.jboss.weld.ejb.spi.InterceptorBindings;
 import org.jboss.weld.integration.util.Reflections;
 
-public abstract class JBossEJBDescriptorAdaptor<T> implements EjbDescriptor<T>
+public abstract class JBossEJBDescriptorAdaptor<T> implements EjbDescriptor<T>, Serializable
 {
    private final Class<T> beanClass;
    private final String ejbName;
-   private InterceptorBindings interceptorBindings;
 
    public JBossEJBDescriptorAdaptor(JBossEnterpriseBeanMetaData enterpriseBeanMetaData, DeploymentUnit deploymentUnit, EjbReferenceResolver resolver)
    {
@@ -91,14 +92,4 @@
    {
       return getEjbName().hashCode();
    }
-
-   public void setInterceptorBindings(InterceptorBindings interceptorBindings)
-   {
-      this.interceptorBindings = interceptorBindings;
-   }
-
-   public InterceptorBindings getInterceptorBindings()
-   {
-      return interceptorBindings;
-   }
 }
\ No newline at end of file

Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -1,15 +1,12 @@
 package org.jboss.weld.integration.ejb;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.ejb.EJB;
-import javax.enterprise.inject.spi.InjectionPoint;
+
 import javax.naming.NamingException;
 
 import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -41,7 +38,8 @@
    protected EjbReferenceResolver resolver;
    private final List<EjbDescriptor<?>> ejbs = new ArrayList<EjbDescriptor<?>>();
    private final List<String> ejbContainerNames = new ArrayList<String>();
-   private Map<EjbDescriptor<?>, InterceptorBindings> interceptorBindings = new ConcurrentHashMap<EjbDescriptor<?>, InterceptorBindings>();
+   private Map<String, InterceptorBindings> interceptorBindings = new ConcurrentHashMap<String, InterceptorBindings>();
+   private Map<EjbDescriptor<?>, DeploymentUnit> deploymentUnitMap = new ConcurrentHashMap<EjbDescriptor<?>, DeploymentUnit>();
 
    public JBossEjbServices() throws NamingException
    {
@@ -64,7 +62,7 @@
    {
       try
       {
-         return new JBossSessionObjectReference(ejbDescriptor, context);
+         return new JBossSessionObjectReference(ejbDescriptor, deploymentUnitMap.get(ejbDescriptor), context);
       }
       catch (NamingException e)
       {
@@ -74,7 +72,7 @@
 
    public void registerInterceptors(EjbDescriptor<?> ejbDescriptor, InterceptorBindings interceptorBindings)
    {
-      this.interceptorBindings.put(ejbDescriptor, interceptorBindings);
+      this.interceptorBindings.put(ejbDescriptor.getEjbName(), interceptorBindings);
    }
 
    public Object resolveRemoteEjb(String jndiName, String mappedName, String ejbLink)
@@ -124,19 +122,19 @@
             {
                JBossSessionBean31MetaData sessionBeanMetaData = (JBossSessionBean31MetaData) enterpriseBeanMetaData;
                EjbDescriptor<?> ejbDescriptor = new JBossSessionBean31DescriptorAdaptor<Object>(sessionBeanMetaData, du, resolver);
-               ejbs.add(ejbDescriptor);
+               addEjbDescriptor(ejbDescriptor, du);
             }
             else if (enterpriseBeanMetaData.isSession())
             {
                JBossSessionBeanMetaData sessionBeanMetaData = (JBossSessionBeanMetaData) enterpriseBeanMetaData;
                EjbDescriptor<?> ejbDescriptor = new JBossSessionBeanDescriptorAdaptor<Object>(sessionBeanMetaData, du, resolver);
-               ejbs.add(ejbDescriptor);
+               addEjbDescriptor(ejbDescriptor, du);
             }
             else if (enterpriseBeanMetaData.isMessageDriven())
             {
                JBossMessageDrivenBeanMetaData messageDrivenBeanMetaData = (JBossMessageDrivenBeanMetaData) enterpriseBeanMetaData;
                EjbDescriptor<?> ejbDescriptor = new JBossMessageDrivenBeanDescriptorAdaptor<Object>(messageDrivenBeanMetaData, du, resolver);
-               ejbs.add(ejbDescriptor);
+               addEjbDescriptor(ejbDescriptor, du);
             }
             if (enterpriseBeanMetaData.getContainerName() != null)
             {
@@ -159,6 +157,12 @@
       }
    }
 
+   private void addEjbDescriptor(EjbDescriptor<?> ejbDescriptor, DeploymentUnit deploymentUnit)
+   {
+      deploymentUnitMap.put(ejbDescriptor, deploymentUnit);
+      ejbs.add(ejbDescriptor);
+   }
+
    public Iterable<EjbDescriptor<?>> getEjbs()
    {
       return ejbs;
@@ -174,9 +178,9 @@
       return Collections.unmodifiableCollection(ejbContainerNames);
    }
 
-   public InterceptorBindings getInterceptorBindings(EjbDescriptor<?> ejbDescriptor)
+   public InterceptorBindings getInterceptorBindings(String ejbName)
    {
-      return interceptorBindings.get(ejbDescriptor);
+      return interceptorBindings.get(ejbName);
    }
 
    @Override

Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -26,7 +26,6 @@
    private final boolean stateless;
    private final boolean singleton;
    private final String localJndiName;
-   private final DeploymentUnit deploymentUnit;
 
    public JBossSessionBeanDescriptorAdaptor(JBossSessionBeanMetaData sessionBeanMetaData, DeploymentUnit deploymentUnit, EjbReferenceResolver resolver)
    {
@@ -95,7 +94,6 @@
       this.stateless = sessionBeanMetaData.isStateless();
       this.singleton = false;
       this.localJndiName = jndiName;
-      this.deploymentUnit = deploymentUnit;
    }
 
    public Collection<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces()
@@ -139,11 +137,6 @@
       return localJndiName;
    }
 
-   public DeploymentUnit getDeploymentUnit()
-   {
-      return deploymentUnit;
-   }
-
    public boolean isNoInterfaceView()
    {
       return false;

Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -27,14 +27,14 @@
 
    private final Object reference;
    private final Serializable id;
-   private final DeploymentUnit deploymentUnit;
    private final String ejbClassName;
    private final String jndiName;
    private final boolean stateful;
 
    boolean removed = false;
+   private final String endpointMcBindName;
 
-   public JBossSessionObjectReference(EjbDescriptor<?> descriptor, Context context) throws NamingException
+   public JBossSessionObjectReference(EjbDescriptor<?> descriptor, DeploymentUnit deploymentUnit, Context context) throws NamingException
    {
       if (!(descriptor instanceof JBossSessionBeanDescriptorAdaptor<?>))
       {
@@ -51,8 +51,14 @@
          SessionProxyInvocationHandler handler = (SessionProxyInvocationHandler) Proxy.getInvocationHandler(reference);
          id = (Serializable) handler.getTarget();
       }
-      this.deploymentUnit = ((JBossSessionBeanDescriptorAdaptor<?>) descriptor).getDeploymentUnit();
+
+      @Deprecated
+      Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
+
+      // Get the resolver
+      EndpointResolver resolver = registrar.lookup(MC_BIND_NAME_ENDPOINT_RESOLVER, EndpointResolver.class);
       this.ejbClassName = descriptor.getBeanClass().getSimpleName();
+      endpointMcBindName = resolver.resolve(deploymentUnit, ejbClassName);
       this.stateful = descriptor.isStateful();
    }
 
@@ -85,10 +91,6 @@
    {
       @Deprecated
       Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
-
-      // Get the resolver
-      EndpointResolver resolver = registrar.lookup(MC_BIND_NAME_ENDPOINT_RESOLVER, EndpointResolver.class);
-      String endpointMcBindName = resolver.resolve(deploymentUnit, ejbClassName);
       return registrar.lookup(endpointMcBindName, Endpoint.class);
    }
 

Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -76,7 +76,6 @@
    private WeldManager beanManager;
 
    private CreationalContext<Object> creationalContext;
-   private InjectionTarget<Object> injectionTarget;
 
    public static final String CREATIONAL_CONTEXT = "org.jboss.weld.integration.ejb.SessionBeanInterceptor.creationalContext";
    public static final String EJB_DESCRIPTOR = "org.jboss.weld.integration.ejb.SessionBeanInterceptor.ejbName";
@@ -92,7 +91,7 @@
    {
       String ejbName = getEjbName();
       EjbDescriptor<Object> descriptor = beanManager.getEjbDescriptor(ejbName);
-      injectionTarget = beanManager.createInjectionTarget(descriptor);
+      InjectionTarget<Object> injectionTarget = beanManager.createInjectionTarget(descriptor);
       Bean<Object> bean = beanManager.getBean(descriptor);
       creationalContext = beanManager.createCreationalContext(bean);
       injectionTarget.inject(invocationContext.getTarget(), creationalContext);

Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java	2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java	2010-12-17 09:20:02 UTC (rev 109981)
@@ -58,10 +58,10 @@
    @Resource(mappedName="java:comp/BeanManager")
    private WeldManager beanManager;
 
-   private InterceptorBindings interceptorBindings;
-
    private Map<String, SerializableContextualInstance<Interceptor<Object>, Object>> interceptorInstances;
 
+   private String ejbName;
+
    @PostConstruct
    public void doPostConstruct(InvocationContext invocationContext) throws Exception
    {
@@ -73,17 +73,8 @@
    {
       // create contextual instances for inteDITrceptors
       interceptorInstances = new ConcurrentHashMap<String, SerializableContextualInstance<Interceptor<Object>, Object>>();
-      EjbDescriptor<?> ejbDescriptor = (EjbDescriptor<?>) invocationContext.getContextData().get(SessionBeanInterceptor.EJB_DESCRIPTOR);
-      EjbServices ejbServices = beanManager.getServices().get(EjbServices.class);
-      if (ejbServices instanceof ForwardingEjbServices)
-      {
-         ejbServices = ((ForwardingEjbServices)ejbServices).delegate();
-      }
-      if (ejbServices instanceof JBossEjbServices)
-      {
-         interceptorBindings = ((JBossEjbServices)ejbServices).getInterceptorBindings(ejbDescriptor);
-      }
-
+      ejbName = ((EjbDescriptor<?>) invocationContext.getContextData().get(SessionBeanInterceptor.EJB_DESCRIPTOR)).getEjbName();
+      InterceptorBindings interceptorBindings = getInterceptorBindings(ejbName);
       if (interceptorBindings != null)
       {
          for (Interceptor<?> interceptor : interceptorBindings.getAllInterceptors())
@@ -94,6 +85,21 @@
       }
    }
 
+   private InterceptorBindings getInterceptorBindings(String ejbName)
+   {
+      EjbServices ejbServices = beanManager.getServices().get(EjbServices.class);
+      if (ejbServices instanceof ForwardingEjbServices)
+      {
+         ejbServices = ((ForwardingEjbServices)ejbServices).delegate();
+      }
+      InterceptorBindings interceptorBindings = null;
+      if (ejbServices instanceof JBossEjbServices)
+      {
+          interceptorBindings = ((JBossEjbServices)ejbServices).getInterceptorBindings(ejbName);
+      }
+      return interceptorBindings;
+   }
+
    @SuppressWarnings("unchecked")
    private void addInterceptorInstance(Interceptor<Object> interceptor, InvocationContext invocationContext)
    {
@@ -119,6 +125,7 @@
    private void doLifecycleInterception(InvocationContext invocationContext, InterceptionType interceptionType)
          throws Exception
    {
+      InterceptorBindings interceptorBindings = getInterceptorBindings(ejbName);
       if (interceptorBindings != null)
       {
          List<Interceptor<?>> currentInterceptors = interceptorBindings.getLifecycleInterceptors(interceptionType);
@@ -133,6 +140,7 @@
    private Object doMethodInterception(InvocationContext invocationContext, InterceptionType interceptionType)
          throws Exception
    {
+      InterceptorBindings interceptorBindings = getInterceptorBindings(ejbName);
       if (interceptorBindings != null)
       {
          List<Interceptor<?>> currentInterceptors = interceptorBindings.getMethodInterceptors(interceptionType, invocationContext.getMethod());



More information about the jboss-cvs-commits mailing list