[infinispan-commits] Infinispan SVN: r253 - in trunk/core/src/main/java/org/infinispan: commands and 1 other directory.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Tue May 12 04:42:40 EDT 2009
Author: vblagojevic at jboss.com
Date: 2009-05-12 04:42:40 -0400 (Tue, 12 May 2009)
New Revision: 253
Modified:
trunk/core/src/main/java/org/infinispan/CacheDelegate.java
trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
Log:
[ISPN-48] - Introduce lock() and unlock() API methods
work in progress
Modified: trunk/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2009-05-12 02:58:05 UTC (rev 252)
+++ trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2009-05-12 08:42:40 UTC (rev 253)
@@ -26,6 +26,7 @@
import org.infinispan.atomic.atomichashmap.AtomicHashMap;
import org.infinispan.batch.BatchContainer;
import org.infinispan.commands.CommandsFactory;
+import org.infinispan.commands.LockControlCommand;
import org.infinispan.commands.read.GetKeyValueCommand;
import org.infinispan.commands.read.SizeCommand;
import org.infinispan.commands.write.ClearCommand;
@@ -60,6 +61,8 @@
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -237,21 +240,35 @@
}
public void lock(K key, boolean eager) {
- // TODO: Customise this generated block
+ if (key == null)
+ throw new IllegalArgumentException("Cannot lock null key");
+ List<K> keys = new ArrayList<K>(1);
+ keys.add(key);
+ lock(keys, eager);
}
public void lock(Collection<? extends K> keys, boolean eager) {
- // TODO: Customise this generated block
+ if (keys == null || keys.isEmpty())
+ throw new IllegalArgumentException("Cannot lock empty list of keys");
+ LockControlCommand command = commandsFactory.buildLockControlCommand(keys, true);
+ invoker.invoke(getInvocationContext(), command);
}
public void unlock(K key) {
- // TODO: Customise this generated block
+ if (key == null)
+ throw new IllegalArgumentException("Cannot unlock null key");
+ List<K> keys = new ArrayList<K>(1);
+ keys.add(key);
+ unlock(keys);
}
public void unlock(Collection<? extends K> keys) {
- // TODO: Customise this generated block
+ if (keys == null || keys.isEmpty())
+ throw new IllegalArgumentException("Cannot unlock empty list of keys");
+ LockControlCommand command = commandsFactory.buildLockControlCommand(keys, false);
+ invoker.invoke(getInvocationContext(), command);
}
-
+
public void start() {
componentRegistry.start();
defaultLifespan = config.getExpirationLifespan();
Modified: trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java 2009-05-12 02:58:05 UTC (rev 252)
+++ trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java 2009-05-12 08:42:40 UTC (rev 253)
@@ -23,51 +23,66 @@
import java.util.Collection;
-import org.infinispan.commands.VisitableCommand;
-import org.infinispan.commands.Visitor;
+import org.infinispan.commands.tx.AbstractTransactionBoundaryCommand;
import org.infinispan.context.InvocationContext;
/**
*
- *
+ *
* @author Vladimir Blagojevic (<a href="mailto:vblagoje at redhat.com">vblagoje at redhat.com</a>)
- * @param
+ * @param
* @since 4.0
*/
-public class LockControlCommand implements VisitableCommand {
+public class LockControlCommand extends AbstractTransactionBoundaryCommand {
private final Collection keys;
private final boolean lock;
- public LockControlCommand(Collection keys,boolean lock) {
- this.keys=keys;
+ public LockControlCommand(Collection keys, boolean lock) {
+ this.keys = keys;
this.lock = lock;
}
+ public Collection getKeys() {
+ return keys;
+ }
+
+ public boolean isLock() {
+ return lock;
+ }
+
+ public boolean isUnlock() {
+ return !isLock();
+ }
+
public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
return visitor.visitLockControlCommand(ctx, this);
}
- public Boolean perform(InvocationContext ctx) throws Throwable {
- return true;
- }
-
public byte getCommandId() {
- return 0; // no-op
+ return 0; // no-op
}
- public Object[] getParameters() {
- return new Object[0]; // no-op
+ 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 void setParameters(int commandId, Object[] parameters) {
- // no-op
+ public int hashCode() {
+ int result = super.hashCode();
+ result = 31 * result + (keys != null ? keys.hashCode() : 0);
+ result = 31 * result + (lock ? 1 : 0);
+ return result;
}
@Override
public String toString() {
- return "LockControlCommand{" +
- "lock=" + lock +
- "keys=" + keys +
- '}';
+ return "LockControlCommand{" + "lock=" + lock + "keys=" + keys + '}';
}
}
More information about the infinispan-commits
mailing list