[infinispan-commits] Infinispan SVN: r604 - in trunk/core/src/main/java/org/infinispan: commands and 4 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Jul 22 07:07:16 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-07-22 07:07:15 -0400 (Wed, 22 Jul 2009)
New Revision: 604

Added:
   trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java
Removed:
   trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
Modified:
   trunk/core/src/main/java/org/infinispan/CacheDelegate.java
   trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java
   trunk/core/src/main/java/org/infinispan/commands/CommandsFactory.java
   trunk/core/src/main/java/org/infinispan/commands/CommandsFactoryImpl.java
   trunk/core/src/main/java/org/infinispan/commands/RemoteCommandFactory.java
   trunk/core/src/main/java/org/infinispan/commands/Visitor.java
   trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/ImplicitEagerLockingInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java
   trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java
Log:
Moved LockControlCommand to control subpackage

Modified: trunk/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/CacheDelegate.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/CacheDelegate.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -26,7 +26,7 @@
 import org.infinispan.atomic.AtomicMapCache;
 import org.infinispan.batch.BatchContainer;
 import org.infinispan.commands.CommandsFactory;
-import org.infinispan.commands.LockControlCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.read.EntrySetCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.read.KeySetCommand;
@@ -244,7 +244,7 @@
    public void lock(Collection<? extends K> keys) {
       if (keys == null || keys.isEmpty())
          throw new IllegalArgumentException("Cannot lock empty list of keys");
-      LockControlCommand command = commandsFactory.buildLockControlCommand(keys,false);
+      LockControlCommand command = commandsFactory.buildLockControlCommand(keys, false);
       invoker.invoke(getInvocationContext(), command);
    }
 

Modified: trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands;
 
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.read.EntrySetCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.read.KeySetCommand;
@@ -141,8 +142,8 @@
          command.acceptVisitor(ctx, this);
       }
    }
-   
-   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable{
+
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable {
       return handleDefault(ctx, command);
    }
 }
\ No newline at end of file

Modified: trunk/core/src/main/java/org/infinispan/commands/CommandsFactory.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/CommandsFactory.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/commands/CommandsFactory.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands;
 
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.control.StateTransferControlCommand;
 import org.infinispan.commands.read.EntrySetCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
@@ -70,11 +71,11 @@
    SizeCommand buildSizeCommand();
 
    GetKeyValueCommand buildGetKeyValueCommand(Object key);
-   
+
    KeySetCommand buildKeySetCommand();
-   
+
    ValuesCommand buildValuesCommand();
-   
+
    EntrySetCommand buildEntrySetCommand();
 
    PutMapCommand buildPutMapCommand(Map map, long lifespanMillis, long maxIdleTimeMillis);
@@ -108,6 +109,6 @@
    StateTransferControlCommand buildStateTransferControlCommand(boolean block);
 
    ClusteredGetCommand buildClusteredGetCommand(Object key);
-   
+
    LockControlCommand buildLockControlCommand(Collection keys, boolean implicit);
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/CommandsFactoryImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/CommandsFactoryImpl.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/commands/CommandsFactoryImpl.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -22,6 +22,7 @@
 package org.infinispan.commands;
 
 import org.infinispan.Cache;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.control.StateTransferControlCommand;
 import org.infinispan.commands.read.EntrySetCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
@@ -123,14 +124,14 @@
       }
       return cachedSizeCommand;
    }
-   
+
    public KeySetCommand buildKeySetCommand() {
       if (cachedKeySetCommand == null) {
          cachedKeySetCommand = new KeySetCommand(dataContainer);
       }
       return cachedKeySetCommand;
    }
-   
+
    public ValuesCommand buildValuesCommand() {
       if (cachedValuesCommand == null) {
          cachedValuesCommand = new ValuesCommand(dataContainer);
@@ -255,9 +256,9 @@
             clusteredGetCommand.initialize(dataContainer, icc, this, interceptorChain);
             break;
          case LockControlCommand.COMMAND_ID:
-            LockControlCommand lcc = (LockControlCommand)c;
-            lcc.init(interceptorChain, icc,txTable);
-            break;    
+            LockControlCommand lcc = (LockControlCommand) c;
+            lcc.init(interceptorChain, icc, txTable);
+            break;
       }
    }
 

