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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 19 06:58:57 EST 2010


Author: jaikiran
Date: 2010-11-19 06:58:57 -0500 (Fri, 19 Nov 2010)
New Revision: 109389

Added:
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockServiceContainer.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatefulContainer.java
   projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatelessContainer.java
Modified:
   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/main/java/org/jboss/ejb3/injection/InjectionHelper.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionInvocation.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/pool/AbstractPool.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.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/ejbthree1150/unit/WebServiceContextInjectionTestCase.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
Log:
EJBTHREE-2200 First round of integration changes for SwitchBoard and InjectionManager integration

Modified: projects/ejb3/trunk/core/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml	2010-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/pom.xml	2010-11-19 11:58:57 UTC (rev 109389)
@@ -51,6 +51,9 @@
     <version.org.jboss.ejb3.instantiator>1.0.0-alpha-3</version.org.jboss.ejb3.instantiator>
     <version.org.jboss.ejb3.effigy>0.1.0</version.org.jboss.ejb3.effigy>
     <version.org.jboss.ejb3.ejbref.resolver>1.0.0-alpha-1</version.org.jboss.ejb3.ejbref.resolver>
+    <version.switchboard>1.0.0-alpha-9</version.switchboard>
+    <version.org.jboss.injection>1.0.0-alpha-3</version.org.jboss.injection>
+    
   </properties>
 
   <!-- Build Information -->
@@ -558,6 +561,7 @@
         </exclusion>
       </exclusions>
     </dependency>
+    
 
     <dependency>
       <groupId>org.jboss.javaee</groupId>
@@ -735,6 +739,26 @@
     </dependency>
 
     <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-manager</artifactId>
+        <version>${version.org.jboss.injection}</version>
+    </dependency>
+ 
+     <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-injector</artifactId>
+        <version>${version.org.jboss.injection}</version>
+    </dependency>
+
+    <!-- For LazyEEInjector -->
+    <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-mc-impl</artifactId>
+        <version>${version.org.jboss.injection}</version>
+    </dependency>
+
+
+    <dependency>
       <groupId>org.jboss.microcontainer</groupId>
       <artifactId>jboss-kernel</artifactId>
     </dependency>
@@ -746,6 +770,12 @@
     </dependency>
 
     <dependency>
+        <groupId>org.jboss.switchboard</groupId>
+        <artifactId>jboss-switchboard-spi</artifactId>
+        <version>${version.switchboard}</version>
+    </dependency>
+
+    <dependency>
       <groupId>org.jboss.security</groupId>
       <artifactId>jbosssx</artifactId>
       <version>${version.org.jboss.security}</version>

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -21,6 +21,52 @@
  */
 package org.jboss.ejb3;
 
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Proxy;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.ApplicationException;
+import javax.ejb.EJBException;
+import javax.ejb.EJBHome;
+import javax.ejb.EJBLocalHome;
+import javax.ejb.Local;
+import javax.ejb.Remote;
+import javax.ejb.Timeout;
+import javax.ejb.Timer;
+import javax.ejb.TimerService;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.LinkRef;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+
 import org.jboss.aop.Advisor;
 import org.jboss.aop.Domain;
 import org.jboss.aop.MethodInfo;
@@ -38,7 +84,6 @@
 import org.jboss.ejb3.annotation.impl.ApplicationExceptionImpl;
 import org.jboss.ejb3.aop.BeanContainer;
 import org.jboss.ejb3.cluster.metadata.ClusteredMetaDataBridge;
-import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.common.spi.ErrorCodes;
 import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
 import org.jboss.ejb3.effigy.ApplicationExceptionEffigy;
@@ -49,7 +94,6 @@
 import org.jboss.ejb3.instantiator.impl.Ejb31SpecBeanInstantiator;
 import org.jboss.ejb3.instantiator.spi.BeanInstantiationException;
 import org.jboss.ejb3.instantiator.spi.BeanInstantiator;
-import org.jboss.ejb3.instantiator.spi.BeanInstantiatorRegistration;
 import org.jboss.ejb3.instantiator.spi.InvalidConstructionParamsException;
 import org.jboss.ejb3.interceptor.InterceptorInfoRepository;
 import org.jboss.ejb3.interceptor.InterceptorInjector;
