[jboss-cvs] JBossAS SVN: r107473 - in projects/ejb3/trunk: core and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Aug 5 20:50:02 EDT 2010
Author: ALRubinger
Date: 2010-08-05 20:50:02 -0400 (Thu, 05 Aug 2010)
New Revision: 107473
Modified:
projects/ejb3/trunk/build/pom.xml
projects/ejb3/trunk/core/pom.xml
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockEjb3Deployment.java
Log:
[EJBTHREE-2046] Integrate bean instantiator abstraction into ejb3-core for bean instance creation
Modified: projects/ejb3/trunk/build/pom.xml
===================================================================
--- projects/ejb3/trunk/build/pom.xml 2010-08-05 23:46:08 UTC (rev 107472)
+++ projects/ejb3/trunk/build/pom.xml 2010-08-06 00:50:02 UTC (rev 107473)
@@ -120,7 +120,7 @@
<version.org.jboss.aop_jboss-aop>2.1.1.GA</version.org.jboss.aop_jboss-aop>
<version.org.jboss.aop_jboss-aop-aspects>2.0.0.SP1</version.org.jboss.aop_jboss-aop-aspects>
<version.org.jboss.common.core>2.2.14.GA</version.org.jboss.common.core>
- <version.org.jboss.deployers>2.0.0.CR5</version.org.jboss.deployers>
+ <version.org.jboss.deployers>2.2.0.Alpha4</version.org.jboss.deployers>
<version.org.jboss.jbossxb>2.0.1.GA</version.org.jboss.jbossxb>
<version.org.jboss.microcontainer>2.0.8.GA</version.org.jboss.microcontainer>
<version.org.jboss.reflect>2.0.2.GA</version.org.jboss.reflect>
Modified: projects/ejb3/trunk/core/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml 2010-08-05 23:46:08 UTC (rev 107472)
+++ projects/ejb3/trunk/core/pom.xml 2010-08-06 00:50:02 UTC (rev 107473)
@@ -7,7 +7,7 @@
<parent>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-build</artifactId>
- <version>1.0.13</version>
+ <version>1.0.14-SNAPSHOT</version>
<relativePath>../build/pom.xml</relativePath>
</parent>
@@ -48,6 +48,7 @@
<version.org.jboss.ejb3.tx2>0.0.1</version.org.jboss.ejb3.tx2>
<version.sun-jaxws>2.1.1</version.sun-jaxws>
<version.org.jboss.ejb3.async>1.0.0-alpha-5</version.org.jboss.ejb3.async>
+ <version.org.jboss.ejb3.instantiator>1.0.0-alpha-1</version.org.jboss.ejb3.instantiator>
</properties>
<!-- Build Information -->
@@ -517,6 +518,18 @@
<artifactId>jboss-ejb3-vfs-spi</artifactId>
<version>1.0.0-alpha-1</version>
</dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3.instantiator</groupId>
+ <artifactId>jboss-ejb3-instantiator-spi</artifactId>
+ <version>${version.org.jboss.ejb3.instantiator}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.ejb3.instantiator</groupId>
+ <artifactId>jboss-ejb3-instantiator-impl</artifactId>
+ <version>${version.org.jboss.ejb3.instantiator}</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.jboss.embedded</groupId>
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java 2010-08-05 23:46:08 UTC (rev 107472)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java 2010-08-06 00:50:02 UTC (rev 107473)
@@ -83,6 +83,9 @@
import org.jboss.ejb3.common.spi.ErrorCodes;
import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
import org.jboss.ejb3.injection.InjectionInvocation;
+import org.jboss.ejb3.instantiator.spi.BeanInstantiationException;
+import org.jboss.ejb3.instantiator.spi.BeanInstantiator;
+import org.jboss.ejb3.instantiator.spi.InvalidConstructionParamsException;
import org.jboss.ejb3.interceptor.InterceptorInfoRepository;
import org.jboss.ejb3.interceptor.InterceptorInjector;
import org.jboss.ejb3.interceptors.container.ManagedObjectAdvisor;
@@ -152,6 +155,11 @@
private static final Logger log = Logger.getLogger(EJBContainer.class);
private static TimeoutMethodCallbackRequirements timeoutMethodCallbackRequirements = Service.loadService(TimeoutMethodCallbackRequirements.class);
+
+ /**
+ * Empty parameter set used to create new EJB3 bean instances
+ */
+ private static final Object[] BEAN_INSTANCE_CONSTRUCTION_PARAMS = new Object[]{};
private final String name;
@@ -194,6 +202,11 @@
private HashMap<Class<?>, InterceptorInjector> interceptorInjectors = new HashMap<Class<?>, InterceptorInjector>();
private Ejb3Deployment deployment;
+
+ /**
+ * Used to construct bean instances
+ */
+ private final BeanInstantiator beanInstantiator;
private DependencyPolicy dependencyPolicy;
@@ -291,6 +304,14 @@
if(stack == null)
throw new IllegalStateException("EJBTHREE-2020: No InjectionCallbackStack defined for domain " + domain + " of " + this);
injectionCallbackStack = stack.createInterceptors(advisor, null);
+
+ // Set the bean instantiator
+ final BeanInstantiator beanInstantiator = deployment.getBeanInstantiator();
+ if (beanInstantiator == null)
+ {
+ throw new IllegalArgumentException(BeanInstantiator.class.getName() + " implementation must be supplied");
+ }
+ this.beanInstantiator = beanInstantiator;
}
/**
@@ -909,34 +930,25 @@
return partitionName;
}
+ /**
+ * Delegates bean instance construction to the
+ * {@link EJBContainer#beanInstantiator}
+ * @return
+ */
protected Object construct()
{
- /*
try
{
- return beanContainer.construct();
+ return beanInstantiator.create(beanClass, BEAN_INSTANCE_CONSTRUCTION_PARAMS);
}
- catch (SecurityException e)
+ catch (final InvalidConstructionParamsException e)
{
throw new RuntimeException(e);
}
- catch (NoSuchMethodException e)
+ catch (final BeanInstantiationException e)
{
throw new RuntimeException(e);
}
- */
- try
- {
- return beanClass.newInstance();
- }
- catch (InstantiationException e)
- {
- throw new RuntimeException(e);
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
}
protected void reinitialize()
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java 2010-08-05 23:46:08 UTC (rev 107472)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java 2010-08-06 00:50:02 UTC (rev 107473)
@@ -51,6 +51,8 @@
import org.jboss.ejb3.common.lang.ClassHelper;
import org.jboss.ejb3.common.resolvers.spi.EjbReference;
import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
+import org.jboss.ejb3.instantiator.spi.AttachmentNames;
+import org.jboss.ejb3.instantiator.spi.BeanInstantiator;
import org.jboss.ejb3.javaee.JavaEEApplication;
import org.jboss.ejb3.javaee.JavaEEComponent;
import org.jboss.ejb3.javaee.JavaEEComponentHelper;
@@ -137,6 +139,11 @@
private PersistenceUnitDependencyResolver persistenceUnitDependencyResolver;
private final ExecutorService asynchronousProcessor;
+
+ /**
+ * Used to construct bean instances
+ */
+ private final BeanInstantiator beanInstantiator;
/**
* Do not deploy persistence unit anymore.
@@ -175,6 +182,15 @@
throw new IllegalStateException(unit + " must contain an attachment of name " + asyncInvocationProcessorName);
}
this.asynchronousProcessor = es;
+
+ // Get the Bean Instantiator
+ final String beanInstantiatorAttachmentName = AttachmentNames.NAME_BEAN_INSTANCE_INSTANTIATOR;
+ final BeanInstantiator beanInstantiator = (BeanInstantiator) unit.getAttachment(beanInstantiatorAttachmentName);
+ if (beanInstantiator == null)
+ {
+ throw new IllegalStateException(unit + " must contain an attachment of name " + beanInstantiatorAttachmentName);
+ }
+ this.beanInstantiator = beanInstantiator;
}
@Deprecated
@@ -242,6 +258,11 @@
{
return asynchronousProcessor;
}
+
+ public BeanInstantiator getBeanInstantiator()
+ {
+ return beanInstantiator;
+ }
@Inject
public void setMessageDestinationReferenceResolver(MessageDestinationReferenceResolver resolver)
Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockEjb3Deployment.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockEjb3Deployment.java 2010-08-05 23:46:08 UTC (rev 107472)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockEjb3Deployment.java 2010-08-06 00:50:02 UTC (rev 107473)
@@ -41,6 +41,7 @@
import org.jboss.ejb3.common.resolvers.plugins.FirstMatchEjbReferenceResolver;
import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
+import org.jboss.ejb3.instantiator.impl.Ejb31SpecBeanInstantiator;
import org.jboss.ejb3.javaee.JavaEEComponent;
import org.jboss.ejb3.pool.PoolFactory;
import org.jboss.ejb3.pool.PoolFactoryRegistry;
@@ -58,12 +59,16 @@
public static MockEjb3Deployment create(DeploymentUnit unit)
{
unit.addAttachment(AttachmentNames.ASYNC_INVOCATION_PROCESSOR, Executors.newCachedThreadPool());
+ unit.addAttachment(org.jboss.ejb3.instantiator.spi.AttachmentNames.NAME_BEAN_INSTANCE_INSTANTIATOR,
+ new Ejb31SpecBeanInstantiator());
return new MockEjb3Deployment(unit);
}
public static MockEjb3Deployment create(DeploymentUnit unit, org.jboss.deployers.structure.spi.DeploymentUnit du)
{
unit.addAttachment(AttachmentNames.ASYNC_INVOCATION_PROCESSOR, Executors.newCachedThreadPool());
+ unit.addAttachment(org.jboss.ejb3.instantiator.spi.AttachmentNames.NAME_BEAN_INSTANCE_INSTANTIATOR,
+ new Ejb31SpecBeanInstantiator());
return new MockEjb3Deployment(unit, du);
}
More information about the jboss-cvs-commits
mailing list