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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Sep 7 23:04:04 EDT 2010


Author: marius.bogoevici
Date: 2010-09-07 23:04:03 -0400 (Tue, 07 Sep 2010)
New Revision: 108029

Added:
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainterIntegrationDeployer.java
Removed:
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainerDependencyDeployer.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/env/WeldBootstrapDeployer.java
   trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/WeldInjector.java
Log:
Fix to support the new hierarchical deployment structure - one Injector will be deployed for each Web application

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-09-07 22:10:04 UTC (rev 108028)
+++ trunk/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml	2010-09-08 03:04:03 UTC (rev 108029)
@@ -54,7 +54,7 @@
   <bean name="PostWebMetadataDeployer" class="org.jboss.weld.integration.deployer.metadata.PostWebMetadataDeployer"/>
 
   <!-- Responsible for making sure that the CDI container is started before the web application(s)-->
-  <bean name="WebContainerDependencyDeployer" class="org.jboss.weld.integration.deployer.env.WebContainerDependencyDeployer"/>
+  <bean name="WebContainerDependencyDeployer" class="org.jboss.weld.integration.deployer.env.WebContainterIntegrationDeployer"/>
   
   <!-- Responsible for adding the Weld Manager object factory to JNDI -->
    <!--<bean name="WeldJndiBinder" class="org.jboss.weld.integration.deployer.env.WeldJndiBinder">-->

Deleted: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainerDependencyDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainerDependencyDeployer.java	2010-09-07 22:10:04 UTC (rev 108028)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainerDependencyDeployer.java	2010-09-08 03:04:03 UTC (rev 108029)
@@ -1,41 +0,0 @@
-package org.jboss.weld.integration.deployer.env;
-
-import java.util.ArrayList;
-import java.util.List;
-
-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.web.jboss.JBossWebMetaData;
-import org.jboss.weld.integration.deployer.DeployersUtils;
-
-/**
- * Ensures that Weld is bootstrapped before the Web Application is started
- * (if this is a CDI-enabled deployment)
- *
- * @author Marius Bogoevici
- * @author Ales Justin
- */
-public class WebContainerDependencyDeployer extends AbstractSimpleRealDeployer<JBossWebMetaData>
-{
-   public WebContainerDependencyDeployer()
-   {
-      super(JBossWebMetaData.class);
-      setOutput(JBossWebMetaData.class);
-   }
-
-   @Override
-   public void deploy(DeploymentUnit unit, JBossWebMetaData deployment) throws DeploymentException
-   {
-      if (DeployersUtils.isBootstrapBeanPresent(unit))
-      {
-         List<String> depends = deployment.getDepends();
-         if (depends == null)
-         {
-            depends = new ArrayList<String>();
-            deployment.setDepends(depends);
-         }
-         depends.add(DeployersUtils.getBootstrapBeanName(unit));
-      }
-   }
-}

