[jboss-cvs] JBossAS SVN: r109402 - in projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3: injection and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 22 02:03:05 EST 2010


Author: jaikiran
Date: 2010-11-22 02:03:04 -0500 (Mon, 22 Nov 2010)
New Revision: 109402

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionInvocation.java
Log:
EJBTHREE-2200 Allow InjectionInvocation to be carried out using InjectionManager

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-22 05:27:01 UTC (rev 109401)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java	2010-11-22 07:03:04 UTC (rev 109402)
@@ -1344,21 +1344,14 @@
    {
       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?
+         {
+            this.injectors = new ArrayList<Injector>();
+         }
          Advisor advisor = getAdvisor();
-         InjectionInvocation invocation = new InjectionInvocation(beanContext, injectors, injectionCallbackStack);
+         InjectionInvocation invocation = new InjectionInvocation(beanContext, injectors, injectionCallbackStack, this.injectionManager);
          invocation.setAdvisor(advisor);
          invocation.setTargetObject(beanContext.getInstance());
          invocation.invokeNext();

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-22 05:27:01 UTC (rev 109401)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/injection/InjectionInvocation.java	2010-11-22 07:03:04 UTC (rev 109402)
@@ -28,6 +28,7 @@
 import org.jboss.ejb3.context.spi.InvocationContext;
 import org.jboss.ejb3.core.context.EJBInvocation;
 import org.jboss.injection.Injector;
+import org.jboss.injection.manager.spi.InjectionManager;
 
 /**
  * Perform injection via an interceptor chain.
@@ -45,7 +46,20 @@
    private BeanContext<?> ctx;
    private InvocationContext invocationContext;
    
-   public InjectionInvocation(BeanContext<?> ctx, Iterable<Injector> injectors, Interceptor interceptors[])
+   private InjectionManager injectionManager;
+   
+   /**
+    * 
+    * @param ctx
+    * @param injectors
+    * @param interceptors
+    * @param injectionManager
+    * 
+    * @deprecated Once InjectionManager is completely integrated, this constructor shouldn't be used.
+    *               Use {@link #InjectionInvocation(BeanContext, InjectionManager, Interceptor[])} instead.
+    */
+   @Deprecated
+   public InjectionInvocation(BeanContext<?> ctx, Iterable<Injector> injectors, Interceptor interceptors[], InjectionManager injectionManager)
    {
       super(interceptors);
       
@@ -54,9 +68,29 @@
       
       this.ctx = ctx;
       this.invocationContext = ctx.createInjectionInvocation(injectors);
+      this.injectionManager = injectionManager;
       invocationContext.setEJBContext(ctx.getEJBContext());
    }
    
+   public InjectionInvocation(BeanContext<?> ctx, InjectionManager injectionManager, Interceptor interceptors[])
+   {
+      super(interceptors);
+      
+      if (ctx == null)
+      {
+         throw new IllegalArgumentException("BeanContext cannot be null while creating InjectionInvocation");
+      }
+
+      if (injectionManager == null)
+      {
+         throw new IllegalArgumentException("InjectionManager cannot be null while creating InjectionInvocation");
+      }
+
+      this.ctx = ctx;
+      this.injectionManager = injectionManager;
+      invocationContext.setEJBContext(ctx.getEJBContext());
+   }
+   
    public Invocation copy()
    {
       throw new RuntimeException("NYI");
@@ -94,8 +128,17 @@
    @Override
    public Object invokeTarget() throws Throwable
    {
-      // inject the bean instance
-      invocationContext.proceed();
+      // TODO: Once InjectionManager is fully integrated,
+      // this should be removed. Injection should happen solely via InjectionManager.inject
+      if (invocationContext != null)
+      {
+         invocationContext.proceed();
+      }
+      // additional null safety check till InjectionManager is completely integrated
+      if (this.injectionManager != null)
+      {
+         this.injectionManager.inject(ctx.getInstance());
+      }
       // now inject the interceptor instances
       this.ctx.initialiseInterceptorInstances();
       // injection invocation doesn't have anything to return



More information about the jboss-cvs-commits mailing list