[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