Deleted: trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -1,146 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.infinispan.commands;
-
-import org.infinispan.commands.tx.AbstractTransactionBoundaryCommand;
-import org.infinispan.commands.write.WriteCommand;
-import org.infinispan.context.InvocationContext;
-import org.infinispan.context.impl.RemoteTxInvocationContext;
-import org.infinispan.context.impl.TxInvocationContext;
-import org.infinispan.marshall.Ids;
-import org.infinispan.marshall.Marshallable;
-import org.infinispan.marshall.exts.ReplicableCommandExternalizer;
-import org.infinispan.transaction.xa.GlobalTransaction;
-import org.infinispan.transaction.xa.RemoteTransaction;
-
-import java.util.Collection;
-
-/**
- * LockControlCommand is a command that enables distributed locking across infinispan nodes.
- * <p> 
- * For more details refer to:
- * https://jira.jboss.org/jira/browse/ISPN-70
- * https://jira.jboss.org/jira/browse/ISPN-48
- * 
- * @author Vladimir Blagojevic (<a href="mailto:vblagoje at redhat.com">vblagoje at redhat.com</a>)
- * @param
- * @since 4.0
- */
- at Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.LOCK_CONTROL_COMMAND)
-public class LockControlCommand extends AbstractTransactionBoundaryCommand {
-   public static final int COMMAND_ID = 3;
-   private Collection keys;
-   private boolean implicit = false;
-
-   public LockControlCommand() {
-   }
-
-   public LockControlCommand(Collection keys, String cacheName) {
-      this(keys,cacheName,false);
-   }
-   
-   public LockControlCommand(Collection keys, String cacheName, boolean implicit) {
-      this.cacheName = cacheName;
-      this.keys = keys;
-      this.implicit = implicit;
-   }
-
-   public void attachGlobalTransaction(GlobalTransaction gtx) {
-      globalTx = gtx;
-   }
-
-   public Collection getKeys() {
-      return keys;
-   }
-   
-   public boolean isImplicit() {
-      return implicit;
-   }
-   
-   public boolean isExplicit(){
-      return !isImplicit();
-   }
-
-   public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
-      return visitor.visitLockControlCommand((TxInvocationContext) ctx, this);
-   }
-
-   @Override
-   public Object perform(InvocationContext ignored) throws Throwable {
-      if (ignored != null)
-         throw new IllegalStateException("Expected null context!");
-      
-      RemoteTxInvocationContext ctxt = icc.createRemoteTxInvocationContext();
-      RemoteTransaction transaction = txTable.getRemoteTransaction(globalTx);
-
-      boolean remoteTxinitiated = transaction != null;
-      if (!remoteTxinitiated) {
-         //create bogus modifications (we do not know modifications ahead of time)
-         //todo - make a create method that does not require creation of a WriteCommand[]
-         transaction = txTable.createRemoteTransaction(globalTx, new WriteCommand[]{});
-      }
-      ctxt.setRemoteTransaction(transaction);
-      return invoker.invoke(ctxt, this);
-   }
-
-   public byte getCommandId() {
-      return COMMAND_ID;
-   }
-
-   public Object[] getParameters() {
-      return new Object[]{globalTx, cacheName, keys};
-   }
-
-   public void setParameters(int commandId, Object[] args) {
-      if (commandId != COMMAND_ID)
-         throw new IllegalStateException("Unusupported command id:" + commandId);
-      globalTx = (GlobalTransaction) args[0];
-      cacheName = (String) args[1];
-      keys = (Collection) args[2];
-   }
-
-   public boolean equals(Object o) {
-      if (this == o)
-         return true;
-      if (o == null || getClass() != o.getClass())
-         return false;
-
-      LockControlCommand that = (LockControlCommand) o;
-      if (!super.equals(that))
-         return false;
-      return keys.equals(that.getKeys());
-   }
-
-   public int hashCode() {
-      int result = super.hashCode();
-      return 31 * result + (keys != null ? keys.hashCode() : 0);
-   }
-
-   @Override
-   public String toString() {
-      return "LockControlCommand{" +
-            "gtx=" + globalTx +
-            ", cacheName='" + cacheName +
-            ", implicit='" + implicit +
-            ", keys=" + keys + '}';
-   }
-}

