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

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Mar 10 12:28:06 EST 2010


Author: manik.surtani at jboss.com
Date: 2010-03-10 12:28:06 -0500 (Wed, 10 Mar 2010)
New Revision: 1590

Added:
   trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java
Modified:
   trunk/core/src/main/java/org/infinispan/commands/VisitableCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/AbstractDataCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
   trunk/core/src/main/java/org/infinispan/commands/remote/BaseRpcInvokingCommand.java
   trunk/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java
   trunk/core/src/main/java/org/infinispan/commands/write/ClearCommand.java
   trunk/core/src/main/java/org/infinispan/commands/write/PutMapCommand.java
Log:
[ISPN-369] (InvalidateL1Command should not be invoked if the keys are local)

Modified: trunk/core/src/main/java/org/infinispan/commands/VisitableCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/VisitableCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/VisitableCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -40,4 +40,10 @@
     * @throws Throwable in the event of problems
     */
    Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable;
+
+   /**
+    * Used by the InboundInvocationHandler to determine whether the command should be invoked or not.
+    * @return true if the command should be invoked, false otherwise.
+    */
+   boolean shouldInvoke(InvocationContext ctx);   
 }
\ No newline at end of file

Modified: trunk/core/src/main/java/org/infinispan/commands/read/AbstractDataCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/AbstractDataCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/read/AbstractDataCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -22,6 +22,7 @@
 package org.infinispan.commands.read;
 
 import org.infinispan.commands.DataCommand;
+import org.infinispan.context.InvocationContext;
 
 /**
  * @author Mircea.Markus at jboss.com
@@ -54,6 +55,10 @@
       return new Object[]{key};
    }
 
+   public boolean shouldInvoke(InvocationContext ctx) {
+      return true;
+   }
+
    public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;

Added: trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -0,0 +1,30 @@
+package org.infinispan.commands.read;
+
+import org.infinispan.commands.LocalCommand;
+import org.infinispan.context.InvocationContext;
+
+/**
+ * Abstract class
+ *
+ * @author Manik Surtani
+ * @since 4.1
+ */
+public class AbstractLocalCommand implements LocalCommand {
+   private static final Object[] EMPTY_ARRAY = new Object[0];
+   
+   public byte getCommandId() {
+      return 0;  // no-op
+   }
+
+   public Object[] getParameters() {
+      return EMPTY_ARRAY;  // no-op
+   }
+
+   public void setParameters(int commandId, Object[] parameters) {
+      // no-op
+   }
+
+   public boolean shouldInvoke(InvocationContext ctx) {
+      return false;
+   }
+}


Property changes on: trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -36,8 +36,7 @@
  * @author Galder Zamarreño
  * @since 4.0
  */
