Class PropertyProcessor<K,V,R>

java.lang.Object
com.tangosol.util.Base
com.tangosol.util.processor.AbstractProcessor<K,V,R>
com.tangosol.util.processor.PropertyProcessor<K,V,R>
All Implemented Interfaces:
ExternalizableLite, PortableObject, InvocableMap.EntryProcessor<K,V,R>, Serializable
Direct Known Subclasses:
NumberIncrementor, NumberMultiplier

public abstract class PropertyProcessor<K,V,R> extends AbstractProcessor<K,V,R> implements ExternalizableLite, PortableObject
PropertyProcessor is a base class for EntryProcessor implementations that depend on a ValueManipulator.

Any concrete subclass would have to implement the methods of ExternalizableLite interface calling the appropriate super class implementations first.

A typical concrete subclass would also implement the process() method using the following pattern:

  public Object process(InvocableMap.Entry entry)
    {
    // retrieve an old property value
    Object oOldValue = get(entry);

    ... // calculate a new value and the process result
    ... // based on the old value and the processor's attributes

    if (!oNewValue.equals(oOldValue))
      {
      // set the new property value
      set(entry, oNewValue);
      }

    // return the process result
    return oResult;
    }
 
Author:
gg 2005.10.31
See Also:
  • Field Details

    • m_manipulator

      protected ValueManipulator<V,R> m_manipulator
      The property value manipulator.
  • Constructor Details

    • PropertyProcessor

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

      public PropertyProcessor(String sName)
      Construct a PropertyProcessor for the specified property name.

      This constructor assumes that the corresponding property getter will have a name of ("get" + sName) and the corresponding property setter's name will be ("set + sName).

      Parameters:
      sName - a property name
    • PropertyProcessor

      public PropertyProcessor(String sName, boolean fUseIs)
      Construct a PropertyProcessor for the specified property name.

      This constructor assumes that the corresponding property getter will have a name of either ("get" + sName) or ("is + sName) and the corresponding property setter's name will be ("set + sName).

      Parameters:
      sName - a property name
      fUseIs - if true, the getter method will be prefixed with "is" rather than "get"
    • PropertyProcessor

      public PropertyProcessor(ValueManipulator<V,R> manipulator)
      Construct a PropertyProcessor based for the specified ValueManipulator.
      Parameters:
      manipulator - a ValueManipulator; could be null
  • Method Details

    • get

      protected R get(InvocableMap.Entry<K,V> entry)
      Get the property value from the passed Entry object.
      Parameters:
      entry - the Entry object
      Returns:
      the property value
      See Also:
    • set

      protected void set(InvocableMap.Entry<K,V> entry, R oValue)
      Set the property value into the passed Entry object.
      Parameters:
      entry - the Entry object
      oValue - a new property value
      See Also:
    • getDescription

      protected abstract String getDescription()
      Returns this PropertyProcessor's description.
      Returns:
      this PropertyProcessor's description
    • equals

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

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

      public String toString()
      Return a human-readable description for this PropertyProcessor.
      Overrides:
      toString in class Object
      Returns:
      a String description of the PropertyProcessor
    • 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