[jboss-cvs] JBossCache/src-50/org/jboss/cache/pojo/interceptors ...
Ben Wang
bwang at jboss.com
Tue Oct 10 06:49:55 EDT 2006
User: bwang
Date: 06/10/10 06:49:55
Modified: src-50/org/jboss/cache/pojo/interceptors
PojoTxUndoInterceptor.java
Log:
First cut for JBCACHE-763 transaction rollback problem for collection.
Revision Changes Path
1.5 +21 -1 JBossCache/src-50/org/jboss/cache/pojo/interceptors/PojoTxUndoInterceptor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PojoTxUndoInterceptor.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/interceptors/PojoTxUndoInterceptor.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- PojoTxUndoInterceptor.java 17 Sep 2006 05:58:30 -0000 1.4
+++ PojoTxUndoInterceptor.java 10 Oct 2006 10:49:55 -0000 1.5
@@ -10,17 +10,19 @@
import org.jboss.cache.pojo.MethodDeclarations;
import org.jboss.cache.pojo.PojoTxSynchronizationHandler;
import org.jboss.cache.pojo.util.MethodCall;
+import org.jboss.cache.Fqn;
import org.jboss.aop.joinpoint.Invocation;
import org.jboss.aop.joinpoint.MethodInvocation;
import java.lang.reflect.Method;
import java.lang.reflect.Field;
+import java.util.List;
/**
* Interceptor (done via aop advice) for transaction rollback. This is is attached to the
* operation that needs a corresponding rollback, e.g., attachInterceptor.
*
* @author Ben Wang
- * @version $Id: PojoTxUndoInterceptor.java,v 1.4 2006/09/17 05:58:30 bwang Exp $
+ * @version $Id: PojoTxUndoInterceptor.java,v 1.5 2006/10/10 10:49:55 bwang Exp $
*/
public class PojoTxUndoInterceptor extends AbstractInterceptor
{
@@ -68,6 +70,24 @@
Object[] args = new Object[] { obj, field, oldValue };
MethodCall mc = new MethodCall(method, args, invocation.getTargetObject());
handler.addToList(mc);
+ } else if ( methodName.equals(MethodDeclarations.incrementReferenceCount.getName()))
+ {
+ Method method = MethodDeclarations.undoIncrementReferenceCount;
+ Fqn fqn = (Fqn)invocation.getArguments()[0];
+ int count = (Integer)invocation.getArguments()[1];
+ List referenceList = (List)invocation.getArguments()[2];
+ Object[] args = new Object[] { fqn, count, referenceList };
+ MethodCall mc = new MethodCall(method, args, invocation.getTargetObject());
+ handler.addToList(mc);
+ } else if ( methodName.equals(MethodDeclarations.decrementReferenceCount.getName()))
+ {
+ Method method = MethodDeclarations.undoDecrementReferenceCount;
+ Fqn fqn = (Fqn)invocation.getArguments()[0];
+ int count = (Integer)invocation.getArguments()[1];
+ List referenceList = (List)invocation.getArguments()[2];
+ Object[] args = new Object[] { fqn, count, referenceList };
+ MethodCall mc = new MethodCall(method, args, invocation.getTargetObject());
+ handler.addToList(mc);
} else
{
throw new RuntimeException("PojoTxUndoInterceptor: invalid invocation name: " +methodName);
More information about the jboss-cvs-commits
mailing list