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, setTopologyId
getFlagsBitSet, hasSameFlags, printFlags, setFlagsBitSet
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
isWriteOnly, updateStatusFromRemoteResponse
addFlag, addFlags, addFlags, getFlags, getFlagsBitSet, hasAllFlags, hasAnyFlag, hasFlag, setFlags, setFlagsBitSet
init
canBlock, invoke, invokeAsync, setOrigin
getTopologyId, setTopologyId
public 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 WriteCommand
CommandInvocationId
associated to the command.public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable
VisitableCommand
acceptVisitor
in interface VisitableCommand
ctx
- invocation contextvisitor
- visitor to acceptThrowable
- in the event of problemspublic Collection<?> getKeysToLock()
RemoteLockCommand
Collection
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 RemoteLockCommand
Collection
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 RemoteLockCommand
public boolean hasZeroLockAcquisition()
hasZeroLockAcquisition
in interface RemoteLockCommand
public boolean hasSkipLocking()
RemoteLockCommand
hasSkipLocking
in interface RemoteLockCommand
true
if locks should be acquired for the keys in RemoteLockCommand.getKeysToLock()
.public final PutMapCommand withMap(Map<Object,Object> map)
public byte getCommandId()
ReplicableCommand
getCommandId
in interface ReplicableCommand
public void writeTo(ObjectOutput output) throws IOException
ReplicableCommand
ObjectOutput
.writeTo
in interface ReplicableCommand
output
- the stream.IOException
- if an error occurred during the I/O.public void readFrom(ObjectInput input) throws IOException, ClassNotFoundException
ReplicableCommand
ReplicableCommand.writeTo(ObjectOutput)
.readFrom
in interface ReplicableCommand
input
- 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()
WriteCommand
isSuccessful
in interface ReplicableCommand
isSuccessful
in interface WriteCommand
public boolean isConditional()
WriteCommand
ConcurrentMap.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 WriteCommand
public ValueMatcher getValueMatcher()
getValueMatcher
in interface WriteCommand
public void setValueMatcher(ValueMatcher valueMatcher)
setValueMatcher
in interface WriteCommand
valueMatcher
- The new value matching policy.public Collection<?> getAffectedKeys()
getAffectedKeys
in interface WriteCommand
public void fail()
WriteCommand
WriteCommand.isSuccessful()
return false
.fail
in interface WriteCommand
public boolean isReturnValueExpected()
ReplicableCommand
ResponseGenerator
may choose to simply return null to save on marshalling
costs.isReturnValueExpected
in interface ReplicableCommand
public VisitableCommand.LoadType loadType()
loadType
in interface VisitableCommand
public Metadata getMetadata()
MetadataAwareCommand
getMetadata
in interface MetadataAwareCommand
public void setMetadata(Metadata metadata)
MetadataAwareCommand
setMetadata
in interface MetadataAwareCommand
public boolean isForwarded()
public void setForwarded(boolean forwarded)
isForwarded()
public PrivateMetadata getInternalMetadata(Object key)
getInternalMetadata
in interface WriteCommand
public void setInternalMetadata(Object key, PrivateMetadata internalMetadata)
setInternalMetadata
in interface WriteCommand
Copyright © 2021 JBoss by Red Hat. All rights reserved.