[jboss-cvs] jboss-seam/src/main/org/jboss/seam/intercept ...
Gavin King
gavin.king at jboss.com
Fri Oct 13 13:41:57 EDT 2006
User: gavin
Date: 06/10/13 13:41:57
Modified: src/main/org/jboss/seam/intercept
ClientSideInterceptor.java JavaBeanInterceptor.java
SessionBeanInterceptor.java
Log:
handle this references correctly in interceptors
Revision Changes Path
1.4 +19 -8 jboss-seam/src/main/org/jboss/seam/intercept/ClientSideInterceptor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ClientSideInterceptor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/intercept/ClientSideInterceptor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ClientSideInterceptor.java 13 Oct 2006 04:04:48 -0000 1.3
+++ ClientSideInterceptor.java 13 Oct 2006 17:41:57 -0000 1.4
@@ -1,4 +1,4 @@
-//$Id: ClientSideInterceptor.java,v 1.3 2006/10/13 04:04:48 gavin Exp $
+//$Id: ClientSideInterceptor.java,v 1.4 2006/10/13 17:41:57 gavin Exp $
package org.jboss.seam.intercept;
import java.lang.reflect.Method;
@@ -33,6 +33,8 @@
final MethodProxy methodProxy) throws Throwable
{
String methodName = method.getName();
+ if ( params!=null && params.length==0 )
+ {
if ( "finalize".equals(methodName) )
{
return methodProxy.invokeSuper(proxy, params);
@@ -41,7 +43,16 @@
{
return this;
}
- return interceptInvocation(method, params, methodProxy);
+ }
+ Object result = interceptInvocation(method, params, methodProxy);
+ return sessionBeanReturnedThis(result) ? proxy : result;
+ }
+
+ private boolean sessionBeanReturnedThis(Object result)
+ {
+ return result==bean || (
+ result!=null && getComponent().getBeanClass().isAssignableFrom( result.getClass() )
+ );
}
private Object interceptInvocation(final Method method, final Object[] params, final MethodProxy methodProxy) throws Exception
1.5 +3 -2 jboss-seam/src/main/org/jboss/seam/intercept/JavaBeanInterceptor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: JavaBeanInterceptor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/intercept/JavaBeanInterceptor.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- JavaBeanInterceptor.java 13 Oct 2006 16:34:30 -0000 1.4
+++ JavaBeanInterceptor.java 13 Oct 2006 17:41:57 -0000 1.5
@@ -1,4 +1,4 @@
-//$Id: JavaBeanInterceptor.java,v 1.4 2006/10/13 16:34:30 gavin Exp $
+//$Id: JavaBeanInterceptor.java,v 1.5 2006/10/13 17:41:57 gavin Exp $
package org.jboss.seam.intercept;
import java.lang.reflect.Method;
@@ -66,7 +66,8 @@
//TODO: we could support an @ReadOnly annotation
dirty = true;
- return interceptInvocation(method, params, methodProxy);
+ Object result = interceptInvocation(method, params, methodProxy);
+ return result==bean ? proxy : result;
}
1.3 +0 -1 jboss-seam/src/main/org/jboss/seam/intercept/SessionBeanInterceptor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SessionBeanInterceptor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/intercept/SessionBeanInterceptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- SessionBeanInterceptor.java 10 Oct 2006 18:12:31 -0000 1.2
+++ SessionBeanInterceptor.java 13 Oct 2006 17:41:57 -0000 1.3
@@ -13,7 +13,6 @@
import org.jboss.seam.InterceptorType;
import org.jboss.seam.Seam;
import org.jboss.seam.annotations.Name;
-import org.jboss.seam.intercept.RootInterceptor;
/**
* Controller interceptor for server-side interceptors of
More information about the jboss-cvs-commits
mailing list