@@ -91,6 +135,7 @@
 import org.jboss.injection.PersistenceUnitHandler;
 import org.jboss.injection.ResourceHandler;
 import org.jboss.injection.WebServiceRefHandler;
+import org.jboss.injection.manager.spi.InjectionManager;
 import org.jboss.jca.spi.ComponentStack;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
@@ -106,51 +151,6 @@
 import org.jboss.util.StringPropertyReplacer;
 import org.jboss.util.naming.Util;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.ejb.ApplicationException;
-import javax.ejb.EJBException;
-import javax.ejb.EJBHome;
-import javax.ejb.EJBLocalHome;
-import javax.ejb.Local;
-import javax.ejb.Remote;
-import javax.ejb.Timeout;
-import javax.ejb.Timer;
-import javax.ejb.TimerService;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.LinkRef;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingException;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Proxy;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.ServiceLoader;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-
 /**
  * Comment
  *
@@ -237,6 +237,11 @@
     */
    protected AnnotationRepositoryToMetaData metadataBasedAnnotationRepo;
    
+   /**
+    * Manages injection into beans and interceptors
+    */
+   private InjectionManager injectionManager;
+   
    private static final int TOTAL_PERMITS = Integer.MAX_VALUE;
    
    // To support clean startup/shutdown
@@ -343,6 +348,12 @@
       this(name, domain, cl, beanClassName, ejbName, ctxProperties, null, beanMetaData);
    }
 
+   /**
+    * @deprecated {@link EJBContainer} is no longer responsible for setting up 
+    * ENC. Instead, SwitchBoard http://community.jboss.org/wiki/Switchboard 
+    * will be setting it up.
+    */
+   @Deprecated
    private void bindEJBContext()
    {
       try
@@ -361,6 +372,12 @@
       }
    }
    
