[jboss-cvs] JBossAS SVN: r107539 - in branches/weld-ejb3-int/weld-int: deployer and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Aug 11 13:52:22 EDT 2010


Author: marius.bogoevici
Date: 2010-08-11 13:52:22 -0400 (Wed, 11 Aug 2010)
New Revision: 107539

Added:
   branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/instantiator/
   branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/instantiator/WeldBeanInstantiatorDeployer.java
   branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/instantiator/
   branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/instantiator/WeldBeanInstantiator.java
Modified:
   branches/weld-ejb3-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml
   branches/weld-ejb3-int/weld-int/deployer/pom.xml
   branches/weld-ejb3-int/weld-int/ejb/pom.xml
Log:
a first version of WeldBeanInstantiator and its deployer

Modified: branches/weld-ejb3-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml
===================================================================
--- branches/weld-ejb3-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml	2010-08-11 15:40:26 UTC (rev 107538)
+++ branches/weld-ejb3-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml	2010-08-11 17:52:22 UTC (rev 107539)
@@ -54,6 +54,10 @@
 
   <!-- 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="WeldBeanInstantiatorDeployer" class="org.jboss.weld.integration.deployer.instantiator.WeldBeanInstantiatorDeployer">
+      <property name="kernel"><inject bean="jboss.kernel:service=Kernel"/></property>      
+  </bean>
   
   <!-- Responsible for adding the Weld Manager object factory to JNDI -->
    <!--<bean name="WeldJndiBinder" class="org.jboss.weld.integration.deployer.env.WeldJndiBinder">-->

Modified: branches/weld-ejb3-int/weld-int/deployer/pom.xml
===================================================================
--- branches/weld-ejb3-int/weld-int/deployer/pom.xml	2010-08-11 15:40:26 UTC (rev 107538)
+++ branches/weld-ejb3-int/weld-int/deployer/pom.xml	2010-08-11 17:52:22 UTC (rev 107539)
@@ -127,7 +127,16 @@
       </exclusions>
     </dependency>
 
+
     <dependency>
+      <groupId>org.jboss.ejb3.instantiator</groupId>
+      <artifactId>jboss-ejb3-instantiator-spi</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+
+
+    <dependency>
       <groupId>org.jboss.metadata</groupId>
       <artifactId>jboss-metadata-ejb</artifactId>
       <scope>provided</scope>

Added: branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/instantiator/WeldBeanInstantiatorDeployer.java
===================================================================
--- branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/instantiator/WeldBeanInstantiatorDeployer.java	                        (rev 0)
+++ branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/instantiator/WeldBeanInstantiatorDeployer.java	2010-08-11 17:52:22 UTC (rev 107539)
@@ -0,0 +1,67 @@
+package org.jboss.weld.integration.deployer.instantiator;
+
+import org.jboss.beans.metadata.api.model.InjectOption;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.ejb3.instantiator.spi.AttachmentNames;
+import org.jboss.ejb3.instantiator.spi.BeanInstantiator;
+import org.jboss.kernel.Kernel;
+import org.jboss.weld.integration.deployer.DeployersUtils;
+import org.jboss.weld.integration.instantiator.WeldBeanInstantiator;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class WeldBeanInstantiatorDeployer extends AbstractRealDeployer
+{
+
+   Kernel kernel;
+
+   public WeldBeanInstantiatorDeployer()
+   {
+      super();
+      addRequiredInput(AttachmentNames.NAME_BEAN_INSTANCE_INSTANTIATOR);
+      addOutput(AttachmentNames.NAME_BEAN_INSTANCE_INSTANTIATOR);
+   }
+
+   public void setKernel(Kernel kernel)
+   {
+      this.kernel = kernel;
+   }
+
+   @Override
+   protected void internalDeploy(DeploymentUnit unit) throws DeploymentException
+   {
+      BeanInstantiator defaultInstantiator = null;
+      if (DeployersUtils.isBootstrapBeanPresent(unit))
+      {
+         BeanInstantiator instantiator = new WeldBeanInstantiator();
+         unit.addAttachment(AttachmentNames.NAME_BEAN_INSTANCE_INSTANTIATOR, instantiator, BeanInstantiator.class);
+
+         BeanMetaDataBuilder instantiatorMetaData = BeanMetaDataBuilderFactory.createBuilder(unit.getName() + "_WBInstantiator", WeldBeanInstantiator.class.getName());
+
+         AbstractInjectionValueMetaData bootstrapBeanInjectionMetaData = new AbstractInjectionValueMetaData(DeployersUtils.getBootstrapBeanName(unit));
+         bootstrapBeanInjectionMetaData.setInjectionOption(InjectOption.CALLBACK);
+         instantiatorMetaData.addPropertyMetaData("bootstrapBean", bootstrapBeanInjectionMetaData);
+         try
+         {
+            kernel.getController().install(instantiatorMetaData.getBeanMetaData(), instantiator);
+         }
+         catch (Throwable throwable)
+         {
+            throw new DeploymentException(throwable);
+         }
+
+      }
+   }
+
+   @Override
+   protected void internalUndeploy(DeploymentUnit unit)
+   {
+      kernel.getController().uninstall(unit.getName() + "_WBInstantiator");
+   }
+}