Modified: trunk/core/src/main/java/org/infinispan/commands/RemoteCommandFactory.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/RemoteCommandFactory.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/commands/RemoteCommandFactory.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -1,6 +1,7 @@
 package org.infinispan.commands;
 
 import org.infinispan.CacheException;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.control.StateTransferControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.remote.ClusteredGetCommand;

Modified: trunk/core/src/main/java/org/infinispan/commands/Visitor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/Visitor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/commands/Visitor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands;
 
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.read.EntrySetCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.read.KeySetCommand;
@@ -65,11 +66,11 @@
    Object visitSizeCommand(InvocationContext ctx, SizeCommand command) throws Throwable;
 
    Object visitGetKeyValueCommand(InvocationContext ctx, GetKeyValueCommand command) throws Throwable;
-   
+
    Object visitKeySetCommand(InvocationContext ctx, KeySetCommand command) throws Throwable;
-   
+
    Object visitValuesCommand(InvocationContext ctx, ValuesCommand command) throws Throwable;
-   
+
    Object visitEntrySetCommand(InvocationContext ctx, EntrySetCommand command) throws Throwable;
 
    // tx commands
@@ -81,7 +82,7 @@
    Object visitCommitCommand(TxInvocationContext ctx, CommitCommand command) throws Throwable;
 
    Object visitInvalidateCommand(InvocationContext ctx, InvalidateCommand invalidateCommand) throws Throwable;
-   
+
    // locking commands
    Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable;
 }
\ No newline at end of file

