[jboss-cvs] JBossAS SVN: r106470 - in projects/ejb3/trunk: core/src/main/java/org/jboss/ejb3 and 14 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 6 16:19:25 EDT 2010


Author: ALRubinger
Date: 2010-07-06 16:19:24 -0400 (Tue, 06 Jul 2010)
New Revision: 106470

Modified:
   projects/ejb3/trunk/core/pom.xml
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3AnnotationHandler.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/AbstractEJB3TestCase.java
   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/ejbthree1150/unit/WebServiceContextInjectionTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1506/unit/DescriptorAnnotationTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1558/unit/JBossMessageEndpointFactoryTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2022/unit/Ejb3DescriptorHandlerTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2068/unit/Ejb3DescriptorHandlerTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockDeploymentUnit.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockStatefulContainer.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/unit/CachePassivationUnitTestCase.java
   projects/ejb3/trunk/ejb3_1/pom.xml
Log:
[EJBTHREE-1721] Integrate org.jboss.ejb3.async with ejb3-core

Modified: projects/ejb3/trunk/core/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/pom.xml	2010-07-06 20:19:24 UTC (rev 106470)
@@ -47,6 +47,7 @@
     <version.org.jboss.ejb3_timerservice-naming>1.0.0-alpha-2</version.org.jboss.ejb3_timerservice-naming>
     <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-SNAPSHOT</version.org.jboss.ejb3.async>
   </properties>
 
   <!-- Build Information -->
@@ -466,6 +467,12 @@
       <artifactId>jboss-ejb3-transactions</artifactId>
       <version>1.0.2</version>
     </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3.async</groupId>
+      <artifactId>jboss-ejb3-async-spi</artifactId>
+      <version>${version.org.jboss.ejb3.async}</version>
+    </dependency>
 
     <dependency>
       <groupId>org.jboss.ejb3.context</groupId>

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3AnnotationHandler.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3AnnotationHandler.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3AnnotationHandler.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -294,9 +294,9 @@
          throw new RuntimeException("No container configured with name '"
                  + containerName + "''");
 
-      return new StatefulContainer(di.getClassLoader(), className,
-              ejbNames.get(ejbIndex), (Domain) domain.getManager(), ctxProperties,
-              deployment, beanMetaData);
+      return new StatefulContainer(di.getClassLoader(), className, ejbNames.get(ejbIndex),
+            (Domain) domain.getManager(), ctxProperties, deployment, beanMetaData, deployment
+                  .getAsynchronousProcessor());
 
    }
 
@@ -310,9 +310,8 @@
          throw new RuntimeException("No container configured with name '"
                  + containerName + "''");
 
-      return new StatelessContainer(di.getClassLoader(), className,
-              ejbNames.get(ejbIndex), (Domain) domain.getManager(),
-              ctxProperties, deployment, beanMetaData);
+      return new StatelessContainer(di.getClassLoader(), className, ejbNames.get(ejbIndex), (Domain) domain
+            .getManager(), ctxProperties, deployment, beanMetaData, deployment.getAsynchronousProcessor());
    }
 
    protected String getMDBDomainName(int ejbIndex)

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-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -32,6 +32,7 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
 
 import javassist.bytecode.ClassFile;
 
@@ -45,8 +46,10 @@
 
 import org.jboss.beans.metadata.api.annotations.Inject;
 import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.ejb3.async.spi.container.AsyncInvocationProcessor;
 import org.jboss.ejb3.cache.CacheFactoryRegistry;
 import org.jboss.ejb3.cache.persistence.PersistenceManagerFactoryRegistry;
+import org.jboss.ejb3.common.deployers.spi.AttachmentNames;
 import org.jboss.ejb3.common.lang.ClassHelper;
 import org.jboss.ejb3.common.resolvers.spi.EjbReference;
 import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
@@ -134,6 +137,8 @@
    private EjbReferenceResolver ejbReferenceResolver;
 
    private PersistenceUnitDependencyResolver persistenceUnitDependencyResolver;
