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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Aug 31 10:18:38 EDT 2010


Author: flavia.rainone at jboss.com
Date: 2010-08-31 10:18:37 -0400 (Tue, 31 Aug 2010)
New Revision: 107918

Added:
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java
Modified:
   trunk/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java
   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/JavaEEModuleJndiBinder.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java
   trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java
Log:
[JBAS-8170] Port "first cut on binding BeanManagers under a unique name, and removing all dependencies on ManagerObjectFactory" from weld-snapshot branch to trunk

Modified: trunk/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml
===================================================================
--- trunk/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml	2010-08-31 14:18:37 UTC (rev 107918)
@@ -64,10 +64,20 @@
       <!--<stop method="stopService"/>-->
    <!--</bean>-->
 
+   <!-- For non-flat deployments, comment this definition and uncomment the next one -->
+
+   <bean name="BeanDeploymentArchiveLocator" class="org.jboss.weld.integration.deployer.jndi.FlatBeanDeploymentArchiveLocator"/>
+
+   <!--<bean name="BeanDeploymentArchiveLocator" class="org.jboss.weld.integration.deployer.jndi.JBossBeanDeploymentArchiveLocator"/>-->
+   
+
   <!-- Responsible for binding bean managers -->
-  <!--<bean name="JndiBinderDeployer" class="org.jboss.weld.integration.deployer.jndi.JndiBinderDeployer">-->
-      <!--<depends>NameSpaces</depends>-->
-  <!--</bean>-->
+  <bean name="JndiBinderDeployer" class="org.jboss.weld.integration.deployer.jndi.JndiBinderDeployer">
+      <depends>jboss:service=Naming</depends>
+      <property name="nameSpaces"><inject bean="NameSpaces"/></property>
+     <property name="beanDeploymentArchiveLocator"><inject bean="BeanDeploymentArchiveLocator"/></property>
+     <property name="moduleInformer"><inject bean="NamingJavaEEModuleInformer"/></property>
+  </bean>
 
   <bean name="JavaEEComponentJndiBinderDeployer" class="org.jboss.weld.integration.deployer.jndi.JavaEEComponentJndiBinderDeployer">
       <constructor><parameter><inject bean="NamingJavaEEComponentInformer"/></parameter></constructor>

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -37,6 +37,7 @@
 import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.service.NameSpaces;
 import org.jboss.util.naming.NonSerializableFactory;
 import org.jboss.weld.integration.deployer.DeployersUtils;
 
@@ -54,13 +55,13 @@
    private Object thisName;
    private Hashtable<String, String> jndiEnvironment = new Hashtable<String, String>();
    private Context beanManagerContext;
+   private NameSpaces nameSpaces;
 
    protected AbstractJndiBinderDeployer(Class<T> bootstrapClass)
    {
       if (bootstrapClass == null)
          throw new IllegalArgumentException("Null bootstrap class");
 
-      setTopLevelOnly(true);
       addInput(BeanMetaData.class);
       setStage(DeploymentStages.PRE_REAL);
 
@@ -72,18 +73,18 @@
       String bootstrapName = DeployersUtils.getBootstrapBeanName(unit);
       String bbAttachmentName = bootstrapName + "_" + BeanMetaData.class.getSimpleName();
 
-      BeanMetaData bbBMD = unit.getAttachment(bbAttachmentName, BeanMetaData.class);
+      BeanMetaData bbBMD = unit.getTopLevel().getAttachment(DeployersUtils.getBootstrapBeanAttachmentName(unit), BeanMetaData.class);
       if (bbBMD != null)
       {
          BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(bbBMD);
 
          ParameterMetaDataBuilder pmdb = builder.addInstallWithParameters("bind", thisName.toString(), ControllerState.INSTALLED, ControllerState.INSTALLED);
          pmdb.addParameterMetaData(bootstrapClass.getName(), builder.createThis());
-         pmdb.addParameterMetaData(String.class.getName(), unit.getSimpleName());
+         pmdb.addParameterMetaData(DeploymentUnit.class.getName(), unit);
 
          pmdb = builder.addUninstallWithParameters("unbind", thisName.toString(), ControllerState.INSTALLED, ControllerState.INSTALLED);
          pmdb.addParameterMetaData(bootstrapClass.getName(), builder.createThis());
-         pmdb.addParameterMetaData(String.class.getName(), unit.getSimpleName());
+         pmdb.addParameterMetaData(DeploymentUnit.class.getName(), unit);
       }
    }
 
@@ -93,9 +94,14 @@
       this.thisName = thisName;
    }
 
+   public void setNameSpaces(NameSpaces nameSpaces)
+   {
+      this.nameSpaces = nameSpaces;
+   }
+
    protected Context createContext() throws NamingException
    {
-      return new InitialContext(jndiEnvironment);
+      return nameSpaces.getGlobalContext();
    }
 
    public void create() throws Exception