Copied: trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java (from rev 602, trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java)
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -0,0 +1,145 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.infinispan.commands.control;
+
+import org.infinispan.commands.Visitor;
+import org.infinispan.commands.tx.AbstractTransactionBoundaryCommand;
+import org.infinispan.commands.write.WriteCommand;
+import org.infinispan.context.InvocationContext;
+import org.infinispan.context.impl.RemoteTxInvocationContext;
+import org.infinispan.context.impl.TxInvocationContext;
+import org.infinispan.marshall.Ids;
+import org.infinispan.marshall.Marshallable;
+import org.infinispan.marshall.exts.ReplicableCommandExternalizer;
+import org.infinispan.transaction.xa.GlobalTransaction;
+import org.infinispan.transaction.xa.RemoteTransaction;
+
+import java.util.Collection;
+
+/**
+ * LockControlCommand is a command that enables distributed locking across infinispan nodes.
+ * <p/>
+ * For more details refer to: https://jira.jboss.org/jira/browse/ISPN-70 https://jira.jboss.org/jira/browse/ISPN-48
+ *
+ * @author Vladimir Blagojevic (<a href="mailto:vblagoje at redhat.com">vblagoje at redhat.com</a>)
+ * @param
+ * @since 4.0
+ */
+ at Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.LOCK_CONTROL_COMMAND)
+public class LockControlCommand extends AbstractTransactionBoundaryCommand {
+   public static final int COMMAND_ID = 3;
+   private Collection keys;
+   private boolean implicit = false;
+
+   public LockControlCommand() {
+   }
+
+   public LockControlCommand(Collection keys, String cacheName) {
+      this(keys, cacheName, false);
+   }
+
+   public LockControlCommand(Collection keys, String cacheName, boolean implicit) {
+      this.cacheName = cacheName;
+      this.keys = keys;
+      this.implicit = implicit;
+   }
+
+   public void attachGlobalTransaction(GlobalTransaction gtx) {
+      globalTx = gtx;
+   }
+
+   public Collection getKeys() {
+      return keys;
+   }
+
+   public boolean isImplicit() {
+      return implicit;
+   }
+
+   public boolean isExplicit() {
+      return !isImplicit();
+   }
+
+   public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
+      return visitor.visitLockControlCommand((TxInvocationContext) ctx, this);
+   }
+
+   @Override
+   public Object perform(InvocationContext ignored) throws Throwable {
+      if (ignored != null)
+         throw new IllegalStateException("Expected null context!");
+
+      RemoteTxInvocationContext ctxt = icc.createRemoteTxInvocationContext();
+      RemoteTransaction transaction = txTable.getRemoteTransaction(globalTx);
+
+      boolean remoteTxinitiated = transaction != null;
+      if (!remoteTxinitiated) {
+         //create bogus modifications (we do not know modifications ahead of time)
+         //todo - make a create method that does not require creation of a WriteCommand[]
+         transaction = txTable.createRemoteTransaction(globalTx, new WriteCommand[]{});
+      }
+      ctxt.setRemoteTransaction(transaction);
+      return invoker.invoke(ctxt, this);
+   }
+
+   public byte getCommandId() {
+      return COMMAND_ID;
+   }
+
+   public Object[] getParameters() {
+      return new Object[]{globalTx, cacheName, keys};
+   }
+
+   public void setParameters(int commandId, Object[] args) {
+      if (commandId != COMMAND_ID)
+         throw new IllegalStateException("Unusupported command id:" + commandId);
+      globalTx = (GlobalTransaction) args[0];
+      cacheName = (String) args[1];
+      keys = (Collection) args[2];
+   }
+
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+
+      LockControlCommand that = (LockControlCommand) o;
+      if (!super.equals(that))
+         return false;
+      return keys.equals(that.getKeys());
+   }
+
+   public int hashCode() {
+      int result = super.hashCode();
+      return 31 * result + (keys != null ? keys.hashCode() : 0);
+   }
+
+   @Override
+   public String toString() {
+      return "LockControlCommand{" +
+            "gtx=" + globalTx +
+            ", cacheName='" + cacheName +
+            ", implicit='" + implicit +
+            ", keys=" + keys + '}';
+   }
+}

Modified: trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -22,8 +22,8 @@
 package org.infinispan.interceptors;
 
 
-import org.infinispan.commands.LockControlCommand;
 import org.infinispan.commands.VisitableCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.tx.CommitCommand;
 import org.infinispan.commands.tx.PrepareCommand;
 import org.infinispan.commands.tx.RollbackCommand;
@@ -57,7 +57,7 @@
       if (trace) log.trace("Suppressing invocation of method handleRollbackCommand.");
       return null;
    }
-   
+
    @Override
    public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand c) throws Throwable {
       if (trace) log.trace("Suppressing invocation of method handleLockControlCommand.");

Modified: trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -1,7 +1,7 @@
 package org.infinispan.interceptors;
 
 import org.infinispan.commands.CommandsFactory;
-import org.infinispan.commands.LockControlCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.tx.CommitCommand;
 import org.infinispan.commands.tx.PrepareCommand;
@@ -166,7 +166,7 @@
       return handleWriteCommand(ctx, command,
                                 new SingleKeyRecipientGenerator(command.getKey()));
    }
