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);