[infinispan-commits] Infinispan SVN: r280 - trunk/core/src/main/java/org/infinispan/commands.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed May 13 07:04:06 EDT 2009


Author: vblagojevic at jboss.com
Date: 2009-05-13 07:04:06 -0400 (Wed, 13 May 2009)
New Revision: 280

Modified:
   trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
Log:
[ISPN-48] -  Introduce lock() and unlock() API methods
replication works

Modified: trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java	2009-05-13 10:41:51 UTC (rev 279)
+++ trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java	2009-05-13 11:04:06 UTC (rev 280)
@@ -24,6 +24,7 @@
 import java.util.Collection;
 
 import org.infinispan.commands.tx.AbstractTransactionBoundaryCommand;
+import org.infinispan.commands.write.WriteCommand;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.transaction.xa.GlobalTransaction;
 
@@ -64,7 +65,20 @@
    public boolean isUnlock() {
       return !isLock();
    }
+   
+   @Override
+   public Object perform(InvocationContext ignored) throws Throwable {
+      if (ignored != null)
+         throw new IllegalStateException("Expected null context!");
 
+      boolean remoteTxinitiated = txTable.getRemoteTransaction(globalTx) != null ? true : false;
+      if (!remoteTxinitiated) {         
+         //create bogus modifications (we do not know modifications ahead of time)
+         txTable.createRemoteTransaction(globalTx, new WriteCommand[] {});
+      } 
+      return super.perform(ignored);
+   }
+
    public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
       return visitor.visitLockControlCommand(ctx, this);
    }




More information about the infinispan-commits mailing list