-   
+
    public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable {
       if (ctx.isOriginLocal()) {
          List<Address> recipients = new ArrayList<Address>(ctx.getTransactionParticipants());

Modified: trunk/core/src/main/java/org/infinispan/interceptors/ImplicitEagerLockingInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/ImplicitEagerLockingInterceptor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/interceptors/ImplicitEagerLockingInterceptor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -1,11 +1,7 @@
 package org.infinispan.interceptors;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-
 import org.infinispan.commands.CommandsFactory;
-import org.infinispan.commands.LockControlCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.write.EvictCommand;
 import org.infinispan.commands.write.InvalidateCommand;
 import org.infinispan.commands.write.PutKeyValueCommand;
@@ -16,15 +12,16 @@
 import org.infinispan.factories.annotations.Inject;
 import org.infinispan.interceptors.base.CommandInterceptor;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+
 /**
- * Interceptor in charge of eager, implicit locking of cache keys across cluster within
- * transactional context
- * 
- * <p> 
- * For more details refer to:
- * https://jira.jboss.org/jira/browse/ISPN-70
- * https://jira.jboss.org/jira/browse/ISPN-48
- * 
+ * Interceptor in charge of eager, implicit locking of cache keys across cluster within transactional context
+ * <p/>
+ * <p/>
+ * For more details refer to: https://jira.jboss.org/jira/browse/ISPN-70 https://jira.jboss.org/jira/browse/ISPN-48
+ *
  * @author <a href="mailto:vblagoje at redhat.com">Vladimir Blagojevic (vblagoje at redhat.com)</a>
  * @since 4.0
  */
@@ -39,7 +36,7 @@
 
    @Override
    public Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command)
-            throws Throwable {
+         throws Throwable {
       boolean localTxScope = ctx.isInTxScope() & ctx.isOriginLocal();
       if (localTxScope) {
          lockEagerly(ctx, Collections.singleton(command.getKey()));
@@ -58,7 +55,7 @@
 
    @Override
    public Object visitReplaceCommand(InvocationContext ctx, ReplaceCommand command)
-            throws Throwable {
+         throws Throwable {
       boolean localTxScope = ctx.isInTxScope() & ctx.isOriginLocal();
       if (localTxScope) {
          lockEagerly(ctx, Collections.singleton(command.getKey()));
@@ -86,7 +83,7 @@
 
    @Override
    public Object visitInvalidateCommand(InvocationContext ctx, InvalidateCommand command)
-            throws Throwable {
+         throws Throwable {
       boolean localTxScope = ctx.isInTxScope() & ctx.isOriginLocal();
       if (localTxScope) {
          lockEagerly(ctx, Collections.singleton(command.getKey()));

Modified: trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -21,7 +21,7 @@
  */
 package org.infinispan.interceptors;
 
-import org.infinispan.commands.LockControlCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.tx.CommitCommand;
 import org.infinispan.commands.tx.PrepareCommand;
@@ -138,13 +138,13 @@
             c.attachGlobalTransaction((GlobalTransaction) ctx.getLockOwner());
          }
          for (Object key : c.getKeys()) {
-            if(c.isImplicit() && localTxScope && !lockManager.ownsLock(key,ctx.getLockOwner())){
+            if (c.isImplicit() && localTxScope && !lockManager.ownsLock(key, ctx.getLockOwner())) {
                //if even one key is unlocked we need to invoke this lock command cluster wide... 
                shouldInvokeOnCluster = true;
             }
             entryFactory.wrapEntryForWriting(ctx, key, true, false, false, false);
          }
-         if(shouldInvokeOnCluster || c.isExplicit())
+         if (shouldInvokeOnCluster || c.isExplicit())
             return invokeNextInterceptor(ctx, c);
          else
             return null;
@@ -152,7 +152,7 @@
          if (ctx.isInTxScope()) {
             doAfterCall(ctx);
          } else {
-            throw new IllegalStateException( "Attempting to lock but there is no transactional context in scope. " + ctx);
+            throw new IllegalStateException("Attempting to lock but there is no transactional context in scope. " + ctx);
          }
       }
    }

Modified: trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -1,7 +1,7 @@
 package org.infinispan.interceptors;
 
-import org.infinispan.commands.LockControlCommand;
 import org.infinispan.commands.VisitableCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.tx.CommitCommand;
 import org.infinispan.commands.tx.PrepareCommand;

Modified: trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -21,7 +21,7 @@
  */
 package org.infinispan.interceptors.base;
 
-import org.infinispan.commands.LockControlCommand;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.context.Flag;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.context.impl.TxInvocationContext;
@@ -51,7 +51,7 @@
    public void init() {
       defaultSynchronous = configuration.getCacheMode().isSynchronous();
    }
-   
+
    @Override
    public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable {
       Object retVal = invokeNextInterceptor(ctx, command);

Modified: trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java	2009-07-22 10:31:37 UTC (rev 603)
+++ trunk/core/src/main/java/org/infinispan/marshall/jboss/ConstantObjectTable.java	2009-07-22 11:07:15 UTC (rev 604)
@@ -23,8 +23,8 @@
 
 import org.infinispan.CacheException;
 import org.infinispan.atomic.AtomicHashMap;
-import org.infinispan.commands.LockControlCommand;
 import org.infinispan.commands.RemoteCommandFactory;
+import org.infinispan.commands.control.LockControlCommand;
 import org.infinispan.commands.control.StateTransferControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.remote.ClusteredGetCommand;
@@ -87,10 +87,9 @@
 import java.util.TreeSet;
 
 /**
- * Constant ObjectTable that marshalls constant instances regardless of whether 
- * these are generic objects such as UnsuccessfulResponse.INSTANCE, or home grown 
- * Externalizer implementations. In both cases, this is a hugely efficient way of 
- * sending around constant singleton objects. 
+ * Constant ObjectTable that marshalls constant instances regardless of whether these are generic objects such as
+ * UnsuccessfulResponse.INSTANCE, or home grown Externalizer implementations. In both cases, this is a hugely efficient
+ * way of sending around constant singleton objects.
  *
  * @author Galder Zamarreño
  * @since 4.0
@@ -108,14 +107,14 @@
       JDK_EXTERNALIZERS.put(HashSet.class.getName(), SetExternalizer.class.getName());
       JDK_EXTERNALIZERS.put(TreeSet.class.getName(), SetExternalizer.class.getName());
       JDK_EXTERNALIZERS.put("java.util.Collections$SingletonList", SingletonListExternalizer.class.getName());
-      
+
       MARSHALLABLES.add(GlobalTransaction.class.getName());
       MARSHALLABLES.add(DeadlockDetectingGlobalTransaction.class.getName());
       MARSHALLABLES.add(JGroupsAddress.class.getName());
       MARSHALLABLES.add("org.infinispan.util.Immutables$ImmutableMapWrapper");
       MARSHALLABLES.add(MarshalledValue.class.getName());
       MARSHALLABLES.add(FastCopyHashMap.class.getName());
-      
+
       MARSHALLABLES.add("org.infinispan.transaction.TransactionLog$LogEntry");
       MARSHALLABLES.add(ExtendedResponse.class.getName());
       MARSHALLABLES.add(SuccessfulResponse.class.getName());
@@ -143,28 +142,32 @@
       MARSHALLABLES.add(ImmortalCacheEntry.class.getName());
       MARSHALLABLES.add(MortalCacheEntry.class.getName());
       MARSHALLABLES.add(TransientCacheEntry.class.getName());
-      MARSHALLABLES.add(TransientMortalCacheEntry.class.getName());    
+      MARSHALLABLES.add(TransientMortalCacheEntry.class.getName());
       MARSHALLABLES.add(ImmortalCacheValue.class.getName());
       MARSHALLABLES.add(MortalCacheValue.class.getName());
       MARSHALLABLES.add(TransientCacheValue.class.getName());
       MARSHALLABLES.add(TransientMortalCacheValue.class.getName());
-      
+
       MARSHALLABLES.add(AtomicHashMap.class.getName());
       MARSHALLABLES.add(Bucket.class.getName());
-      
+
       MARSHALLABLES.add("org.infinispan.tree.NodeKey");
       MARSHALLABLES.add("org.infinispan.tree.Fqn");
    }
 
-   /** Contains mapping of classes to their corresponding Externalizer classes via ExternalizerAdapter instances. */
+   /**
+    * Contains mapping of classes to their corresponding Externalizer classes via ExternalizerAdapter instances.
+    */
    private final Map<Class<?>, ExternalizerAdapter> writers = new IdentityHashMap<Class<?>, ExternalizerAdapter>();
 
-   /** Contains mapping of ids to their corresponding Externalizer classes via ExternalizerAdapter instances. */
+   /**
+    * Contains mapping of ids to their corresponding Externalizer classes via ExternalizerAdapter instances.
+    */
    private final Map<Integer, ExternalizerAdapter> readers = new HashMap<Integer, ExternalizerAdapter>();
 
    public void start(RemoteCommandFactory cmdFactory, org.infinispan.marshall.Marshaller ispnMarshaller) {
       HashSet<Integer> ids = new HashSet<Integer>();
-      
+
       try {
          for (Map.Entry<String, String> entry : JDK_EXTERNALIZERS.entrySet()) {
             try {
@@ -174,13 +177,14 @@
                int id = marshallable.id();
                ids.add(id);
                ExternalizerAdapter adapter = new ExternalizerAdapter(id, ext);
-               writers.put(clazz, adapter);               
+               writers.put(clazz, adapter);
                readers.put(id, adapter);
             } catch (ClassNotFoundException e) {
-               if (log.isDebugEnabled()) log.debug("Unable to load class (ignore if class belonging to a module not in use): {0}", e.getMessage());
+               if (log.isDebugEnabled())
+                  log.debug("Unable to load class (ignore if class belonging to a module not in use): {0}", e.getMessage());
             }
          }
-         
+
          for (String marshallableClass : MARSHALLABLES) {
             try {
                Class clazz = Util.loadClass(marshallableClass);
@@ -188,27 +192,29 @@
                if (marshallable != null && !marshallable.externalizer().equals(Externalizer.class)) {
                   int id = marshallable.id();
                   Externalizer ext = (Externalizer) Util.getInstance(marshallable.externalizer());
-                  if (!ids.add(id)) throw new CacheException("Duplicat id found! id=" + id + " in " + ext.getClass().getName() + " is shared by another marshallable class.");
+                  if (!ids.add(id))
+                     throw new CacheException("Duplicat id found! id=" + id + " in " + ext.getClass().getName() + " is shared by another marshallable class.");
                   if (ext instanceof ReplicableCommandExternalizer) {
                      ((ReplicableCommandExternalizer) ext).inject(cmdFactory);
                   }
                   if (ext instanceof MarshalledValue.Externalizer) {
                      ((MarshalledValue.Externalizer) ext).inject(ispnMarshaller);
                   }
-                  
+
                   ExternalizerAdapter adapter = new ExternalizerAdapter(id, ext);
                   writers.put(clazz, adapter);
                   readers.put(id, adapter);
-               }               
+               }
             } catch (ClassNotFoundException e) {
-               if (log.isDebugEnabled()) log.debug("Unable to load class (ignore if class belonging to a module not in use): {0}", e.getMessage());
+               if (log.isDebugEnabled())
+                  log.debug("Unable to load class (ignore if class belonging to a module not in use): {0}", e.getMessage());
             }
          }
       } catch (Exception e) {
          throw new CacheException("Unable to instantiate Externalizer class", e);
       }
-      
-      
+
+
    }
 
    public void stop() {
@@ -217,23 +223,23 @@
    }
 
    public Writer getObjectWriter(Object o) throws IOException {
-      return writers.get(o.getClass());      
+      return writers.get(o.getClass());
    }
 
    public Object readObject(Unmarshaller input) throws IOException, ClassNotFoundException {
       ExternalizerAdapter adapter = (ExternalizerAdapter) readers.get(input.readUnsignedByte());
       return adapter.readObject(input);
    }
-     
+
    static class ExternalizerAdapter implements Writer {
       final int id;
       final Externalizer externalizer;
-      
+
       ExternalizerAdapter(int id, Externalizer externalizer) {
          this.id = id;
          this.externalizer = externalizer;
       }
-      
+
       public Object readObject(Unmarshaller input) throws IOException, ClassNotFoundException {
          return externalizer.readObject(input);
       }
@@ -242,5 +248,5 @@
          output.write(id);
          externalizer.writeObject(output, object);
       }
-   }   
+   }
 }



More information about the infinispan-commits mailing list