[jboss-cvs] JBossAS SVN: r106187 - in trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer: jndi and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Jun 19 03:38:41 EDT 2010


Author: marius.bogoevici
Date: 2010-06-19 03:38:40 -0400 (Sat, 19 Jun 2010)
New Revision: 106187

Modified:
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java
Log:
JBAS-8107 partial: Singleton beans are guaranteed to after before Weld is started and BeanManager is registered in JNDI

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java	2010-06-19 00:20:57 UTC (rev 106186)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java	2010-06-19 07:38:40 UTC (rev 106187)
@@ -84,7 +84,7 @@
       install.addParameterMetaData(Object.class.getName(), bootstrapName);
       install.addParameterMetaData(Iterable.class.getName(), bootstrap.createInject(ejbServicesValue.getUnderlyingValue(), "ejbContainerNames"));
       install.addParameterMetaData(String.class.getName(), "Start");
-      install.addParameterMetaData(String.class.getName(), "Start");
+      install.addParameterMetaData(String.class.getName(), "Create");
 
       unit.addAttachment(DeployersUtils.getBootstrapBeanAttachmentName(unit), bootstrap.getBeanMetaData());
 

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java	2010-06-19 00:20:57 UTC (rev 106186)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java	2010-06-19 07:38:40 UTC (rev 106187)
@@ -21,13 +21,20 @@
  */
 package org.jboss.weld.integration.deployer.jndi;
 
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDependencyMetaData;
 import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.DependencyMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
 import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
 import org.jboss.reloaded.naming.spi.JavaEEComponent;
 import org.jboss.weld.integration.deployer.DeployersUtils;
@@ -59,7 +66,26 @@
 
       if (informer.getModuleType(deploymentUnit).equals(org.jboss.reloaded.naming.deployers.javaee.JavaEEModuleInformer.ModuleType.EJB))
       {
-         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(deploymentUnit.getName() + "_CompJndiBinder", JavaEEComponentJndiBinder.class.getName());
+         if (jBossEnterpriseBeanMetaData instanceof JBossSessionBean31MetaData &&
+               ((JBossSessionBean31MetaData)jBossEnterpriseBeanMetaData).isSingleton())
+         {
+            String containerName = jBossEnterpriseBeanMetaData.getContainerName() == null ?
+                  jBossEnterpriseBeanMetaData.getGeneratedContainerName() :
+                  jBossEnterpriseBeanMetaData.getContainerName();
+
+            AbstractBeanMetaData beanMetaData = (AbstractBeanMetaData) deploymentUnit.getParent().getAttachment(BeanMetaData.class + ":" + containerName, BeanMetaData.class);
+            Set<DependencyMetaData> dependencyMetaDatas = beanMetaData.getDepends();
+            if (null == dependencyMetaDatas)
+            {
+               dependencyMetaDatas = new HashSet<DependencyMetaData>();
+               beanMetaData.setDepends(dependencyMetaDatas);
+            }
+
+            dependencyMetaDatas.add(new AbstractDependencyMetaData(getJndiBinderName(deploymentUnit)));
+            dependencyMetaDatas.add(new AbstractDependencyMetaData(DeployersUtils.getBootstrapBeanName(deploymentUnit)));
+         }
+        
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(getJndiBinderName(deploymentUnit), JavaEEComponentJndiBinder.class.getName());         
          AbstractInjectionValueMetaData javaComponent = new AbstractInjectionValueMetaData(getComponentBeanName(deploymentUnit));
          builder.addConstructorParameter(JavaEEComponent.class.getName(), javaComponent);
          builder.addConstructorParameter(String.class.getName(), deploymentUnit.getName());
@@ -68,6 +94,11 @@
       }
    }
 
+   private String getJndiBinderName(DeploymentUnit deploymentUnit)
+   {
+      return deploymentUnit.getName() + "_CompJndiBinder";
+   }
+
    private BeanMetaData getBootstrapBeanAttachment(DeploymentUnit deploymentUnit)
    {
       String bootstrapName = DeployersUtils.getBootstrapBeanName(deploymentUnit.getTopLevel());



More information about the jboss-cvs-commits mailing list