+   /**
+    * @deprecated {@link EJBContainer} is no longer responsible for setting up 
+    * ENC. Instead, SwitchBoard http://community.jboss.org/wiki/Switchboard 
+    * will be setting it up.
+    */
+   @Deprecated
    private void bindORB()
    {
       try
@@ -377,7 +394,12 @@
     * Creates a {@link LinkRef} for java:comp/TimerService to
     * an internal jndi name for {@link TimerService}
     * @throws NamingException
+
+    * @deprecated {@link EJBContainer} is no longer responsible for setting up 
+    * ENC. Instead, SwitchBoard http://community.jboss.org/wiki/Switchboard 
+    * will be setting it up.
     */
+   @Deprecated
    private void bindTimerService() throws NamingException
    {
       // link to java:internal/TimerService (which is setup by
@@ -408,9 +430,22 @@
    public Object createInterceptor(Class<?> interceptorClass) throws InstantiationException, IllegalAccessException
    {
       Object instance = interceptorClass.newInstance();
+      // TODO: This needs to be removed once we have all the RPs functioning 
+      // and the InjectionManager will solely be responsible for injection
       InterceptorInjector interceptorInjector = interceptorInjectors.get(interceptorClass);
       assert interceptorInjector != null : "interceptorInjector not found for " + interceptorClass;
       interceptorInjector.inject(null, instance);
+      
+      // inject into the interceptor instance using InjectionManager.
+      // the injection manager in a real environment should never
+      // be null. But there are various legacy unit tests which
+      // start up a container in various different ways and it's 
+      // a real big task to set a mock injection manager in all those places
+      if (this.injectionManager != null)
+      {
+         this.injectionManager.inject(instance);
+      }
+
       return instance;
    }
    
@@ -477,6 +512,16 @@
       return beanContainer;
    }
    
+   public Collection<Class<?>> getInterceptorClasses()
+   {
+      return this.beanContainer.getInterceptorClasses();
+   }
+   
+   public Map<Class<?>, InterceptorInjector> getInterceptorInjectors()
+   {
+      return this.interceptorInjectors;
+   }
+   
    /**
     * 
     * @return   the bean class of this container
@@ -716,8 +761,8 @@
          handlers.add(new JndiInjectHandler<Environment>());
          handlers.add(new PersistenceContextHandler<Environment>());
          handlers.add(new PersistenceUnitHandler<Environment>());
-         handlers.add(new ResourceHandler<Environment>());
-         handlers.add(new WebServiceRefHandler<Environment>());
+         //handlers.add(new ResourceHandler<Environment>());
+         //handlers.add(new WebServiceRefHandler<Environment>());
       }
 
       ClassLoader old = Thread.currentThread().getContextClassLoader();
@@ -1004,6 +1049,7 @@
       {
          throw new RuntimeException(e);
       }
+      
    }
    
    protected void reinitialize()
@@ -1035,29 +1081,6 @@
          encFactory = new DefaultEjbEncFactory();
       }
 
-      try
-      {
-         Util.createSubcontext(getEnc(), "env");
-      }
-      catch (Exception e)
-      {
-         throw new RuntimeException(e);
-      }
-      bindORB();
-      bindEJBContext();
-      // bind the timerservice to java:comp/TimerService
-      bindTimerService();
-      /*
-      initializeClassContainer();
-      for (int i = 0; i < constructors.length; i++)
-      {
-         if (constructors[i].getParameterTypes().length == 0)
-         {
-            defaultConstructorIndex = i;
-            break;
-         }
-      }
-      */
       
       if(log.isDebugEnabled())
          log.debug("Current context class loader is " + Thread.currentThread().getContextClassLoader());
@@ -1092,6 +1115,8 @@
        
       initializePool();
 
+      // TODO: Should be removed after switchboard (backed by ResourceProviders)
+      // is fully functional
       for (EncInjector injector : encInjectors.values())
       {
          injector.inject(this);   
@@ -1306,7 +1331,6 @@
       pool = factory.createPool();
       pool.initialize(this, maxSize, timeout);
 
-      resolveInjectors();
       pool.setInjectors(injectors.toArray(new Injector[injectors.size()]));
    }
 
@@ -1319,9 +1343,20 @@
    public void injectBeanContext(BeanContext<?> beanContext)
    {
       try
-      {
+      { 
+         // the injection manager in a real environment should never
+         // be null. But there are various legacy unit tests which
+         // start up a container in various different ways and it's 
+         // a real big task to set a mock injection manager in all those places
+         if (this.injectionManager != null)
+         {
+            this.injectionManager.inject(beanContext.getInstance());
+         }
+         // TODO: Remove the rest of this stuff from here, once we
+         // have fully integrated SwitchBoard and jboss-injection in place
          if(injectors == null)
             return;
+         // [Jaikiran] Hmm, why all this AOP stuff during injection?
          Advisor advisor = getAdvisor();
          InjectionInvocation invocation = new InjectionInvocation(beanContext, injectors, injectionCallbackStack);
          invocation.setAdvisor(advisor);
@@ -1401,6 +1436,12 @@
 
    public static final String ENTITY_MANAGER_FACTORY = "EntityManagerFactory";
 
+   /**
+    * @deprecated {@link EJBContainer} is no longer responsible for setting up 
+    * ENC. Instead, SwitchBoard http://community.jboss.org/wiki/Switchboard 
+    * will be setting it up.
+    */
+   @Deprecated
    protected void resolveInjectors() throws Exception
    {
       pushEnc();
@@ -1834,6 +1875,16 @@
       
    }
    
+   public void setInjectionManager(InjectionManager injectionManager)
+   {
+      if (injectionManager == null)
+      {
+         throw new IllegalArgumentException("Cannot set null InjectionManager for container of bean " + this.getEjbName());
+      }
+      
+      this.injectionManager = injectionManager;
+   }
+   
    /**
     * Returns {@link AnnotationRepositoryToMetaData} corresponding to this {@link EJBContainer}.
     * The returned {@link AnnotationRepositoryToMetaData} is an implementation of {@link AnnotationRepository}

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -545,6 +545,24 @@
 
          registerDeployment();
 
+         for (Object o : ejbContainers.values())
+         {
+            Container con = (Container) o;
+            try 
+            {
+               processEJBContainerMetadata(con);
+            }
+            catch (Exception e)
+            {
+               String message = "Exception while processing container metadata for EJB: " + con.getEjbName()
+                     + " in unit: " + this.getDeploymentUnit().getShortName();
+               // now wrap the original exception with a meaningful message and
+               // throw back the exception.
+               throw new Exception(message, e);
+            }
+         }
+
+
          log.debug("EJB3 deployment time took: " + (System.currentTimeMillis() - start));
       }
       catch (Exception e)
@@ -572,42 +590,12 @@
       if (reinitialize)
          reinitialize();
       
+      // register the containers
       for (Object o : ejbContainers.values())
       {
          Container con = (Container) o;
          try 
          {
-            processEJBContainerMetadata(con);
-         }
-         catch (Exception e)
-         {
-            String message = "Exception while processing container metadata for EJB: " + con.getEjbName() + " in unit: " + this.getDeploymentUnit().getShortName();
-            // just log the message, no need to dump the stacktrace since we are finally going to
-            // throw back the exception
-            log.error(message);
-            // stop/destroy the container(s) in this deployment
-            try 
-            {
-               stop();
-               destroy();
-            }
-            catch (Exception ignoredException)  
-            {
-               // we catch this exception during stop/destroy to ensure that this 
-               // exception is NOT propagated up, instead of the original exception
-               // that forced this stop/destroy
-            }
-            // now wrap the original exception with a meaningful message and
-            // throw back the exception.
-            throw new Exception(message, e);
-         }
-      }
-
-      for (Object o : ejbContainers.values())
-      {
-         Container con = (Container) o;
-         try 
-         {
             registerEJBContainer(con);
          }
          catch (Exception e)

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionHelper.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionHelper.java	2010-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionHelper.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -50,8 +50,5 @@
       {
          injector.inject(ctx);
       }
-      // inject interceptors
-      // TODO: it would be better to create the instances during createBeanContext
-      ctx.initialiseInterceptorInstances();
    }
 }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionInvocation.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionInvocation.java	2010-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionInvocation.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -94,6 +94,11 @@
    @Override
    public Object invokeTarget() throws Throwable
    {
-      return invocationContext.proceed();
+      // inject the bean instance
+      invocationContext.proceed();
+      // now inject the interceptor instances
+      this.ctx.initialiseInterceptorInstances();
+      // injection invocation doesn't have anything to return
+      return null;
    }
 }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java	2010-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -96,7 +96,18 @@
    @Override
    public BeanContext<?> createBeanContext()
    {
-      return new MDBContext(this, construct());
+      MDBContext beanCtx = new MDBContext(this, construct());
+      this.pushContext(beanCtx);
+      try
+      {
+         // inject it
+         this.injectBeanContext(beanCtx);
+      }
+      finally
+      {
+         this.popContext();
+      }
+      return beanCtx;
    }
    
    public Object getMBean()

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/pool/AbstractPool.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/pool/AbstractPool.java	2010-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/pool/AbstractPool.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -79,15 +79,6 @@
    {
       BeanContext ctx;
       ctx = createBeanContext();
-      container.pushContext(ctx);
-      try
-      {
-         container.injectBeanContext(ctx);
-      }
-      finally
-      {
-         container.popContext();
-      }
 
       container.invokePostConstruct(ctx, initValues);
 

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java	2010-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -147,7 +147,9 @@
    @Override
    public BeanContext<?> createBeanContext()
    {
-      return new ServiceBeanContext(this, singleton);
+      ServiceBeanContext beanCtx = new ServiceBeanContext(this, singleton);
+      this.injectDependencies(beanCtx);
+      return beanCtx;
    }
 
    // TODO: integrate with StatelessContainer.initializeTimeout
@@ -258,8 +260,6 @@
       {
          initBeanContext();
 
-         injectDependencies(beanContext);
-
          invokePostConstruct(beanContext);
          
       }

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -21,6 +21,29 @@
  */
 package org.jboss.ejb3.stateful;
 
+import java.io.Serializable;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.rmi.RemoteException;
+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;
+import javax.ejb.EJBObject;
+import javax.ejb.Handle;
+import javax.ejb.Init;
+import javax.ejb.NoSuchEJBException;
+import javax.ejb.NoSuchObjectLocalException;
+import javax.ejb.PostActivate;
+import javax.ejb.PrePassivate;
+import javax.ejb.RemoteHome;
+import javax.ejb.RemoveException;
+
 import org.jboss.aop.Advisor;
 import org.jboss.aop.Domain;
 import org.jboss.aop.MethodInfo;
@@ -74,28 +97,6 @@
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
 import org.jboss.util.NotImplementedException;
 
-import javax.ejb.EJBHome;
-import javax.ejb.EJBLocalObject;
-import javax.ejb.EJBObject;
-import javax.ejb.Handle;
-import javax.ejb.Init;
-import javax.ejb.NoSuchEJBException;
-import javax.ejb.NoSuchObjectLocalException;
-import javax.ejb.PostActivate;
-import javax.ejb.PrePassivate;
-import javax.ejb.RemoteHome;
-import javax.ejb.RemoveException;
-import java.io.Serializable;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.rmi.RemoteException;
-import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-
 /**
  * Comment
  *
@@ -162,7 +163,19 @@
    @Override
    public BeanContext<?> createBeanContext()
    {
-      return new StatefulBeanContext(this, construct());
+      StatefulBeanContext beanCtx = new StatefulBeanContext(this, construct());
+      this.pushContext(beanCtx);
+      try
+      {
+         // inject it
+         this.injectBeanContext(beanCtx);
+      }
+      finally
+      {
+         this.popContext();
+      }
+
+      return beanCtx;
    }
 
    public Object createProxyLocalEjb21(Object id, LocalBinding binding) throws Exception

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -84,6 +84,7 @@
 import java.io.Serializable;
 import java.lang.reflect.Method;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
@@ -117,7 +118,20 @@
    @Override
    public BeanContext<?> createBeanContext()
    {
-      return new StatelessBeanContext(this, construct());
+      // construct the bean context
+      StatelessBeanContext beanCtx = new StatelessBeanContext(this, construct());
+      this.pushContext(beanCtx);
+      try
+      {
+         // inject it
+         this.injectBeanContext(beanCtx);
+      }
+      finally
+      {
+         this.popContext();
+      }
+
+      return beanCtx;
    }
    
    public Object createProxyLocalEjb21() throws Exception

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/AbstractEJB3TestCase.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -23,6 +23,7 @@
 
 import static org.junit.Assert.assertEquals;
 
+import java.lang.reflect.AccessibleObject;
 import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -30,11 +31,13 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Hashtable;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import javax.naming.InitialContext;
+import javax.naming.LinkRef;
 import javax.naming.NamingException;
 
 import org.jboss.aop.AspectManager;
@@ -51,6 +54,7 @@
 import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentUnit;
 import org.jboss.ejb3.DependencyPolicy;
 import org.jboss.ejb3.DeploymentUnit;
+import org.jboss.ejb3.EJBContainer;
 import org.jboss.ejb3.Ejb3Deployment;
 import org.jboss.ejb3.Ejb3Registry;
 import org.jboss.ejb3.InitialContextFactory;
@@ -67,18 +71,31 @@
 import org.jboss.ejb3.instantiator.impl.Ejb31SpecBeanInstantiator;
 import org.jboss.ejb3.instantiator.spi.BeanInstantiator;
 import org.jboss.ejb3.instantiator.spi.BeanInstantiatorRegistration;
-import org.jboss.ejb3.service.ServiceContainer;
+import org.jboss.ejb3.interceptor.InterceptorInjector;
 import org.jboss.ejb3.session.SessionContainer;
-import org.jboss.ejb3.stateful.StatefulContainer;
-import org.jboss.ejb3.stateless.StatelessContainer;
 import org.jboss.ejb3.test.cachepassivation.MockDeploymentUnit;
 import org.jboss.ejb3.test.common.MetaDataHelper;
 import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
+import org.jboss.ejb3.tx.UserTransactionImpl;
+import org.jboss.injection.DependsHandler;
+import org.jboss.injection.EJBHandler;
+import org.jboss.injection.InjectionHandler;
+import org.jboss.injection.InjectionUtil;
+import org.jboss.injection.Injector;
+import org.jboss.injection.JndiInjectHandler;
+import org.jboss.injection.PersistenceContextHandler;
+import org.jboss.injection.PersistenceUnitHandler;
+import org.jboss.injection.ResourceHandler;
+import org.jboss.injection.WebServiceRefHandler;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.InterceptorMetaData;
+import org.jboss.metadata.ejb.spec.InterceptorsMetaData;
+import org.jboss.metadata.javaee.spec.Environment;
+import org.jboss.util.naming.Util;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
@@ -467,7 +484,7 @@
             try
             {
                domain = getDomain("Service Bean");
-               container = new ServiceContainer(null, loader, beanClassName, ejbName, domain, ctxProperties,
+               container = new MockServiceContainer(null, loader, beanClassName, ejbName, domain, ctxProperties,
                      deployment, (JBossServiceBeanMetaData) md);
             }
             catch (ClassNotFoundException cnfe)
@@ -478,7 +495,7 @@
          case SFSB :
             try
             {
-               container = new StatefulContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment, md,
+               container = new MockStatefulContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment, md,
                      es);
             }
             catch (ClassNotFoundException cnfe)
@@ -489,7 +506,7 @@
          case SLSB :
             try
             {
-               container = new StatelessContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment,
+               container = new MockStatelessContainer(loader, beanClassName, ejbName, domain, ctxProperties, deployment,
                      md, es);
             }
             catch (ClassNotFoundException cnfe)
@@ -522,7 +539,8 @@
       //FIXME
       // Typically these steps are done by Ejb3Deployment
       container.instantiated(); //TODO: Wickeness
-      container.processMetadata();
+      //container.processMetadata();
+      processContainerMetaData(container);
       Ejb3Registry.register(container);
 
       // Add as one of the deployed containers here
@@ -627,4 +645,116 @@
          // Ignore
       }
    }
+
+   /**
+    * introspects EJB container to find all dependencies
+    * and initialize any extra metadata.
+    * <p/>
+    * This must be called before container is registered with any microcontainer
+    *
+    * @param container
+    */
+   public static void processContainerMetaData(EJBContainer container)
+   {
+      // XML must be done first so that any annotation overrides are initialized
+
+      // todo injection handlers should be pluggable from XML
+      Collection<InjectionHandler<Environment>> handlers = new ArrayList<InjectionHandler<Environment>>();
+      handlers.add(new EJBHandler<Environment>());
+      handlers.add(new DependsHandler<Environment>());
+      handlers.add(new JndiInjectHandler<Environment>());
+      handlers.add(new PersistenceContextHandler<Environment>());
+      handlers.add(new PersistenceUnitHandler<Environment>());
+      handlers.add(new ResourceHandler<Environment>());
+      handlers.add(new WebServiceRefHandler<Environment>());
+      ClassLoader old = Thread.currentThread().getContextClassLoader();
+      Thread.currentThread().setContextClassLoader(container.getClassloader());
+      try
+      {
+         // EJB container's XML must be processed before interceptor's as it may override interceptor's references
+         for (InjectionHandler<Environment> handler : handlers)
+            handler.loadXml(container.getXml(), container);
+
+         Map<AccessibleObject, Injector> tmp = InjectionUtil.processAnnotations(container, handlers, container
+               .getBeanClass());
+         container.getInjectors().addAll(tmp.values());
+
+         /*
+         initialiseInterceptors();
+         */
+         for (Class<?> interceptorClass : container.getInterceptorClasses())
+         {
+            InterceptorMetaData interceptorMetaData = findInterceptor(container.getXml(), interceptorClass);
+            if(interceptorMetaData == null)
+               continue;
+            
+            for (InjectionHandler<Environment> handler : handlers)
+            {
+               handler.loadXml(interceptorMetaData, container);
+            }
+         }
+         for (Class<?> interceptorClass : container.getInterceptorClasses())
+         {
+            Map<AccessibleObject, Injector> injections = InjectionUtil.processAnnotations(container, handlers, interceptorClass);
+            InterceptorInjector injector = new InterceptorInjector(injections);
+            container.getInterceptorInjectors().put(interceptorClass, injector);
+         }
+
+      }
+      finally
+      {
+         Thread.currentThread().setContextClassLoader(old);
+      }
+
+   }
+   
+   private static InterceptorMetaData findInterceptor(JBossEnterpriseBeanMetaData xml, Class<?> interceptorClass)
+   {
+      if(xml == null)
+         return null;
+      JBossMetaData ejbJarMetaData = xml.getEjbJarMetaData();
+      if(ejbJarMetaData == null)
+         return null;
+      InterceptorsMetaData interceptors = ejbJarMetaData.getInterceptors();
+      if(interceptors == null)
+         return null;
+      for(InterceptorMetaData interceptorMetaData : interceptors)
+      {
+         if(interceptorMetaData.getInterceptorClass().equals(interceptorClass.getName()))
+            return interceptorMetaData;
+      }
+      return null;
+   }
+
+   public static void bindJavaCompEntries(EJBContainer container) throws NamingException
+   {
+      bindEJBContext(container);
+      bindTimerService(container);
+      bindUserTransaction(container);
+      bindTransactionSynchronizationRegistry(container);
+   }
+   
+   private static void bindEJBContext(EJBContainer container) throws NamingException
+   {
+      LinkRef ref = new LinkRef("java:internal/EJBContext");
+      Util.rebind(container.getEnc(), "EJBContext", ref);
+   }
+
+   private static void bindTimerService(EJBContainer container) throws NamingException
+   {
+      LinkRef timerServiceLinkRef = new LinkRef("java:internal/TimerService");
+      // bind to java:comp/TimerService
+      Util.rebind(container.getEnc(), "TimerService", timerServiceLinkRef);
+   }
+
+   private static void bindUserTransaction(EJBContainer container) throws NamingException
+   {
+      Util.rebind(container.getEnc(), "UserTransaction", new UserTransactionImpl());
+   }
+   
+   private static void bindTransactionSynchronizationRegistry(EJBContainer container) throws NamingException
+   {
+      Util.rebind(container.getEnc(), "TransactionSynchronizationRegistry", new LinkRef("java:TransactionSynchronizationRegistry"));
+   }
+
 }

Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockServiceContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockServiceContainer.java	                        (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockServiceContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.core.test.common;
+
+import java.util.Hashtable;
+
+import javax.management.MBeanServer;
+
+import org.jboss.aop.Domain;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.service.ServiceContainer;
+import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
+
+/**
+ * MockServiceContainer
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class MockServiceContainer extends ServiceContainer
+{
+
+   public MockServiceContainer(MBeanServer server, ClassLoader cl, String beanClassName, String ejbName, Domain domain,
+         Hashtable ctxProperties, Ejb3Deployment deployment, JBossServiceBeanMetaData beanMetaData)
+         throws ClassNotFoundException
+   {
+      super(server, cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData);
+   }
+
+   @Override
+   public void create() throws Exception
+   {
+      super.create();
+      AbstractEJB3TestCase.bindJavaCompEntries(this);
+   }
+}

Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatefulContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatefulContainer.java	                        (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatefulContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.core.test.common;
+
+import java.util.Hashtable;
+import java.util.concurrent.ExecutorService;
+
+import org.jboss.aop.Domain;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.stateful.StatefulContainer;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+
+/**
+ * MockStatefulContainer
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class MockStatefulContainer extends StatefulContainer
+{
+
+   public MockStatefulContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
+         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData,
+         ExecutorService asynchronousExecutor) throws ClassNotFoundException
+   {
+      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData, asynchronousExecutor);
+   }
+   
+   @Override
+   public void create() throws Exception
+   {
+      super.create();
+      AbstractEJB3TestCase.bindJavaCompEntries(this);
+   }
+
+}

Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatelessContainer.java	                        (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/common/MockStatelessContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.core.test.common;
+
+import java.util.Hashtable;
+import java.util.concurrent.ExecutorService;
+
+import org.jboss.aop.Domain;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.stateless.StatelessContainer;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+
+/**
+ * MockSessionContainer
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class MockStatelessContainer extends StatelessContainer
+{
+
+   public MockStatelessContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
+         Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData,
+         ExecutorService asynchronousExecutor) throws ClassNotFoundException
+   {
+      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData, asynchronousExecutor);
+   }
+
+   @Override
+   public void create() throws Exception
+   {
+      super.create();
+      AbstractEJB3TestCase.bindJavaCompEntries(this);
+   }
+}

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/core/test/ejbthree1150/unit/WebServiceContextInjectionTestCase.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -87,7 +87,7 @@
       // TODO: wickedness
       container.instantiated();
       
-      container.processMetadata();
+      AbstractEJB3TestCase.processContainerMetaData(container);
       
       // Register the Container in ObjectStore (MC)
       String containerName = container.getObjectName().getCanonicalName();
@@ -145,7 +145,7 @@
       // TODO: wickedness
       container.instantiated();
       
-      container.processMetadata();
+      AbstractEJB3TestCase.processContainerMetaData(container);
       
       // Register the Container in ObjectStore (MC)
       String containerName = container.getObjectName().getCanonicalName();

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/MockStatefulContainer.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -27,6 +27,7 @@
 
 import org.jboss.aop.Domain;
 import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.core.test.common.AbstractEJB3TestCase;
 import org.jboss.ejb3.stateful.StatefulContainer;
 import org.jboss.ejb3.test.common.MetaDataHelper;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -48,6 +49,13 @@
    }
 
    @Override
+   public void create() throws Exception
+   {
+      super.create();
+      AbstractEJB3TestCase.bindJavaCompEntries(this);
+   }
+   
+   @Override
    public Serializable createSession()
    {
       // TODO Auto-generated method stub

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-11-19 10:15:08 UTC (rev 109388)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/cachepassivation/unit/CachePassivationUnitTestCase.java	2010-11-19 11:58:57 UTC (rev 109389)
@@ -53,6 +53,7 @@
 import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.context.naming.EJBContextBinder;
 import org.jboss.ejb3.core.context.CurrentInvocationContextInterceptor;
+import org.jboss.ejb3.core.test.common.AbstractEJB3TestCase;
 import org.jboss.ejb3.core.test.common.MockEjb3Deployment;
 import org.jboss.ejb3.instantiator.impl.Ejb31SpecBeanInstantiator;
 import org.jboss.ejb3.instantiator.spi.BeanInstantiatorRegistration;
@@ -65,6 +66,8 @@
 import org.jboss.naming.JavaCompInitializer;
 import org.jnp.server.SingletonNamingServer;
 import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
 import org.mockito.Mockito;
 
 /**
@@ -81,7 +84,8 @@
    public static void shutdownEs(){
       es.shutdownNow();
    }
-   
+
+   @Test
    public void test1() throws Exception
    {
       new SingletonNamingServer();
@@ -144,7 +148,7 @@
       MockStatefulContainer container = new MockStatefulContainer(cl, beanClassName, ejbName, domain, ctxProperties,
             deployment, es);
       container.instantiated();
-      container.processMetadata();
+      AbstractEJB3TestCase.processContainerMetaData(container);
       System.out.println("injectors = " + container.getInjectors());
       Ejb3Registry.register(container);
       try
@@ -176,7 +180,7 @@
          String b = bean.ctx.toString();
          System.out.println(ctx.getEJBContext());
          System.out.println(bean.ctx);
-         assertTrue(a.regionMatches(a.indexOf('{'), b, b.indexOf('{'), a.length() - a.indexOf('{')));
+         Assert.assertTrue(a.regionMatches(a.indexOf('{'), b, b.indexOf('{'), a.length() - a.indexOf('{')));
       }
       finally
       {



More information about the jboss-cvs-commits mailing list