@@ -131,9 +137,9 @@
 
 // --- binding logic ---
 
-   public abstract void bind(T bootstrapBean, String deploymentUnitName) throws NamingException;
+   public abstract void bind(T bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException;
 
-   public abstract void unbind(T bootstrapBean, String deploymentUnitName) throws NamingException;
+   public abstract void unbind(T bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException;
 
    protected static void addNonSerializableFactory(Hashtable<String, String> environment)
    {

Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java	                        (rev 0)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -0,0 +1,15 @@
+package org.jboss.weld.integration.deployer.jndi;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+
+/**
+ * Returns the bean deployment archive that corresponds to a given deployment unit
+ *
+ * @author Marius Bogoevici
+ */
+public interface BeanDeploymentArchiveLocator
+{
+   BeanDeploymentArchive getBeanDeploymentArchive(BootstrapBean bootstrap, DeploymentUnit deploymentUnit);
+}


Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java	                        (rev 0)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -0,0 +1,25 @@
+package org.jboss.weld.integration.deployer.jndi;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+
+/**
+ * {@link BeanDeploymentArchiveLocator} implementation for flat archives
+ *
+ * @author Marius Bogoevici
+ */
+public class FlatBeanDeploymentArchiveLocator implements BeanDeploymentArchiveLocator
+{
+   public BeanDeploymentArchive getBeanDeploymentArchive(BootstrapBean bootstrap, DeploymentUnit deploymentUnit)
+   {
+      for (BeanDeploymentArchive beanDeploymentArchive: bootstrap.getDeployment().getBeanDeploymentArchives())
+      {
+         if (beanDeploymentArchive.getId().equals("flat"))
+         {
+            return beanDeploymentArchive;
+         }
+      }
+      return null;
+   }
+}


Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java	                        (rev 0)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -0,0 +1,25 @@
+package org.jboss.weld.integration.deployer.jndi;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+
+/**
+ * {@link BeanDeploymentArchiveLocator} implementation for non-flat (hierarchical) archives
+ *
+ * @author Marius Bogoevici
+ */
+public class JBossBeanDeploymentArchiveLocator implements BeanDeploymentArchiveLocator
+{
+   public BeanDeploymentArchive getBeanDeploymentArchive(BootstrapBean bootstrap, DeploymentUnit deploymentUnit)
+   {
+      for (BeanDeploymentArchive beanDeploymentArchive: bootstrap.getDeployment().getBeanDeploymentArchives())
+      {
+         if (beanDeploymentArchive.getId().equals(deploymentUnit.getClassLoader().toString()))
+         {
+            return beanDeploymentArchive;
+         }
+      }
+      return null;
+   }
+}


Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -23,10 +23,16 @@
 
 import javax.enterprise.inject.spi.BeanManager;
 import javax.naming.Context;
+import javax.naming.LinkRef;
 import javax.naming.NamingException;
 import javax.naming.Reference;
 
+import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.logging.Logger;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEModuleInformer;
+import org.jboss.reloaded.naming.spi.JavaEEApplication;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
 
 /**
  * @author Marius Bogoevici
@@ -34,11 +40,13 @@
 public abstract class JavaCompJndiBinder
 {
    protected Logger log = Logger.getLogger(getClass());
-   private String deploymentUnitName;
+   private String applicationName;
+   private String moduleName;
 
-   public JavaCompJndiBinder(String deploymentUnitName)
+   public JavaCompJndiBinder(String applicationName, String moduleName)
    {
-      this.deploymentUnitName = deploymentUnitName;
+      this.applicationName = applicationName;
+      this.moduleName = moduleName;
    }
 
    public void bindToJavaComp()
@@ -56,7 +64,8 @@
          }
          if (beanManagerContext == null)
          {
-            compContext.bind("BeanManager",new Reference(BeanManager.class.getName(), "org.jboss.weld.resources.ManagerObjectFactory", null));
+            String path = applicationName == null? applicationName : (applicationName + "/" + moduleName);
+            compContext.bind("BeanManager", new LinkRef("java:global/BeanManagers/" + path));
          }
       }
       catch (NamingException e)
@@ -77,7 +86,9 @@
       }
       catch (NamingException e)
       {
-         log.error("Cound not unbind java:comp/BeanManager for " + deploymentUnitName);
+         log.error("Cound not unbind java:comp/BeanManager for " + getJavaContextDescription());
       }
    }
+
+   
 }
\ No newline at end of file

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -23,6 +23,8 @@
 
 import javax.naming.Context;
 
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.spi.JavaEEApplication;
 import org.jboss.reloaded.naming.spi.JavaEEComponent;
 
 /**
@@ -33,9 +35,9 @@
 
    private JavaEEComponent javaEEComponent;
 
-   public JavaEEComponentJndiBinder(JavaEEComponent javaEEComponent, String deploymentUnitName)
+   public JavaEEComponentJndiBinder(JavaEEComponent javaEEComponent)
    {
-      super(deploymentUnitName);
+      super(getApplicationForComponent(javaEEComponent) != null? getApplicationForComponent(javaEEComponent).getName(): null, javaEEComponent.getModule().getName());
       this.javaEEComponent = javaEEComponent;
    }
 
@@ -50,4 +52,10 @@
    {
       return javaEEComponent.getName();
    }
+
+   protected static JavaEEApplication getApplicationForComponent(JavaEEComponent javaEEComponent)
+   {
+      return javaEEComponent.getModule().getApplication();
+   }
+   
 }
\ No newline at end of file

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-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -27,6 +27,7 @@
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.jpa.javaee.JavaEEModuleInformer;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
 import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
@@ -76,7 +77,6 @@
          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());
          builder.addInstall("bindToJavaComp");
          deploymentUnit.getParent().addAttachment(deploymentUnit.getName() + "_JavaCompBinder", builder.getBeanMetaData());
       }

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -23,6 +23,7 @@
 
 import javax.naming.Context;
 
+import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.reloaded.naming.spi.JavaEEModule;
 
 /**
@@ -33,9 +34,9 @@
 
    private JavaEEModule javaEEModule;
 
-   public JavaEEModuleJndiBinder(JavaEEModule javaEEModule, String deploymentUnitName)
+   public JavaEEModuleJndiBinder(JavaEEModule javaEEModule)
    {
-      super(deploymentUnitName);
+      super(javaEEModule.getApplication() != null? javaEEModule.getApplication().getName(): null, javaEEModule.getName());
       this.javaEEModule = javaEEModule;
    }
 

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -31,6 +31,8 @@
 import javax.naming.Context;
 import javax.naming.NamingException;
 
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEModuleInformer;
 import org.jboss.util.naming.NonSerializableFactory;
 import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
 import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
@@ -49,33 +51,59 @@
    public JndiBinderDeployer()
    {
       super(BootstrapBean.class);
+      this.setWantComponents(false);
    }
 
-// --- binding logic ---
+   private BeanDeploymentArchiveLocator beanDeploymentArchiveLocator;
 
-   public void bind(BootstrapBean bootstrapBean, String deploymentUnitName) throws NamingException
+   private JavaEEModuleInformer moduleInformer;
+
+   public void setBeanDeploymentArchiveLocator(BeanDeploymentArchiveLocator beanDeploymentArchiveLocator)
    {
-      Map<String, BeanManager> beanManagers = new DeploymentVisitor(bootstrapBean).visit().getBeanManagers();
-      Context context = getBeanManagerContext().createSubcontext(deploymentUnitName);
+      this.beanDeploymentArchiveLocator = beanDeploymentArchiveLocator;
+   }
 
-      for (Map.Entry<String, BeanManager> entry : beanManagers.entrySet())
+   public void setModuleInformer(JavaEEModuleInformer moduleInformer)
+   {
+      this.moduleInformer = moduleInformer;
+   }
+
+   // --- binding logic ---
+
+   public void bind(BootstrapBean bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
+   {
+      Context context = getBeanManagerContext();
+
+      if (moduleInformer.getModuleType(deploymentUnit).equals(JavaEEModuleInformer.ModuleType.EJB) ||
+            moduleInformer.getModuleType(deploymentUnit).equals(JavaEEModuleInformer.ModuleType.WEB))
       {
-         NonSerializableFactory.rebind(context, entry.getKey(), entry.getValue());
+         BeanDeploymentArchive beanDeploymentArchive = beanDeploymentArchiveLocator.getBeanDeploymentArchive(bootstrapBean, deploymentUnit);
+         if (beanDeploymentArchive != null)
+         {
+            String applicationName = moduleInformer.getApplicationName(deploymentUnit);
+            String name = (applicationName == null) ? "" : applicationName + "/";
+            name += moduleInformer.getModulePath(deploymentUnit);
+            NonSerializableFactory.rebind(context, name, bootstrapBean.getBootstrap().getManager(beanDeploymentArchive), true);
+         }
       }
    }
 
-   public void unbind(BootstrapBean bootstrapBean, String deploymentUnitName) throws NamingException
+   public void unbind(BootstrapBean bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
    {
       Map<String, BeanManager> beanManagers = new DeploymentVisitor(bootstrapBean).visit().getBeanManagers();
-      Context context = (Context)getBeanManagerContext().lookup(deploymentUnitName); // or how do I get existing sub-context
-
-      for (Map.Entry<String, BeanManager> entry : beanManagers.entrySet())
+      Context context = (Context)getBeanManagerContext();
+      String applicationName = moduleInformer.getApplicationName(deploymentUnit);
+      String topContext = applicationName != null? applicationName: moduleInformer.getModulePath(deploymentUnit);
+      try
       {
-         context.unbind(entry.getKey());
-         NonSerializableFactory.unbind(entry.getKey());
+         Context appContext = (Context) context.lookup(topContext);
+         context.destroySubcontext(topContext);
       }
+      catch (NamingException e)
+      {
+         // ignore if missing
+      }
 
-      getBeanManagerContext().destroySubcontext(deploymentUnitName);
    }
 
    protected static class DeploymentVisitor

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -26,6 +26,7 @@
 import javax.naming.NamingException;
 
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.spi.JavaEEModule;
 
 /**
  * @author Marius Bogoevici
@@ -34,9 +35,10 @@
 {
    private DeploymentUnit deploymentUnit;
 
-   public SimpleCompJndiBinder(DeploymentUnit deploymentUnit)
+   public SimpleCompJndiBinder(DeploymentUnit deploymentUnit, JavaEEModule javaEEModule)
    {
-      super(deploymentUnit.getName());
+      super(javaEEModule.getApplication()!=null?javaEEModule.getApplication().getName():null, javaEEModule.getName());
+
       this.deploymentUnit = deploymentUnit;
    }
 
@@ -52,7 +54,6 @@
       finally
       {
          Thread.currentThread().setContextClassLoader(originalClassLoader);
-         this.deploymentUnit = null;
       }
    }
 

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -53,17 +53,18 @@
       BeanMetaData bbBMD = getBootstrapBeanAttachment(deploymentUnit.getTopLevel());
       if (bbBMD != null && deploymentUnit.isAttachmentPresent(JBossWebMetaData.class))
       {
+         AbstractInjectionValueMetaData javaModule = new AbstractInjectionValueMetaData(getModuleBeanName(deploymentUnit));
+
          BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(deploymentUnit.getName() + "_WebCompJndiBinder", SimpleCompJndiBinder.class.getName());
          builder.addConstructorParameter(DeploymentUnit.class.getName(), deploymentUnit);
+         builder.addConstructorParameter(JavaEEModule.class.getName(), javaModule);
          builder.addInstall("bindToJavaComp");
          // no uninstall method for SimpleCompJndiBinder (context will be destroyed by Tomcat)
          //builder.addUninstall("unbind");
          deploymentUnit.getTopLevel().addAttachment(deploymentUnit.getName() + "_WebCompJndiBinder", builder.getBeanMetaData());
 
          BeanMetaDataBuilder moduleBinderBuilder = BeanMetaDataBuilder.createBuilder(deploymentUnit.getName() + "_JavaModuleJndiBinder", JavaEEModuleJndiBinder.class.getName());
-         AbstractInjectionValueMetaData javaModule = new AbstractInjectionValueMetaData(getModuleBeanName(deploymentUnit));
          moduleBinderBuilder.addConstructorParameter(JavaEEModule.class.getName(), javaModule);
-         moduleBinderBuilder.addConstructorParameter(String.class.getName(), deploymentUnit.getName());
          moduleBinderBuilder.addInstall("bindToJavaComp");
          moduleBinderBuilder.addUninstall("unbind");
          deploymentUnit.getTopLevel().addAttachment(deploymentUnit.getName() + "_JavaModuleJndiBinder", moduleBinderBuilder.getBeanMetaData());

Modified: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java	2010-08-31 14:08:53 UTC (rev 107917)
+++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java	2010-08-31 14:18:37 UTC (rev 107918)
@@ -24,6 +24,7 @@
 import javax.naming.Context;
 import javax.naming.NamingException;
 
+import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.weld.integration.deployer.jndi.AbstractJndiBinderDeployer;
 
 /**
@@ -46,17 +47,17 @@
       return ROOT;
    }
 
-   public void bind(Object bootstrapBean, String deploymentUnitName) throws NamingException
+   public void bind(Object bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
    {
-      Context context = getBeanManagerContext().createSubcontext(deploymentUnitName);
+      Context context = getBeanManagerContext().createSubcontext(deploymentUnit.getSimpleName());
       context.bind("bootstrap", bootstrapBean);
    }
 
-   public void unbind(Object bootstrapBean, String deploymentUnitName) throws NamingException
+   public void unbind(Object bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
    {
-      Context context = (Context)getBeanManagerContext().lookup(deploymentUnitName);
+      Context context = (Context)getBeanManagerContext().lookup(deploymentUnit.getSimpleName());
       context.unbind("bootstrap");
 
-      getBeanManagerContext().destroySubcontext(deploymentUnitName);
+      getBeanManagerContext().destroySubcontext(deploymentUnit.getSimpleName());
    }
 }
\ No newline at end of file



More information about the jboss-cvs-commits mailing list