Class 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:
    Serialized Form
    • Field Detail

      • m_manipulator

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

      • 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 Detail

      • 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:
        ValueUpdater.update(T, U)
      • 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
        NotActiveException - if the object is not in its initial state, and therefore cannot be deserialized into
      • 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