+   
+   private final ExecutorService asynchronousProcessor;
 
    /**
     * Do not deploy persistence unit anymore.
@@ -163,6 +168,15 @@
       if (metaData != null && metaData.getAssemblyDescriptor() != null)
          destinations = metaData.getAssemblyDescriptor().getMessageDestinations();
       this.deploymentUnit = deploymentUnit;
+      
+      // Get the Async Invocation Processor from the Deployment
+      final String asyncInvocationProcessorName = org.jboss.ejb3.async.spi.container.AttachmentNames.ASYNC_INVOCATION_PROCESSOR;
+      final ExecutorService es = (ExecutorService) unit.getAttachment(asyncInvocationProcessorName);
+      if (es == null)
+      {
+         throw new IllegalStateException(unit + " must contain an attachment of name " + asyncInvocationProcessorName);
+      }
+      this.asynchronousProcessor = es;
    }
 
    @Deprecated
@@ -226,6 +240,11 @@
       this.ejbReferenceResolver = resolver;
    }
    
+   public ExecutorService getAsynchronousProcessor()
+   {
+      return asynchronousProcessor;
+   }
+
    @Inject
    public void setMessageDestinationReferenceResolver(MessageDestinationReferenceResolver resolver)
    {

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -1,3 +1,24 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
 package org.jboss.ejb3.session;
 
 import java.io.Serializable;
@@ -8,19 +29,18 @@
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
 
-import javax.ejb.EJB;
 import javax.ejb.EJBLocalObject;
 import javax.ejb.EJBObject;
 import javax.ejb.Handle;
 import javax.ejb.RemoveException;
-import javax.ejb.SessionContext;
 
 import org.jboss.aop.Domain;
 import org.jboss.aop.MethodInfo;
 import org.jboss.aop.util.MethodHashing;
 import org.jboss.ejb3.Ejb3Deployment;
-import org.jboss.ejb3.ThreadLocalStack;
+import org.jboss.ejb3.async.spi.container.AsyncInvocationProcessor;
 import org.jboss.ejb3.common.lang.SerializableMethod;
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.core.proxy.spi.CurrentRemoteProxyFactory;
@@ -35,8 +55,6 @@
 import org.jboss.ejb3.stateful.StatefulContainerInvocation;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
-import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
 
 /**
  * SessionSpecContainer
@@ -47,7 +65,7 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
-public abstract class SessionSpecContainer extends SessionContainer implements InvokableContext
+public abstract class SessionSpecContainer extends SessionContainer implements InvokableContext, AsyncInvocationProcessor
 {
 
    // ------------------------------------------------------------------------------||
@@ -60,22 +78,38 @@
     * Business interfaces for this EJB
     */
    private Set<Class<?>> businessInterfaces;
+   
+   /**
+    * {@link ExecutorService} used for EJB 3.1 Async invocations
+    */
+   private final ExecutorService asynchronousExecutor;
 
    // ------------------------------------------------------------------------------||
    // Constructor ------------------------------------------------------------------||
    // ------------------------------------------------------------------------------||
 
    public SessionSpecContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
-         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData)
-         throws ClassNotFoundException
+         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData,
+         final ExecutorService asynchronousExecutor) throws ClassNotFoundException
    {
       super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      if (asynchronousExecutor == null)
+      {
+         throw new IllegalArgumentException("Asynchronous Executor must be specified");
+      }
+      this.asynchronousExecutor = asynchronousExecutor;
    }
    
    public SessionSpecContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
-         Hashtable ctxProperties, JBossSessionBeanMetaData beanMetaData) throws ClassNotFoundException
+         Hashtable ctxProperties, JBossSessionBeanMetaData beanMetaData, final ExecutorService asynchronousExecutor)
+         throws ClassNotFoundException
    {
       super(cl, beanClassName, ejbName, domain, ctxProperties, beanMetaData);
+      if (asynchronousExecutor == null)
+      {
+         throw new IllegalArgumentException("Asynchronous Executor must be specified");
+      }
+      this.asynchronousExecutor = asynchronousExecutor;
    }
    
    /**
@@ -557,4 +591,14 @@
 
       super.lockedStop();
    }
+	
+   /**
+    * {@inheritDoc}
+    * @see org.jboss.ejb3.async.spi.container.AsyncInvocationProcessor#getAsynchronousExecutor()
+    */
+   @Override
+   public ExecutorService getAsynchronousExecutor()
+   {
+      return this.asynchronousExecutor;
+   }
 }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -30,6 +30,7 @@
 import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
 
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalObject;
@@ -115,10 +116,10 @@
    private SessionFactory sessionFactory;
 
    public StatefulContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
