Package org.infinispan.commands.write
Class PutMapCommand
java.lang.Object
org.infinispan.commands.AbstractFlagAffectedCommand
org.infinispan.commands.AbstractTopologyAffectedCommand
org.infinispan.commands.write.PutMapCommand
- All Implemented Interfaces:
FlagAffectedCommand,MetadataAwareCommand,ReplicableCommand,TopologyAffectedCommand,TracedCommand,VisitableCommand,WriteCommand,RemoteLockCommand
public class PutMapCommand
extends AbstractTopologyAffectedCommand
implements WriteCommand, MetadataAwareCommand, RemoteLockCommand
A command writing multiple key/value pairs with the same metadata.
- Since:
- 4.0
- Author:
- Mircea.Markus@jboss.com
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.infinispan.commands.VisitableCommand
VisitableCommand.LoadType -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionPutMapCommand(Map<?, ?> map, Metadata metadata, long flagsBitSet, CommandInvocationId commandInvocationId) PutMapCommand(PutMapCommand command) -
Method Summary
Modifier and TypeMethodDescriptionacceptVisitor(InvocationContext ctx, Visitor visitor) Accept a visitor, and return the result of accepting this visitor.booleanvoidfail()Make subsequent invocations ofWriteCommand.isSuccessful()returnfalse.Collection<?> byteUsed by marshallers to convert this command into an id for streaming.It returns the lock owner of the key.Collection<?> It returns aCollectionwith the keys to be lock.getMap()Get metadata of this command.inthashCode()booleanIt checks if this command should acquire locks.booleanbooleanCertain commands only work based on a certain condition or state of the cache.booleanFor 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.booleanIf true, a return value will be provided when performed remotely.booleanSome commands may want to provide information on whether the command was successful or not.loadType()voidreadFrom(ObjectInput input) Reads this instance from the stream written byReplicableCommand.writeTo(ObjectOutput).voidsetForwarded(boolean forwarded) voidsetInternalMetadata(Object key, PrivateMetadata internalMetadata) voidvoidsetMetadata(Metadata metadata) Sets metadata for this command.voidsetValueMatcher(ValueMatcher valueMatcher) toString()final PutMapCommandvoidwriteTo(ObjectOutput output) Writes this instance to theObjectOutput.Methods inherited from class org.infinispan.commands.AbstractTopologyAffectedCommand
getTopologyId, setTopologyIdMethods inherited from class org.infinispan.commands.AbstractFlagAffectedCommand
getFlagsBitSet, hasSameFlags, printFlags, setFlagsBitSetMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.infinispan.commands.FlagAffectedCommand
addFlags, getFlags, getFlagsBitSet, hasAllFlags, hasAnyFlag, setFlagsBitSetMethods inherited from interface org.infinispan.commands.ReplicableCommand
canBlock, invoke, invokeAsync, logThrowable, setOriginMethods inherited from interface org.infinispan.commands.TopologyAffectedCommand
getTopologyId, setTopologyIdMethods inherited from interface org.infinispan.commands.TracedCommand
getOperationName, getSpanAttributes, setSpanAttributesMethods inherited from interface org.infinispan.commands.VisitableCommand
initMethods inherited from interface org.infinispan.commands.write.WriteCommand
isWriteOnly, shouldReplicate
-
Field Details
-
COMMAND_ID
public static final byte COMMAND_ID- See Also:
-
-
Constructor Details
-
PutMapCommand
public PutMapCommand() -
PutMapCommand
public PutMapCommand(Map<?, ?> map, Metadata metadata, long flagsBitSet, CommandInvocationId commandInvocationId) -
PutMapCommand
-
-
Method Details
-
getCommandInvocationId
- Specified by:
getCommandInvocationIdin interfaceWriteCommand- Returns:
- the
CommandInvocationIdassociated to the command.
-
acceptVisitor
Description copied from interface:VisitableCommandAccept a visitor, and return the result of accepting this visitor.- Specified by:
acceptVisitorin interfaceVisitableCommand- Parameters:
ctx- invocation contextvisitor- visitor to accept- Returns:
- arbitrary return value
- Throws:
Throwable- in the event of problems
-
getKeysToLock
Description copied from interface:RemoteLockCommandIt returns aCollectionwith 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 andnullis not a valid return value.- Specified by:
getKeysToLockin interfaceRemoteLockCommand- Returns:
- a
Collectionof keys to lock.
-
getKeyLockOwner
Description copied from interface:RemoteLockCommandIt returns the lock owner of the key.Usually, in transaction caches it is the
GlobalTransactionand in non-transactional caches theCommandInvocationId.- Specified by:
getKeyLockOwnerin interfaceRemoteLockCommand- Returns:
- the lock owner of the key.
-
hasZeroLockAcquisition
public boolean hasZeroLockAcquisition()- Specified by:
hasZeroLockAcquisitionin interfaceRemoteLockCommand- Returns:
- it the locks should be acquire with 0 (zero) acquisition timeout.
-
hasSkipLocking
public boolean hasSkipLocking()Description copied from interface:RemoteLockCommandIt checks if this command should acquire locks.- Specified by:
hasSkipLockingin interfaceRemoteLockCommand- Returns:
trueif locks should be acquired for the keys inRemoteLockCommand.getKeysToLock().
-
getMap
-
setMap
-
withMap
-
getCommandId
public byte getCommandId()Description copied from interface:ReplicableCommandUsed by marshallers to convert this command into an id for streaming.- Specified by:
getCommandIdin interfaceReplicableCommand- Returns:
- the method id of this command. This is compatible with pre-2.2.0 MethodCall ids.
-
writeTo
Description copied from interface:ReplicableCommandWrites this instance to theObjectOutput.- Specified by:
writeToin interfaceReplicableCommand- Parameters:
output- the stream.- Throws:
IOException- if an error occurred during the I/O.
-
readFrom
Description copied from interface:ReplicableCommandReads this instance from the stream written byReplicableCommand.writeTo(ObjectOutput).- Specified by:
readFromin interfaceReplicableCommand- Parameters:
input- the stream to read.- Throws:
IOException- if an error occurred during the I/O.ClassNotFoundException- if it tries to load an undefined class.
-
equals
-
hashCode
public int hashCode() -
toString
-
isSuccessful
public boolean isSuccessful()Description copied from interface:WriteCommandSome commands may want to provide information on whether the command was successful or not. This is different from a failure, which usually would result in an exception being thrown. An example is a putIfAbsent() not doing anything because the key in question was present. This would result in a isSuccessful() call returning false.- Specified by:
isSuccessfulin interfaceReplicableCommand- Specified by:
isSuccessfulin interfaceWriteCommand- Returns:
- true if the command completed successfully, false otherwise.
-
isConditional
public boolean isConditional()Description copied from interface:WriteCommandCertain commands only work based on a certain condition or state of the cache. For example,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.- Specified by:
isConditionalin interfaceWriteCommand- Returns:
- true if the command is conditional, false otherwise
-
getValueMatcher
- Specified by:
getValueMatcherin interfaceWriteCommand- Returns:
- The current value matching policy.
-
setValueMatcher
- Specified by:
setValueMatcherin interfaceWriteCommand- Parameters:
valueMatcher- The new value matching policy.
-
getAffectedKeys
- Specified by:
getAffectedKeysin interfaceWriteCommand- Returns:
- a collection of keys affected by this write command. Some commands - such as ClearCommand - may return an empty collection for this method.
-
fail
public void fail()Description copied from interface:WriteCommandMake subsequent invocations ofWriteCommand.isSuccessful()returnfalse.- Specified by:
failin interfaceWriteCommand
-
isReturnValueExpected
public boolean isReturnValueExpected()Description copied from interface:ReplicableCommandIf true, a return value will be provided when performed remotely. Otherwise, a remoteResponseGeneratormay choose to simply return null to save on marshalling costs.- Specified by:
isReturnValueExpectedin interfaceReplicableCommand- Returns:
- true or false
-
loadType
- Specified by:
loadTypein interfaceVisitableCommand- Returns:
- Nodes on which the command needs to read the previous values of the keys it acts on.
-
getMetadata
Description copied from interface:MetadataAwareCommandGet metadata of this command.- Specified by:
getMetadatain interfaceMetadataAwareCommand- Returns:
- an instance of Metadata
-
setMetadata
Description copied from interface:MetadataAwareCommandSets metadata for this command.- Specified by:
setMetadatain interfaceMetadataAwareCommand
-
isForwarded
public 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. -
setForwarded
public void setForwarded(boolean forwarded) - See Also:
-
getInternalMetadata
- Specified by:
getInternalMetadatain interfaceWriteCommand
-
setInternalMetadata
- Specified by:
setInternalMetadatain interfaceWriteCommand
-