Class ExtractorEventTransformer<K,V,E>

All Implemented Interfaces:
ExternalizableLite, PortableObject, MapEventTransformer<K,V,E>, Serializable

public class ExtractorEventTransformer<K,V,E> extends ExternalizableHelper implements MapEventTransformer<K,V,E>, ExternalizableLite, PortableObject
ExtractorEventTransformer is a special purpose MapEventTransformer implementation that transforms emitted events, extracting one or more properties from either the OldValue or the NewValue. This transformation will generally result in the change of the values' data type.

Example: the following code will register a listener to receive events only if the value of the AccountBalance property changes. The transformed event's NewValue will be a List containing the LastTransactionTime and AccountBalance properties. The OldValue will always be null.

    Filter filter = new ValueChangeEventFilter("getAccountBalance");
    ValueExtractor extractor = new MultiExtractor("getLastTransactionTime,getAccountBalance");
    MapEventTransformer transformer = new ExtractorEventTransformer(null, extractor);

    cache.addMapListener(listener, new MapEventTransformerFilter(filter, transformer), false);
 
Since:
Coherence 3.4
Author:
gg 2008.06.01
See Also:
  • Constructor Details

    • ExtractorEventTransformer

      public ExtractorEventTransformer()
      No-argument constructor for lite deserialization.
    • ExtractorEventTransformer

      public ExtractorEventTransformer(ValueExtractor<? super V,? extends E> extractor)
      Construct a ExtractorEventTransformer that transforms MapEvent values based on the specified extractor.

      Note: The specified extractor will be applied to both old and new values.

      Parameters:
      extractor - ValueExtractor to extract MapEvent values
    • ExtractorEventTransformer

      public ExtractorEventTransformer(String sMethod)
      Construct a ExtractorEventTransformer that transforms MapEvent's values based on the specified method name. The name could be a comma-delimited sequence of method names which will result in a MultiExtractor that is based on a corresponding array of ValueExtractor objects; individual array elements will be either ReflectionExtractor or ChainedExtractor objects.

      Note: The specified extractor will be applied to both old and new values.

      Parameters:
      sMethod - the name of the method to invoke via reflection
    • ExtractorEventTransformer

      public ExtractorEventTransformer(ValueExtractor<? super V,? extends E> extractorOld, ValueExtractor<? super V,? extends E> extractorNew)
      Construct a ExtractorEventTransformer that transforms MapEvent values based on the specified extractors. Passing null indicates that the corresponding values should be skipped completely.
      Parameters:
      extractorOld - extractor to extract the OldValue property(s)
      extractorNew - extractor to extract the NewValue property(s)
  • Method Details

    • getOldValueExtractor

      public ValueExtractor getOldValueExtractor()
      Return a ValueExtractor used to transfrom the event's OldValue.
      Returns:
      an extractor from the OldValue
    • getNewValueExtractor

      public ValueExtractor getNewValueExtractor()
      Return a ValueExtractor used to transfrom the event's NewValue.
      Returns:
      an extractor from the NewValue
    • transform

      public MapEvent<K,E> transform(MapEvent<K,V> event)
      Transform the specified MapEvent using the corresponding extractors.
      Specified by:
      transform in interface MapEventTransformer<K,V,E>
      Parameters:
      event - MapEvent object to transform
      Returns:
      a modified MapEvent object that contains extracted values
    • 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
    • equals

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

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

      public String toString()
      Provide a human-readable representation of this object.
      Overrides:
      toString in class Object
      Returns:
      a String whose contents represent the value of this object