public class PutMapCommand extends AbstractTopologyAffectedCommand implements WriteCommand, MetadataAwareCommand, RemoteLockCommand
Note: In scattered caches, push state transfer uses PutMapCommand but wraps the values in
InternalCacheValue instances in order to preserve the original metadata and timestamps.
VisitableCommand.LoadType| Modifier and Type | Field and Description |
|---|---|
static byte |
COMMAND_ID |
| Constructor and Description |
|---|
PutMapCommand() |
PutMapCommand(Map<?,?> map,
Metadata metadata,
long flagsBitSet,
CommandInvocationId commandInvocationId) |
PutMapCommand(PutMapCommand command) |
| Modifier and Type | Method and Description |
|---|---|
Object |
acceptVisitor(InvocationContext ctx,
Visitor visitor)
Accept a visitor, and return the result of accepting this visitor.
|
boolean |
equals(Object o) |
void |
fail()
Make subsequent invocations of
WriteCommand.isSuccessful() return false. |
Collection<?> |
getAffectedKeys() |
byte |
getCommandId()
Used by marshallers to convert this command into an id for streaming.
|
CommandInvocationId |
getCommandInvocationId() |
PrivateMetadata |
getInternalMetadata(Object key) |
Object |
getKeyLockOwner()
It returns the lock owner of the key.
|
Collection<?> |
getKeysToLock()
It returns a
Collection with the keys to be lock. |
Map<Object,Object> |
getMap() |
Metadata |
getMetadata()
Get metadata of this command.
|
ValueMatcher |
getValueMatcher() |
int |
hashCode() |
boolean |
hasSkipLocking()
It checks if this command should acquire locks.
|
boolean |
hasZeroLockAcquisition() |
boolean |
isConditional()
Certain commands only work based on a certain condition or state of the cache.
|
boolean |
isForwarded()
For non transactional caches that support concurrent writes (default), the commands are forwarded between nodes,
e.g.:
- commands is executed on node A, but some of the keys should be locked on node B
- the command is send to the main owner (B)
- B tries to acquire lock on the keys it owns, then forwards the commands to the other owners as well
- at this last stage, the command has the "isForwarded" flag set to true.
|
boolean |
isReturnValueExpected()
If true, a return value will be provided when performed remotely.
|
boolean |
isSuccessful()
Some commands may want to provide information on whether the command was successful or not.
|
VisitableCommand.LoadType |
loadType() |
void |
readFrom(ObjectInput input)
Reads this instance from the stream written by
ReplicableCommand.writeTo(ObjectOutput). |
void |
setForwarded(boolean forwarded) |
void |
setInternalMetadata(Object key,
PrivateMetadata internalMetadata) |
void |
setMap(Map<Object,Object> map) |
void |
setMetadata(Metadata metadata)
Sets metadata for this command.
|
void |
setValueMatcher(ValueMatcher valueMatcher) |
String |
toString() |
PutMapCommand |
withMap(Map<Object,Object> map) |
void |
writeTo(ObjectOutput output)
Writes this instance to the
ObjectOutput. |
getTopologyId, setTopologyIdgetFlagsBitSet, hasSameFlags, printFlags, setFlagsBitSetclone, finalize, getClass, notify, notifyAll, wait, wait, waitisWriteOnly, updateStatusFromRemoteResponseaddFlag, addFlags, addFlags, getFlags, getFlagsBitSet, hasAllFlags, hasAnyFlag, hasFlag, setFlags, setFlagsBitSetinitcanBlock, invoke, invokeAsync, setOrigingetTopologyId, setTopologyIdpublic static final byte COMMAND_ID
public PutMapCommand()
public PutMapCommand(Map<?,?> map, Metadata metadata, long flagsBitSet, CommandInvocationId commandInvocationId)
public PutMapCommand(PutMapCommand command)
public CommandInvocationId getCommandInvocationId()
getCommandInvocationId in interface WriteCommandCommandInvocationId associated to the command.public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable
VisitableCommandacceptVisitor in interface VisitableCommandctx - invocation contextvisitor - visitor to acceptThrowable - in the event of problemspublic Collection<?> getKeysToLock()
RemoteLockCommandCollection with the keys to be lock.
It may return an empty collection if no keys needs to be locked independently of the return value of RemoteLockCommand.hasSkipLocking(). It may contains duplicated keys and null is not a valid return value.
getKeysToLock in interface RemoteLockCommandCollection of keys to lock.public Object getKeyLockOwner()
RemoteLockCommand
Usually, in transaction caches it is the GlobalTransaction and in
non-transactional caches the CommandInvocationId.
getKeyLockOwner in interface RemoteLockCommandpublic boolean hasZeroLockAcquisition()
hasZeroLockAcquisition in interface RemoteLockCommandpublic boolean hasSkipLocking()
RemoteLockCommandhasSkipLocking in interface RemoteLockCommandtrue if locks should be acquired for the keys in RemoteLockCommand.getKeysToLock().public final PutMapCommand withMap(Map<Object,Object> map)
public byte getCommandId()
ReplicableCommandgetCommandId in interface ReplicableCommandpublic void writeTo(ObjectOutput output) throws IOException
ReplicableCommandObjectOutput.writeTo in interface ReplicableCommandoutput - the stream.IOException - if an error occurred during the I/O.public void readFrom(ObjectInput input) throws IOException, ClassNotFoundException
ReplicableCommandReplicableCommand.writeTo(ObjectOutput).readFrom in interface ReplicableCommandinput - the stream to read.IOException - if an error occurred during the I/O.ClassNotFoundException - if it tries to load an undefined class.public boolean isSuccessful()
WriteCommandisSuccessful in interface ReplicableCommandisSuccessful in interface WriteCommandpublic boolean isConditional()
WriteCommandConcurrentMap.putIfAbsent(Object, Object) only does anything if a condition is met, i.e., the entry in
question is not already present. This method tests whether the command in question is conditional or not.isConditional in interface WriteCommandpublic ValueMatcher getValueMatcher()
getValueMatcher in interface WriteCommandpublic void setValueMatcher(ValueMatcher valueMatcher)
setValueMatcher in interface WriteCommandvalueMatcher - The new value matching policy.public Collection<?> getAffectedKeys()
getAffectedKeys in interface WriteCommandpublic void fail()
WriteCommandWriteCommand.isSuccessful() return false.fail in interface WriteCommandpublic boolean isReturnValueExpected()
ReplicableCommandResponseGenerator may choose to simply return null to save on marshalling
costs.isReturnValueExpected in interface ReplicableCommandpublic VisitableCommand.LoadType loadType()
loadType in interface VisitableCommandpublic Metadata getMetadata()
MetadataAwareCommandgetMetadata in interface MetadataAwareCommandpublic void setMetadata(Metadata metadata)
MetadataAwareCommandsetMetadata in interface MetadataAwareCommandpublic boolean isForwarded()
public void setForwarded(boolean forwarded)
isForwarded()public PrivateMetadata getInternalMetadata(Object key)
getInternalMetadata in interface WriteCommandpublic void setInternalMetadata(Object key, PrivateMetadata internalMetadata)
setInternalMetadata in interface WriteCommandCopyright © 2021 JBoss by Red Hat. All rights reserved.