-         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData)
-         throws ClassNotFoundException
+         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData,
+         final ExecutorService asynchronousExecutor) throws ClassNotFoundException
    {
-      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData, asynchronousExecutor);
       
       // For the time being, this container is its own SessionFactory
       //TODO Externalize the SessionFactory into its own component

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -28,6 +28,7 @@
 import java.util.Hashtable;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
 
 import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
@@ -109,9 +110,10 @@
    private StatelessDelegateWrapper mbean = new StatelessDelegateWrapper(this);
 
    public StatelessContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
-                             Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData) throws ClassNotFoundException
+         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData,
+         final ExecutorService asynchronousExecutor) throws ClassNotFoundException
    {
-      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData, asynchronousExecutor);
       
       initializeTimeout();
    }

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/AbstractEJB3TestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/AbstractEJB3TestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/AbstractEJB3TestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -28,6 +28,8 @@
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -226,7 +228,7 @@
          }
       });
       DeploymentUnit unit = new MockDeploymentUnit(deploymentUnit);
-      Ejb3Deployment deployment = new MockEjb3Deployment(unit, deploymentUnit);
+      Ejb3Deployment deployment = MockEjb3Deployment.create(unit, deploymentUnit);
 
       deployment.setEJBReferenceResolver(new ScopedEJBReferenceResolver());
       
