[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