Copied: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainterIntegrationDeployer.java (from rev 108010, trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainerDependencyDeployer.java)
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainterIntegrationDeployer.java	                        (rev 0)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WebContainterIntegrationDeployer.java	2010-09-08 03:04:03 UTC (rev 108029)
@@ -0,0 +1,55 @@
+package org.jboss.weld.integration.deployer.env;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+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.web.jboss.JBossWebMetaData;
+import org.jboss.weld.integration.deployer.DeployersUtils;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+import org.jboss.weld.integration.injection.WeldInjector;
+
+/**
+ * Ensures that Weld is bootstrapped before the Web Application is started
+ * (if this is a CDI-enabled deployment)
+ *
+ * @author Marius Bogoevici
+ * @author Ales Justin
+ */
+public class WebContainterIntegrationDeployer extends AbstractSimpleRealDeployer<JBossWebMetaData>
+{
+   public WebContainterIntegrationDeployer()
+   {
+      super(JBossWebMetaData.class);
+      setOutput(JBossWebMetaData.class);
+   }
+
+   @Override
+   public void deploy(DeploymentUnit unit, JBossWebMetaData deployment) throws DeploymentException
+   {
+      if (DeployersUtils.isBootstrapBeanPresent(unit))
+      {
+         String injectorName = unit.getName() + "_WBInjector";
+         String bootstrapBeanName = DeployersUtils.getBootstrapBeanName(unit);
+
+         BeanMetaDataBuilder weldInjector = BeanMetaDataBuilder.createBuilder(injectorName, WeldInjector.class.getName());
+
+         weldInjector.addConstructorParameter(BootstrapBean.class.getName(), weldInjector.createInject(bootstrapBeanName));
+         weldInjector.addConstructorParameter(String.class.getName(), unit.getClassLoader().toString());
+         weldInjector.setDestroy("cleanup");
+         unit.addAttachment(injectorName + "_" + BeanMetaData.class.getSimpleName(), weldInjector.getBeanMetaData());
+
+         List<String> depends = deployment.getDepends();
+         if (depends == null)
+         {
+            depends = new ArrayList<String>();
+            deployment.setDepends(depends);
+         }
+         depends.add(bootstrapBeanName);
+      }
+   }
+}

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-09-07 22:10:04 UTC (rev 108028)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java	2010-09-08 03:04:03 UTC (rev 108029)
@@ -97,12 +97,6 @@
       install.addParameterMetaData(String.class.getName(), "Create");
 
       unit.addAttachment(DeployersUtils.getBootstrapBeanAttachmentName(unit), bootstrap.getBeanMetaData());
-
-      String injectorName = unit.getName() + "_WBInjector";
-      BeanMetaDataBuilder weldInjector = BeanMetaDataBuilder.createBuilder(injectorName, WeldInjector.class.getName());
-      weldInjector.addConstructorParameter(BootstrapBean.class.getName(), bootstrap.createInject(bootstrapName));
-      weldInjector.setDestroy("cleanup");
-      unit.addAttachment(injectorName + "_" + BeanMetaData.class.getSimpleName(), weldInjector.getBeanMetaData());
    }
 
    /**

Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/WeldInjector.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/WeldInjector.java	2010-09-07 22:10:04 UTC (rev 108028)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/WeldInjector.java	2010-09-08 03:04:03 UTC (rev 108029)
@@ -14,12 +14,17 @@
 {
    private BootstrapBean bootstrapBean;
 
-   public WeldInjector(BootstrapBean bootstrapBean)
+   private String beanDeploymentArchiveId;
+
+   public WeldInjector(BootstrapBean bootstrapBean, String beanDeploymentArchiveId)
    {
       if (bootstrapBean == null)
          throw new IllegalArgumentException("Null bootstrap bean");
+      if (beanDeploymentArchiveId == null)
+         throw new IllegalArgumentException("Null bean deployment archive id");
 
       this.bootstrapBean = bootstrapBean;
+      this.beanDeploymentArchiveId = beanDeploymentArchiveId;
    }
 
    public Class getInjectionClass()
@@ -34,10 +39,20 @@
 
    public void inject(Object instance)
    {
+      BeanDeploymentArchive foundBeanDeploymentArchive = null;
       for (BeanDeploymentArchive beanDeploymentArchive: bootstrapBean.getDeployment().getBeanDeploymentArchives())
       {
-         NonContextualObjectInjectionHelper.injectNonContextualInstance(instance, bootstrapBean.getBootstrap().getManager(beanDeploymentArchive));
+         if (beanDeploymentArchive.getId().equals(beanDeploymentArchiveId))
+         {
+            foundBeanDeploymentArchive = beanDeploymentArchive;
+         }
       }
+      if (foundBeanDeploymentArchive == null)
+      {
+         throw new IllegalStateException("Cannot find BeanManager for BeanDeploymentArchive with id=" + beanDeploymentArchiveId);
+      }
+      NonContextualObjectInjectionHelper.injectNonContextualInstance(instance, bootstrapBean.getBootstrap().getManager(foundBeanDeploymentArchive));
+
    }
 
    public void cleanup()



More information about the jboss-cvs-commits mailing list