-public class EntrySetCommand implements VisitableCommand, LocalCommand {
-   private static final Object[] EMPTY_ARRAY = new Object[0];
+public class EntrySetCommand extends AbstractLocalCommand implements VisitableCommand {   
    private final DataContainer container;
 
    public EntrySetCommand(DataContainer container) {
@@ -52,18 +51,6 @@
       return Immutables.immutableSetWrap(container.entrySet());
    }
 
-   public byte getCommandId() {
-      return 0;  // no-op
-   }
-
-   public Object[] getParameters() {
-      return EMPTY_ARRAY;  // no-op
-   }
-
-   public void setParameters(int commandId, Object[] parameters) {
-      // no-op
-   }
-
    @Override
    public String toString() {
       return "EntrySetCommand{" +

Modified: trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -36,9 +36,8 @@
  * @author Galder Zamarreño
  * @since 4.0
  */
-public class KeySetCommand implements VisitableCommand, LocalCommand {
+public class KeySetCommand extends AbstractLocalCommand implements VisitableCommand {
    private final DataContainer container;
-   private static final Object[] EMPTY_ARRAY = new Object[0];
 
    public KeySetCommand(DataContainer container) {
       this.container = container;
@@ -52,23 +51,10 @@
       return Immutables.immutableSetWrap(container.keySet());
    }
 
-   public byte getCommandId() {
-      return 0;  // no-op
-   }
-
-   public Object[] getParameters() {
-      return EMPTY_ARRAY;  // no-op
-   }
-
-   public void setParameters(int commandId, Object[] parameters) {
-      // no-op
-   }
-
    @Override
    public String toString() {
       return "KeySetCommand{" +
             "set=" + container.keySet() +
             '}';
    }
-
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -33,9 +33,8 @@
  * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
  * @since 4.0
  */
-public class SizeCommand implements VisitableCommand, LocalCommand {
+public class SizeCommand extends AbstractLocalCommand implements VisitableCommand {
    private final DataContainer container;
-   private static final Object[] EMPTY_ARRAY = new Object[0];
 
    public SizeCommand(DataContainer container) {
       this.container = container;
@@ -49,18 +48,6 @@
       return container.size();
    }
 
-   public byte getCommandId() {
-      return 0;  // no-op
-   }
-
-   public Object[] getParameters() {
-      return EMPTY_ARRAY;  // no-op
-   }
-
-   public void setParameters(int commandId, Object[] parameters) {
-      // no-op
-   }
-
    @Override
    public String toString() {
       return "SizeCommand{" +

Modified: trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -36,7 +36,7 @@
  * @author Galder Zamarreño
  * @since 4.0
  */
-public class ValuesCommand implements VisitableCommand, LocalCommand {
+public class ValuesCommand extends AbstractLocalCommand implements VisitableCommand {
    private final DataContainer container;
    private static final Object[] EMPTY_ARRAY = new Object[0];
 
@@ -52,23 +52,10 @@
       return Immutables.immutableCollectionWrap(container.values());
    }
 
-   public byte getCommandId() {
-      return 0;  // no-op
-   }
-
-   public Object[] getParameters() {
-      return EMPTY_ARRAY;  // no-op
-   }
-
-   public void setParameters(int commandId, Object[] parameters) {
-      // no-op
-   }
-
    @Override
    public String toString() {
       return "ValuesCommand{" +
             "values=" + container.values() +
             '}';
    }
-
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/remote/BaseRpcInvokingCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/remote/BaseRpcInvokingCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/remote/BaseRpcInvokingCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -36,9 +36,14 @@
    protected final Object processVisitableCommand(ReplicableCommand cacheCommand) throws Throwable {
       if (cacheCommand instanceof VisitableCommand) {
          InvocationContext ctx = icc.createRemoteInvocationContext();
-         if (trace)
-            log.trace("Invoking command " + cacheCommand + ", with originLocal flag set to " + ctx.isOriginLocal() + ".");
-         return interceptorChain.invoke(ctx, (VisitableCommand) cacheCommand);
+         VisitableCommand vc = (VisitableCommand) cacheCommand;
+         if (vc.shouldInvoke(ctx)) {
+            if (trace) log.trace("Invoking command " + cacheCommand + ", with originLocal flag set to " + ctx.isOriginLocal() + ".");
+            return interceptorChain.invoke(ctx, vc);
+         } else {
+            if (trace) log.trace("Not invoking command " + cacheCommand + " since shouldInvoke() returned false with context " + ctx);
+            return null;
+         }
          // we only need to return values for a set of remote calls; not every call.
       } else {
          throw new RuntimeException("Do we still need to deal with non-visitable commands? (" + cacheCommand.getClass().getName() + ")");

Modified: trunk/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -94,6 +94,10 @@
       cacheName = (String) args[1];
    }
 
+   public boolean shouldInvoke(InvocationContext ctx) {
+      return true;
+   }
+
    public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;

Modified: trunk/core/src/main/java/org/infinispan/commands/write/ClearCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/write/ClearCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/write/ClearCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -84,6 +84,10 @@
       if (commandId != COMMAND_ID) throw new IllegalStateException("Invalid command id");
    }
 
+   public boolean shouldInvoke(InvocationContext ctx) {
+      return true;
+   }
+
    @Override
    public String toString() {
       return "ClearCommand";

Modified: trunk/core/src/main/java/org/infinispan/commands/write/PutMapCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/write/PutMapCommand.java	2010-03-10 17:06:20 UTC (rev 1589)
+++ trunk/core/src/main/java/org/infinispan/commands/write/PutMapCommand.java	2010-03-10 17:28:06 UTC (rev 1590)
@@ -132,6 +132,10 @@
             '}';
    }
 
+   public boolean shouldInvoke(InvocationContext ctx) {
+      return true;
+   }   
+
    public boolean isSuccessful() {
       return true;
    }



More information about the infinispan-commits mailing list