Class UpdaterProcessor<K,V,T>

java.lang.Object
com.tangosol.util.Base
com.tangosol.util.processor.AbstractProcessor<K,V,Boolean>
com.tangosol.util.processor.UpdaterProcessor<K,V,T>
All Implemented Interfaces:
ExternalizableLite, PortableObject, InvocableMap.EntryProcessor<K,V,Boolean>, Serializable

public class UpdaterProcessor<K,V,T> extends AbstractProcessor<K,V,Boolean> implements ExternalizableLite, PortableObject
UpdaterProcessor is an EntryProcessor implementations that updates an attribute of an object cached in an InvocableMap. A common usage pattern is:
   cache.invoke(oKey, new UpdaterProcessor(updater, value));
 
which is functionally equivalent to the following operation:
   V target = cache.get(key);
   updater.update(target, value);
   cache.put(key, target);
 
The major difference is that for clustered caches using the UpdaterProcessor allows avoiding explicit concurrency control and could significantly reduce the amount of network traffic.
Author:
gg 2006.07.25
See Also:
  • Field Details

    • m_updater

      protected ValueUpdater<V,T> m_updater
      The underlying ValueUpdater.
    • m_value

      protected T m_value
      A value to update the entry's value with.
  • Constructor Details

    • UpdaterProcessor

      public UpdaterProcessor()
      Default constructor (necessary for the ExternalizableLite interface).
    • UpdaterProcessor

      public UpdaterProcessor(ValueUpdater<V,T> updater, T value)
      Construct an UpdaterProcessor based on the specified ValueUpdater.
      Parameters:
      updater - a ValueUpdater object; passing null will simpy replace the entry's value with the specified one instead of updating it
      value - the value to update the target entry with
    • UpdaterProcessor

      public UpdaterProcessor(String sMethod, T value)
      Construct an UpdaterProcessor for a given method name. The method must have a single parameter of a Java type compatible with the specified value type.
      Parameters:
      sMethod - a method name to make a ReflectionUpdater for; this parameter can also be a dot-delimited sequence of method names which would result in using a CompositeUpdater
      value - the value to update the target entry with
  • Method Details

    • process

      public Boolean process(InvocableMap.Entry<K,V> entry)
      Process a Map.Entry object.

      Note: if this method throws an exception, all modifications to the supplied entry or any other entries retrieved via the BackingMapContext.getBackingMapEntry(java.lang.Object) API will be rolled back leaving all underlying values unchanged.

      Specified by:
      process in interface InvocableMap.EntryProcessor<K,V,T>
      Parameters:
      entry - the Entry to process
      Returns:
      the result of the processing, if any
    • equals

      public boolean equals(Object o)
      Compare the UpdaterProcessor with another object to determine equality.
      Overrides:
      equals in class Object
      Returns:
      true iff this UpdaterProcessor and the passed object are equivalent UpdaterProcessor
    • hashCode

      public int hashCode()
      Determine a hash value for the UpdaterProcessor object according to the general Object.hashCode() contract.
      Overrides:
      hashCode in class Object
      Returns:
      an integer hash value for this UpdaterProcessor object
    • toString

      public String toString()
      Return a human-readable description for this UpdaterProcessor.
      Overrides:
      toString in class Object
      Returns:
      a String description of the UpdaterProcessor
    • readExternal

      public void readExternal(DataInput in) throws IOException
      Restore the contents of this object by loading the object's state from the passed DataInput object.
      Specified by:
      readExternal in interface ExternalizableLite
      Parameters:
      in - the DataInput stream to read data from in order to restore the state of this object
      Throws:
      IOException - if an I/O exception occurs
    • writeExternal

      public void writeExternal(DataOutput out) throws IOException
      Save the contents of this object by storing the object's state into the passed DataOutput object.
      Specified by:
      writeExternal in interface ExternalizableLite
      Parameters:
      out - the DataOutput stream to write the state of this object to
      Throws:
      IOException - if an I/O exception occurs
    • readExternal

      public void readExternal(PofReader in) throws IOException
      Restore the contents of a user type instance by reading its state using the specified PofReader object.
      Specified by:
      readExternal in interface PortableObject
      Parameters:
      in - the PofReader from which to read the object's state
      Throws:
      IOException - if an I/O error occurs
    • writeExternal

      public void writeExternal(PofWriter out) throws IOException
      Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
      Specified by:
      writeExternal in interface PortableObject
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs