You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/05/23 08:41:50 UTC

svn commit: r540858 - /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java

Author: dblevins
Date: Tue May 22 23:41:49 2007
New Revision: 540858

URL: http://svn.apache.org/viewvc?view=rev&rev=540858
Log:
Fixed remove syntax to return a value/exception for business interfaces and to bury it for all else

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=540858&r1=540857&r2=540858
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Tue May 22 23:41:49 2007
@@ -40,6 +40,7 @@
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
 import org.apache.openejb.InvalidateReferenceException;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.CoreDeploymentInfo;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
@@ -238,8 +239,8 @@
                 ProxyInfo proxyInfo = createEJBObject(deployInfo, callInterface, callMethod, args);
                 return proxyInfo;
             case REMOVE:
-                removeEJBObject(deployInfo, primKey, callInterface, callMethod, args);
-                return null;
+                Object o = removeEJBObject(deployInfo, primKey, callInterface, callMethod, args);
+                return o;
             default:
                 Object value = businessMethod(deployInfo, primKey, callInterface, callMethod, args);
                 return value;
@@ -297,7 +298,7 @@
         return new VMID();
     }
 
-    protected void removeEJBObject(CoreDeploymentInfo deploymentInfo, Object primKey, Class callInterface, Method callMethod, Object[] args) throws OpenEJBException {
+    protected Object removeEJBObject(CoreDeploymentInfo deploymentInfo, Object primKey, Class callInterface, Method callMethod, Object[] args) throws OpenEJBException {
         ThreadContext callContext = new ThreadContext(deploymentInfo, primKey);
         ThreadContext oldCallContext = ThreadContext.enter(callContext);
         try {
@@ -320,14 +321,18 @@
                 
                 List<InterceptorData> interceptors = deploymentInfo.getMethodInterceptors(runMethod);
                 InterceptorStack interceptorStack = new InterceptorStack(instance.bean, runMethod, Operation.REMOVE, interceptors, instance.interceptors);
-                _invoke(callMethod, interceptorStack, args, instance, callContext);
+                return _invoke(callMethod, interceptorStack, args, instance, callContext);
 
             } catch(InvalidateReferenceException e){
                 throw e;
             } catch(ApplicationException e){
-                retain = deploymentInfo.retainIfExeption(runMethod);
-                if (retain) return;
-                else throw e;
+                InterfaceType type = deploymentInfo.getInterfaceType(callInterface);
+                if (type.isBusiness()){
+                    retain = deploymentInfo.retainIfExeption(runMethod);
+                    throw e;
+                } else {
+                    return null;
+                }
             } finally {
                 if (retain){
                     instanceManager.poolInstance(callContext, instance);