[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