Added: branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/instantiator/WeldBeanInstantiator.java
===================================================================
--- branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/instantiator/WeldBeanInstantiator.java	                        (rev 0)
+++ branches/weld-ejb3-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/instantiator/WeldBeanInstantiator.java	2010-08-11 17:52:22 UTC (rev 107539)
@@ -0,0 +1,32 @@
+package org.jboss.weld.integration.instantiator;
+
+import javax.enterprise.inject.spi.AnnotatedType;
+
+import org.jboss.ejb3.instantiator.spi.BeanInstantiationException;
+import org.jboss.ejb3.instantiator.spi.BeanInstantiator;
+import org.jboss.ejb3.instantiator.spi.InvalidConstructionParamsException;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+import org.jboss.weld.manager.api.WeldManager;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class WeldBeanInstantiator implements BeanInstantiator
+{
+
+   private BootstrapBean bootstrapBean;
+
+   public void setBootstrapBean(BootstrapBean bootstrapBean)
+   {
+      this.bootstrapBean = bootstrapBean;
+   }
+
+   public <T> T create(Class<T> implClass, Object[] parameters) throws IllegalArgumentException, InvalidConstructionParamsException, BeanInstantiationException
+   {
+      WeldManager weldManager = bootstrapBean.getBootstrap().getManager(bootstrapBean.getDeployment().getFlatBeanDeploymentArchive());
+      AnnotatedType<T> type = weldManager.createAnnotatedType(implClass);
+      weldManager.getBeans(implClass);
+      return weldManager.createInjectionTarget(type).produce(weldManager.<T>createCreationalContext(null));
+   }
+
+}

Modified: branches/weld-ejb3-int/weld-int/ejb/pom.xml
===================================================================
--- branches/weld-ejb3-int/weld-int/ejb/pom.xml	2010-08-11 15:40:26 UTC (rev 107538)
+++ branches/weld-ejb3-int/weld-int/ejb/pom.xml	2010-08-11 17:52:22 UTC (rev 107539)
@@ -21,13 +21,8 @@
       <artifactId>weld-spi</artifactId>
       <scope>provided</scope>
     </dependency>
-
+      
     <dependency>
-      <groupId>org.jboss.ejb3.instantiator</groupId>
-      <artifactId>jboss-ejb3-instantiator-spi</artifactId>
-    </dependency>
-
-    <dependency>
       <groupId>org.jboss.ejb3</groupId>
       <artifactId>jboss-ejb3-common</artifactId>
       <scope>provided</scope>



More information about the jboss-cvs-commits mailing list