[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