@@ -400,7 +402,20 @@
    {
       // Initialize
       SessionContainer container = null;
+      final ExecutorService es = Executors.newCachedThreadPool();
+      Runtime.getRuntime().addShutdownHook(new Thread()
+      {
 
+         @Override
+         public void run()
+         {
+            super.run();
+            es.shutdownNow();
+         }
+
+      });
+      
+      
       /*
        * Instanciate the Container, depending upon the type specified
        */
@@ -421,7 +436,8 @@
          case SFSB :
             try
             {
-               container = new StatefulContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment, md);
+               container = new StatefulContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment, md,
+                     es);
             }
             catch (ClassNotFoundException cnfe)
             {
@@ -431,7 +447,8 @@
          case SLSB :
             try
             {
-               container = new StatelessContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment, md);
+               container = new StatelessContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment,
+                     md, es);
             }
             catch (ClassNotFoundException cnfe)
             {

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-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockEjb3Deployment.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -22,6 +22,7 @@
 package org.jboss.ejb3.core.test.common;
 
 import java.util.HashMap;
+import java.util.concurrent.Executors;
 
 import javax.security.jacc.PolicyConfiguration;
 
@@ -31,6 +32,7 @@
 import org.jboss.ejb3.DeploymentScope;
 import org.jboss.ejb3.DeploymentUnit;
 import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.async.spi.container.AttachmentNames;
 import org.jboss.ejb3.cache.CacheFactoryRegistry;
 import org.jboss.ejb3.cache.Ejb3CacheFactory;
 import org.jboss.ejb3.cache.NoPassivationCacheFactory;
@@ -53,19 +55,31 @@
  */
 public class MockEjb3Deployment extends Ejb3Deployment
 {
-   public MockEjb3Deployment(DeploymentUnit unit)
+   public static MockEjb3Deployment create(DeploymentUnit unit)
    {
+      unit.addAttachment(AttachmentNames.ASYNC_INVOCATION_PROCESSOR, Executors.newCachedThreadPool());
+      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());
+      return new MockEjb3Deployment(unit, du);
+   }
+   
+   private MockEjb3Deployment(DeploymentUnit unit)
+   {
       // TODO This should be replaced w/ a MockDeploymentUnit when completed, 
       // to support nested deployments, @see ejb3-test MockDeploymentUnit
       this(unit, new AbstractDeploymentUnit(new AbstractDeploymentContext("test", "")));
    }
 
-   public MockEjb3Deployment(DeploymentUnit unit, org.jboss.deployers.structure.spi.DeploymentUnit du)
+   private MockEjb3Deployment(DeploymentUnit unit, org.jboss.deployers.structure.spi.DeploymentUnit du)
    {
       this(unit, du, null);
    }
 
-   public MockEjb3Deployment(DeploymentUnit unit, org.jboss.deployers.structure.spi.DeploymentUnit du,
+   private MockEjb3Deployment(DeploymentUnit unit, org.jboss.deployers.structure.spi.DeploymentUnit du,
          DeploymentScope scope)
    {
       super(du, unit, scope, null);
@@ -93,6 +107,7 @@
       cacheFactories.put("StatefulTreeCache", StatefulTreeCacheFactory.class);
       cacheRegistry.setFactories(cacheFactories);
       setCacheFactoryRegistry(cacheRegistry);
+
    }
 
    @Override

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1150/unit/WebServiceContextInjectionTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1150/unit/WebServiceContextInjectionTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1150/unit/WebServiceContextInjectionTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -24,6 +24,8 @@
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import javax.naming.InitialContext;
 import javax.xml.ws.WebServiceContext;
@@ -44,6 +46,8 @@
 import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
 import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -52,6 +56,13 @@
  */
 public class WebServiceContextInjectionTestCase extends AbstractEJB3TestCase
 {
+   private static final ExecutorService es = Executors.newCachedThreadPool();
+   
+   @AfterClass
+   public static void shutdownEs(){
+      es.shutdownNow();
+   }
+   
    @Test
    public void testCheckWebServiceContext() throws Exception
    {
@@ -61,9 +72,10 @@
       String ejbName = beanClass.getSimpleName();
       Domain domain = getDomain("Stateless Bean");
       Hashtable<?,?> ctxProperties = null;
-      Ejb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      Ejb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       JBossSessionBeanMetaData beanMetaData = MetaDataHelper.getMetadataFromBeanImplClass(beanClass);
-      StatelessContainer container = new StatelessContainer(cl, beanClassname, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      StatelessContainer container = new StatelessContainer(cl, beanClassname, ejbName, domain, ctxProperties,
+            deployment, beanMetaData, es);
       
       // TODO: wickedness
       container.instantiated();
@@ -93,7 +105,7 @@
       String ejbName = beanClass.getSimpleName();
       Domain domain = getDomain("Stateless Bean");
       Hashtable<?,?> ctxProperties = null;
-      Ejb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      Ejb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       JBossSessionBeanMetaData beanMetaData = MetaDataHelper.getMetadataFromBeanImplClass(beanClass);
       
       // add an override
@@ -117,7 +129,8 @@
       beanMetaData.getResourceEnvironmentReferences().add(resEnvRef);
       //
       
-      StatelessContainer container = new StatelessContainer(cl, beanClassname, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      StatelessContainer container = new StatelessContainer(cl, beanClassname, ejbName, domain, ctxProperties,
+            deployment, beanMetaData, es);
       
       // TODO: wickedness
       container.instantiated();

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1506/unit/DescriptorAnnotationTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1506/unit/DescriptorAnnotationTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1506/unit/DescriptorAnnotationTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -65,7 +65,7 @@
       sessionBeanMetaData.setSessionType(SessionType.Stateful);
       enterpriseBeans.add(sessionBeanMetaData);
       
-      MockEjb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      MockEjb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       Ejb3DescriptorHandler handler = new Ejb3DescriptorHandler(deployment, metaData);
       List<Container> containers = handler.getContainers(deployment, new HashMap<String, Container>());
       

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1558/unit/JBossMessageEndpointFactoryTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1558/unit/JBossMessageEndpointFactoryTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1558/unit/JBossMessageEndpointFactoryTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -89,7 +89,7 @@
          }
       });
       DeploymentUnit unit = new MockDeploymentUnit(deploymentUnit);
-      Ejb3Deployment deployment = new MockEjb3Deployment(unit, deploymentUnit);
+      Ejb3Deployment deployment = MockEjb3Deployment.create(unit, deploymentUnit);
 
       deployment.setEJBReferenceResolver(new ScopedEJBReferenceResolver());
       

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1914/unit/OverrideAnnotationTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -75,7 +75,7 @@
       sessionBeanMetaData.setSessionType(SessionType.Stateful);
       enterpriseBeans.add(sessionBeanMetaData);
       
-      MockEjb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      MockEjb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       Ejb3DescriptorHandler handler = new Ejb3DescriptorHandler(deployment, metaData);
       List<Container> containers = handler.getContainers(deployment, new HashMap<String, Container>());
       
@@ -104,7 +104,7 @@
       sessionBeanMetaData.setConcurrent(false);
       enterpriseBeans.add(sessionBeanMetaData);
       
-      MockEjb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      MockEjb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       Ejb3DescriptorHandler handler = new Ejb3DescriptorHandler(deployment, metaData);
       List<Container> containers = handler.getContainers(deployment, new HashMap<String, Container>());
       

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2022/unit/Ejb3DescriptorHandlerTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2022/unit/Ejb3DescriptorHandlerTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2022/unit/Ejb3DescriptorHandlerTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -76,7 +76,7 @@
       sessionBeanMetaData.setEjbName(UnSpecifiedSessionTypeBean.class.getSimpleName());
       enterpriseBeans.add(sessionBeanMetaData);
 
-      MockEjb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      MockEjb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       Ejb3DescriptorHandler handler = new Ejb3DescriptorHandler(deployment, metaData);
       // get containers
       List<Container> containers = handler.getContainers(deployment, new HashMap<String, Container>());

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2068/unit/Ejb3DescriptorHandlerTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2068/unit/Ejb3DescriptorHandlerTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree2068/unit/Ejb3DescriptorHandlerTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -75,7 +75,7 @@
       
       enterpriseBeans.add(sessionBeanMetaData);
 
-      MockEjb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      MockEjb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       ClassPool pool = ClassPool.getDefault();
       CtClass ctClass = pool.get(DummyEJB.class.getName());
       ClassFile classFile = ctClass.getClassFile();

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/regression/ejbthree1253/unit/OverriddenProxyFactoryTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -24,6 +24,8 @@
 import static org.junit.Assert.assertEquals;
 
 import java.util.Hashtable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import javax.naming.InitialContext;
 
@@ -50,6 +52,14 @@
  */
 public class OverriddenProxyFactoryTestCase extends AbstractEJB3TestCase
 {
+   
+   private static final ExecutorService es = Executors.newCachedThreadPool();
+   
+   @AfterClass
+   public static void shutdownEs(){
+      es.shutdownNow();
+   }
+   
    @Test
    public void test1() throws Throwable
    {
@@ -59,10 +69,11 @@
       String ejbName = MyStatefulBean.class.getSimpleName();
       Domain domain = getDomain("Stateful Bean");
       Hashtable<?,?> ctxProperties = null;
-      Ejb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      Ejb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       deployment.setPersistenceManagerFactoryRegistry(getBootstrap().lookup("EJB3PersistenceManagerFactoryRegistry", PersistenceManagerFactoryRegistry.class));
       JBossSessionBeanMetaData beanMetaData = MetaDataHelper.getMetadataFromBeanImplClass(MyStatefulBean.class);
-      StatefulContainer container = new StatefulContainer(cl, beanClassname, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      StatefulContainer container = new StatefulContainer(cl, beanClassname, ejbName, domain, ctxProperties,
+            deployment, beanMetaData, es);
       
       // TODO: wickedness
       container.instantiated();

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockDeploymentUnit.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockDeploymentUnit.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockDeploymentUnit.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -28,6 +28,10 @@
 import java.util.List;
 import java.util.Map;
 
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.ClassLoaderFactory;
+import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentContext;
+import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentUnit;
 import org.jboss.ejb3.DeploymentUnit;
 import org.jboss.ejb3.interceptor.InterceptorInfoRepository;
 import org.jboss.ejb3.vfs.spi.VirtualFile;
@@ -46,9 +50,20 @@
    /**
     * @deprecated supply a deploymentUnit
     */
-   public MockDeploymentUnit()
+   public static MockDeploymentUnit create() throws DeploymentException
    {
-      // TODO Auto-generated constructor stub
+      AbstractDeploymentUnit deploymentUnit = new AbstractDeploymentUnit(new AbstractDeploymentContext("test", ""));
+      deploymentUnit.createClassLoader(new ClassLoaderFactory() {
+         public ClassLoader createClassLoader(org.jboss.deployers.structure.spi.DeploymentUnit unit) throws Exception
+         {
+            return Thread.currentThread().getContextClassLoader();
+         }
+
+         public void removeClassLoader(org.jboss.deployers.structure.spi.DeploymentUnit unit) throws Exception
+         {
+         }
+      });
+      return new MockDeploymentUnit(deploymentUnit);
    }
    
    public MockDeploymentUnit(org.jboss.deployers.structure.spi.DeploymentUnit deploymentUnit)

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockStatefulContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockStatefulContainer.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockStatefulContainer.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -23,6 +23,7 @@
 
 import java.io.Serializable;
 import java.util.Hashtable;
+import java.util.concurrent.ExecutorService;
 
 import org.jboss.aop.Domain;
 import org.jboss.ejb3.Ejb3Deployment;
@@ -41,9 +42,9 @@
 
    @SuppressWarnings("unchecked")
    public MockStatefulContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
-         Hashtable ctxProperties, Ejb3Deployment deployment) throws ClassNotFoundException
+         Hashtable ctxProperties, Ejb3Deployment deployment, final ExecutorService es) throws ClassNotFoundException
    {
-      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, createMockBeanMetaData(beanClassName));
+      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, createMockBeanMetaData(beanClassName),es);
    }
 
    @Override

Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/unit/CachePassivationUnitTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/unit/CachePassivationUnitTestCase.java	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/unit/CachePassivationUnitTestCase.java	2010-07-06 20:19:24 UTC (rev 106470)
@@ -49,6 +49,7 @@
 import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
 import org.jboss.naming.JavaCompInitializer;
 import org.jnp.server.SingletonNamingServer;
+import org.junit.AfterClass;
 
 import javax.naming.InitialContext;
 import java.util.ArrayList;
@@ -56,6 +57,8 @@
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * Comment
@@ -65,6 +68,13 @@
  */
 public class CachePassivationUnitTestCase extends TestCase
 {
+   private static final ExecutorService es = Executors.newCachedThreadPool();
+   
+   @AfterClass
+   public static void shutdownEs(){
+      es.shutdownNow();
+   }
+   
    public void test1() throws Exception
    {
       new SingletonNamingServer();
@@ -107,10 +117,10 @@
       factories.put("MyStatefulSessionFilePersistenceManager", MyStatefulSessionFilePersistenceManagerFactory.class);
       PersistenceManagerFactoryRegistry persistenceManagerFactoryRegistry = new PersistenceManagerFactoryRegistry();
       persistenceManagerFactoryRegistry.setFactories(factories);
-      Ejb3Deployment deployment = new MockEjb3Deployment(new MockDeploymentUnit());
+      Ejb3Deployment deployment = MockEjb3Deployment.create(MockDeploymentUnit.create());
       deployment.setPersistenceManagerFactoryRegistry(persistenceManagerFactoryRegistry);
       MockStatefulContainer container = new MockStatefulContainer(cl, beanClassName, ejbName, domain, ctxProperties,
-            deployment);
+            deployment, es);
       container.instantiated();
       container.processMetadata();
       System.out.println("injectors = " + container.getInjectors());

Modified: projects/ejb3/trunk/ejb3_1/pom.xml
===================================================================
--- projects/ejb3/trunk/ejb3_1/pom.xml	2010-07-06 20:05:27 UTC (rev 106469)
+++ projects/ejb3/trunk/ejb3_1/pom.xml	2010-07-06 20:19:24 UTC (rev 106470)
@@ -34,9 +34,10 @@
      -->
     <version.latest.version.range>[0,)</version.latest.version.range>
     
+    <version.org.jboss.ejb3.async>1.0.0-SNAPSHOT</version.org.jboss.ejb3.async>
     <version.org.jboss.ejb3_cache>1.0.0</version.org.jboss.ejb3_cache>
     <version.org.jboss.ejb3_common>1.0.2</version.org.jboss.ejb3_common>
-    <version.org.jboss.ejb3_core>1.5.0-alpha-1</version.org.jboss.ejb3_core>
+    <version.org.jboss.ejb3_core>1.5.0-SNAPSHOT</version.org.jboss.ejb3_core>
     <version.org.jboss.ejb3_deployers>1.1.5</version.org.jboss.ejb3_deployers>
     <version.org.jboss.ejb3_endpoint>0.1.0</version.org.jboss.ejb3_endpoint>
     <version.org.jboss.ejb3_ext-api>1.1.1</version.org.jboss.ejb3_ext-api>
@@ -71,6 +72,18 @@
         in transitively. But how do we *mandate* that? 
     -->
     
+    <!-- jboss-ejb3-async -->
+    <dependency>
+      <groupId>org.jboss.ejb3.async</groupId>
+      <artifactId>jboss-ejb3-async-impl</artifactId>
+      <version>${version.org.jboss.ejb3.async}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.ejb3.async</groupId>
+      <artifactId>jboss-ejb3-async-deployer</artifactId>
+      <version>${version.org.jboss.ejb3.async}</version>
+    </dependency>
+
     <!-- jboss-ejb3-cache -->
     <dependency>
       <groupId>org.jboss.ejb3</groupId>



More information about the jboss-cvs-commits mailing list