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

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


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

Added:
   trunk/core/src/main/java/org/infinispan/commands/LocalCommand.java
Modified:
   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/write/EvictCommand.java
   trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java
Log:
Introduced a LocalCommand marker interface to denote that certain commands are not meant for replication.  Helps with the test and to detect invalid command IDs such as 0 and -1.

Added: trunk/core/src/main/java/org/infinispan/commands/LocalCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/LocalCommand.java	                        (rev 0)
+++ trunk/core/src/main/java/org/infinispan/commands/LocalCommand.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -0,0 +1,11 @@
+package org.infinispan.commands;
+
+/**
+ * This is a marker interface to indicate that such commands will never be replicated and hence will not return any
+ * valid command IDs.
+ *
+ * @author Manik Surtani
+ * @since 4.0
+ */
+public interface LocalCommand {
+}


Property changes on: trunk/core/src/main/java/org/infinispan/commands/LocalCommand.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	2009-07-22 11:20:44 UTC (rev 605)
+++ trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands.read;
 
+import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
@@ -35,13 +36,9 @@
  * @author Galder Zamarreño
  * @since 4.0
  */
-public class EntrySetCommand implements VisitableCommand {
+public class EntrySetCommand implements VisitableCommand, LocalCommand {
    private final DataContainer container;
 
-   public EntrySetCommand() {
-      container = null;
-   }
-
    public EntrySetCommand(DataContainer container) {
       this.container = container;
    }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2009-07-22 11:20:44 UTC (rev 605)
+++ trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands.read;
 
+import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
@@ -35,13 +36,9 @@
  * @author Galder Zamarreño
  * @since 4.0
  */
-public class KeySetCommand implements VisitableCommand {
+public class KeySetCommand implements VisitableCommand, LocalCommand {
    private final DataContainer container;
 
-   public KeySetCommand() {
-      container = null;
-   }
-
    public KeySetCommand(DataContainer container) {
       this.container = container;
    }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2009-07-22 11:20:44 UTC (rev 605)
+++ trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands.read;
 
+import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
@@ -32,12 +33,9 @@
  * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
  * @since 4.0
  */
-public class SizeCommand implements VisitableCommand {
-   private DataContainer container;
+public class SizeCommand implements VisitableCommand, LocalCommand {
+   private final DataContainer container;
 
-   public SizeCommand() {
-   }
-
    public SizeCommand(DataContainer container) {
       this.container = container;
    }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2009-07-22 11:20:44 UTC (rev 605)
+++ trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands.read;
 
+import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
@@ -35,13 +36,9 @@
  * @author Galder Zamarreño
  * @since 4.0
  */
-public class ValuesCommand implements VisitableCommand {
+public class ValuesCommand implements VisitableCommand, LocalCommand {
    private final DataContainer container;
 
-   public ValuesCommand() {
-      container = null;
-   }
-
    public ValuesCommand(DataContainer container) {
       this.container = container;
    }

Modified: trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java	2009-07-22 11:20:44 UTC (rev 605)
+++ trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.commands.write;
 
+import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.marshall.Ids;
@@ -33,11 +34,8 @@
  * @since 4.0
  */
 @Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.EVICT_COMMAND)
-public class EvictCommand extends RemoveCommand {
+public class EvictCommand extends RemoveCommand implements LocalCommand {
 
-   public EvictCommand() {
-   }
-
    public EvictCommand(Object key, CacheNotifier notifier) {
       this.key = key;
       this.notifier = notifier;

Modified: trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java	2009-07-22 11:20:44 UTC (rev 605)
+++ trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java	2009-07-22 11:34:36 UTC (rev 606)
@@ -4,10 +4,8 @@
 import org.testng.annotations.Test;
 
 import java.lang.reflect.Modifier;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
@@ -16,18 +14,15 @@
    public void testCommandIdUniqueness() throws Exception {
       List<Class<?>> commands = ClassFinder.isAssignableFrom(ReplicableCommand.class);
       SortedMap<Byte, String> cmdIds = new TreeMap<Byte, String>();
-      Set<String> nonReplicableCommands = new HashSet<String>();
 
       for (Class<?> c : commands) {
-         if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers())) {
+         if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers()) && !LocalCommand.class.isAssignableFrom(c)) {
             System.out.println("Testing " + c.getSimpleName());
             ReplicableCommand cmd = (ReplicableCommand) c.newInstance();
             byte b = cmd.getCommandId();
+            assert b > 0 : "Command " + c.getSimpleName() + " has a command id of " + b + " and does not implement LocalCommand!";
             assert !cmdIds.containsKey(b) : "Command ID [" + b + "] is duplicated in " + c.getSimpleName() + " and " + cmdIds.get(b);
-            if (b <= 0)
-               nonReplicableCommands.add(c.getSimpleName());
-            else
-               cmdIds.put(b, c.getSimpleName());
+            cmdIds.put(b, c.getSimpleName());
          }
       }
 
@@ -38,7 +33,6 @@
          assert e.getKey() == i : "Expected ID " + i + " for command " + e.getValue() + " but was " + e.getKey();
       }
 
-      System.out.println("Non-replicable commands: " + nonReplicableCommands);
       System.out.println("Next available ID is " + (i + 1));
    }
 }



More information about the infinispan-commits mailing list