[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