You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/05/06 18:08:52 UTC

svn commit: r1479617 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb: BeanContext.java core/singleton/SingletonInstanceManager.java core/stateful/StatefulContainer.java core/stateless/StatelessInstanceManager.java

Author: rmannibucau
Date: Mon May  6 16:08:52 2013
New Revision: 1479617

URL: http://svn.apache.org/r1479617
Log:
calling postconstruct/predestroy on ejbs too if extensions use it for some hooks

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1479617&r1=1479616&r2=1479617&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java Mon May  6 16:08:52 2013
@@ -1532,6 +1532,9 @@ public class BeanContext extends Deploym
             final TransactionPolicy transactionPolicy = EjbTransactionUtil.createTransactionPolicy(transactionType, callContext);
             try {
                 //Call the chain
+                if (cdiEjbBean != null) { // call it, it has no postconstruct but extensions can add stuff here, TODO: see if it should be called before or after effective postconstruct
+                    cdiEjbBean.getInjectionTarget().postConstruct(beanInstance);
+                }
                 postConstruct.invoke();
             } catch (Throwable e) {
                 //RollBack Transaction

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java?rev=1479617&r1=1479616&r2=1479617&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java Mon May  6 16:08:52 2013
@@ -20,6 +20,7 @@ import org.apache.openejb.ApplicationExc
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.BeanType;
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.cdi.CdiEjbBean;
 import org.apache.openejb.core.InstanceContext;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
@@ -254,6 +255,11 @@ public class SingletonInstanceManager {
             TransactionPolicy transactionPolicy = EjbTransactionUtil.createTransactionPolicy(transactionType, callContext);
             try{
                 //Call the chain
+                final CdiEjbBean<Object> bean = beanContext.get(CdiEjbBean.class);
+                if (bean != null) { // TODO: see if it should be called before or after next call
+                    bean.getInjectionTarget().preDestroy(instance.bean);
+                }
+
                 interceptorStack.invoke();
                 if (instance.creationalContext != null) {
                     instance.creationalContext.release();

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?rev=1479617&r1=1479616&r2=1479617&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Mon May  6 16:08:52 2013
@@ -550,6 +550,11 @@ public class StatefulContainer implement
                     final InterceptorStack interceptorStack = new InterceptorStack(instance.bean, runMethod, Operation.REMOVE, interceptors, instance.interceptors);
 
                     // Invoke
+                    final CdiEjbBean<Object> bean = beanContext.get(CdiEjbBean.class);
+                    if (bean != null) { // TODO: see if it should be called before or after next call
+                        bean.getInjectionTarget().preDestroy(instance.bean);
+                    }
+
                     if (args == null) {
                         returnValue = interceptorStack.invoke();
                     } else {

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?rev=1479617&r1=1479616&r2=1479617&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java Mon May  6 16:08:52 2013
@@ -20,6 +20,7 @@ import org.apache.openejb.ApplicationExc
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.SystemException;
+import org.apache.openejb.cdi.CdiEjbBean;
 import org.apache.openejb.core.InstanceContext;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
@@ -301,6 +302,10 @@ public class StatelessInstanceManager {
             final List<InterceptorData> callbackInterceptors = beanContext.getCallbackInterceptors();
             final InterceptorStack interceptorStack = new InterceptorStack(instance.bean, remove, Operation.PRE_DESTROY, callbackInterceptors, instance.interceptors);
 
+            final CdiEjbBean<Object> bean = beanContext.get(CdiEjbBean.class);
+            if (bean != null) { // TODO: see if it should be called before or after next call
+                bean.getInjectionTarget().preDestroy(instance.bean);
+            }
             interceptorStack.invoke();
 
             if (instance.creationalContext != null) {