Interface WriteCommand

All Superinterfaces:
FlagAffectedCommand, ReplicableCommand, TopologyAffectedCommand, TracedCommand, VisitableCommand
All Known Subinterfaces:
DataWriteCommand
All Known Implementing Classes:
AbstractDataWriteCommand, AbstractWriteKeyCommand, AbstractWriteManyCommand, ClearCommand, ComputeCommand, ComputeIfAbsentCommand, EvictCommand, InvalidateCommand, InvalidateL1Command, IracPutKeyValueCommand, PutKeyValueCommand, PutMapCommand, ReadWriteKeyCommand, ReadWriteKeyValueCommand, ReadWriteManyCommand, ReadWriteManyEntriesCommand, RemoveCommand, RemoveExpiredCommand, ReplaceCommand, WriteOnlyKeyCommand, WriteOnlyKeyValueCommand, WriteOnlyManyCommand, WriteOnlyManyEntriesCommand

public interface WriteCommand extends VisitableCommand, FlagAffectedCommand, TopologyAffectedCommand
A command that modifies the cache in some way
Since:
4.0
Author:
Manik Surtani
  • Method Details

    • isSuccessful

      boolean isSuccessful()
      Some 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:
      isSuccessful in interface ReplicableCommand
      Returns:
      true if the command completed successfully, false otherwise.
    • shouldReplicate

      default boolean shouldReplicate(InvocationContext ctx, boolean requireReplicateIfRemote)
      Some commands may be successful but not need to be replicated to other nodes, stores or listeners. For example a unconditional remove may be performed on a key that doesn't exist. In that case the command is still successful but does not need to replicate that information other places.
      Parameters:
      ctx - invocation context if present, may be null
      requireReplicateIfRemote - if the command can replicate even if not a locally invoked command
      Returns:
      whether the command should replicate
    • isConditional

      boolean isConditional()
      Certain 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.
      Returns:
      true if the command is conditional, false otherwise
    • getValueMatcher

      ValueMatcher getValueMatcher()
      Returns:
      The current value matching policy.
    • setValueMatcher

      void setValueMatcher(ValueMatcher valueMatcher)
      Parameters:
      valueMatcher - The new value matching policy.
    • getAffectedKeys

      Collection<?> getAffectedKeys()
      Returns:
      a collection of keys affected by this write command. Some commands - such as ClearCommand - may return an empty collection for this method.
    • fail

      void fail()
      Make subsequent invocations of isSuccessful() return false.
    • isWriteOnly

      default boolean isWriteOnly()
      Indicates whether the command is write-only, meaning that it makes no attempt to read the previously associated value with key for which the command is directed.
      Returns:
      true is the command is write only, false otherwise.
    • getCommandInvocationId

      CommandInvocationId getCommandInvocationId()
      Returns:
      the CommandInvocationId associated to the command.
    • getInternalMetadata

      PrivateMetadata getInternalMetadata(Object key)
    • setInternalMetadata

      void setInternalMetadata(Object key, PrivateMetadata internalMetadata)