[jboss-cvs] JBossAS SVN: r84430 - projects/webbeans-ri-int/trunk/microcontainer/src/main/java/org/jboss/webbeans/integration/microcontainer/deployer/env.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 19 02:11:47 EST 2009


Author: alesj
Date: 2009-02-19 02:11:47 -0500 (Thu, 19 Feb 2009)
New Revision: 84430

Modified:
   projects/webbeans-ri-int/trunk/microcontainer/src/main/java/org/jboss/webbeans/integration/microcontainer/deployer/env/WebBeansBootstrapDeployer.java
Log:
Handle multiple web apps.

Modified: projects/webbeans-ri-int/trunk/microcontainer/src/main/java/org/jboss/webbeans/integration/microcontainer/deployer/env/WebBeansBootstrapDeployer.java
===================================================================
--- projects/webbeans-ri-int/trunk/microcontainer/src/main/java/org/jboss/webbeans/integration/microcontainer/deployer/env/WebBeansBootstrapDeployer.java	2009-02-19 06:39:41 UTC (rev 84429)
+++ projects/webbeans-ri-int/trunk/microcontainer/src/main/java/org/jboss/webbeans/integration/microcontainer/deployer/env/WebBeansBootstrapDeployer.java	2009-02-19 07:11:47 UTC (rev 84430)
@@ -30,7 +30,6 @@
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
-import org.jboss.deployers.spi.deployer.helpers.AttachmentLocator;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
 
@@ -39,41 +38,61 @@
  *
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
  */
-public class WebBeansBootstrapDeployer extends AbstractSimpleRealDeployer<WebBeanDiscoveryEnvironment>
+public class WebBeansBootstrapDeployer extends AbstractSimpleRealDeployer<JBossWebMetaData>
 {
    public WebBeansBootstrapDeployer()
    {
-      super(WebBeanDiscoveryEnvironment.class);
-      setTopLevelOnly(true);
+      super(JBossWebMetaData.class);
       setStage(DeploymentStages.PRE_REAL);
-      addInput(JBossWebMetaData.class);
+      addInput(WebBeanDiscoveryEnvironment.class);
       addOutput(BeanMetaData.class);
    }
 
-   public void deploy(DeploymentUnit unit, WebBeanDiscoveryEnvironment deployment) throws DeploymentException
+   public void deploy(DeploymentUnit unit, JBossWebMetaData webMetaData) throws DeploymentException
    {
-      JBossWebMetaData webMetaData = AttachmentLocator.searchChildren(unit, JBossWebMetaData.class);
-      if (webMetaData == null)
-         return;
+      DeploymentUnit top = unit.getTopLevel();
+      String topName = top.getName();
+      String bootstrapName = topName + "_WebBeansBootstrap";
+      String webModuleName = getObjectName(webMetaData);
 
-      String unitName = unit.getName();
+      BeanMetaData bootstrapBMD = top.getAttachment(bootstrapName, BeanMetaData.class);
+      if (bootstrapBMD != null)
+      {
+         BeanMetaDataBuilder bootstrap = BeanMetaDataBuilder.createBuilder(bootstrapBMD);
+         addLifecycleDependency(webModuleName, bootstrap);
+      }
+      else
+      {
+         WebBeanDiscoveryEnvironment env = top.getAttachment(WebBeanDiscoveryEnvironment.class);
+         if (env != null)
+         {
+            String envName = topName + "_JBossWebBeanDiscovery";
+            BeanMetaDataBuilder envWrapper = BeanMetaDataBuilder.createBuilder(envName, "org.jboss.webbeans.integration.jbossas.bootstrap.JBossWebBeanDiscovery");
+            envWrapper.addConstructorParameter(WebBeanDiscoveryEnvironment.class.getName(), env);
+            unit.addAttachment(envName + "_" + BeanMetaData.class.getSimpleName(), envWrapper.getBeanMetaData());
 
-      String envName = unitName + "_JBossWebBeanDiscovery";
-      BeanMetaDataBuilder envWrapper = BeanMetaDataBuilder.createBuilder(envName, "org.jboss.webbeans.integration.jbossas.bootstrap.JBossWebBeanDiscovery");
-      envWrapper.addConstructorParameter(WebBeanDiscoveryEnvironment.class.getName(), deployment);
-      unit.addAttachment(envName + "_" + BeanMetaData.class.getSimpleName(), envWrapper.getBeanMetaData());
+            BeanMetaDataBuilder bootstrap = BeanMetaDataBuilder.createBuilder(bootstrapName, "org.jboss.webbeans.bootstrap.WebBeansBootstrap");
+            bootstrap.addPropertyMetaData("webBeanDiscovery", bootstrap.createInject(envName));
+            bootstrap.addPropertyMetaData("ejbDiscovery", createEjbConnector("JBossEjbDiscovery", unit));
+            bootstrap.addPropertyMetaData("ejbResolver", createEjbConnector("JBossEjbResolver", unit));
+            bootstrap.setCreate("initialize");
+            bootstrap.setStart("boot");
+            addLifecycleDependency(webModuleName, bootstrap);
+            unit.addAttachment(bootstrapName + "_" + BeanMetaData.class.getSimpleName(), bootstrap.getBeanMetaData());
+         }
+      }
+   }
 
-      String bootstrapName = unitName + "_WebBeansBootstrap";
-      BeanMetaDataBuilder bootstrap = BeanMetaDataBuilder.createBuilder(bootstrapName, "org.jboss.webbeans.bootstrap.WebBeansBootstrap");
-      bootstrap.addPropertyMetaData("webBeanDiscovery", bootstrap.createInject(envName));
-      bootstrap.addPropertyMetaData("ejbDiscovery", createEjbConnector("JBossEjbDiscovery", unit));
-      bootstrap.addPropertyMetaData("ejbResolver", createEjbConnector("JBossEjbResolver", unit));
-      bootstrap.setCreate("initialize");
-      bootstrap.setStart("boot");
-      String webModuleName = getObjectName(webMetaData);
+   /**
+    * Add bootstrap's lifecycle dependency.
+    *
+    * @param webModuleName the web module name
+    * @param bootstrap the bootstrap bmd builder
+    */
+   protected void addLifecycleDependency(String webModuleName, BeanMetaDataBuilder bootstrap)
+   {
       bootstrap.addDemand(webModuleName, ControllerState.CREATE, ControllerState.CREATE, null);
       bootstrap.addDemand(webModuleName, ControllerState.START, ControllerState.START, null);
-      unit.addAttachment(bootstrapName + "_" + BeanMetaData.class.getSimpleName(), bootstrap.getBeanMetaData());
    }
 
    /**




More information about the jboss-cvs-commits mailing list