Class FilterTrigger

All Implemented Interfaces:
ExternalizableLite, PortableObject, MapTrigger, Serializable

public class FilterTrigger extends ExternalizableHelper implements MapTrigger, ExternalizableLite, PortableObject
A generic Filter-based MapTrigger implementation. If an evaluation of the Entry object representing a pending change fails (returns false), then one of the following actions is taken:
  • ACTION_ROLLBACK - an IllegalArgumentException is thrown by the trigger to reject the operation that would result in this change (default);
  • ACTION_IGNORE - the change is ignored and the Entry's value is synthetically reset to the original value returned by the Entry.getOriginalValue() method;
  • ACTION_IGNORE_LOGICAL - same as ACTION_IGNORE except a non-synthetic change is made;
  • ACTION_REMOVE - the entry is synthetically removed from the underlying backing map using the Entry.remove(true) call;
  • ACTION_REMOVE_LOGICAL - same as ACTION_REMOVE except a non-synthetic remove is invoked using the Entry.remove(false) call.
Note: This trigger never prevents entries from being removed.
Since:
Coherence 3.4
Author:
gg 2008.03.11
See Also:
  • Field Details

    • ACTION_ROLLBACK

      public static final int ACTION_ROLLBACK
      Evaluation failure results in an IllegalArgumentException thrown by the trigger.
      See Also:
    • ACTION_IGNORE

      public static final int ACTION_IGNORE
      Evaluation failure results in restoring the original Entry's value.
      See Also:
    • ACTION_REMOVE

      public static final int ACTION_REMOVE
      Evaluation failure results in a removal of the entry.
      See Also:
    • ACTION_IGNORE_LOGICAL

      public static final int ACTION_IGNORE_LOGICAL
      Evaluation failure results in restoring the original Entry's value using the non-synthetic API.
      See Also:
    • ACTION_REMOVE_LOGICAL

      public static final int ACTION_REMOVE_LOGICAL
      Evaluation failure results in a non-synthetic removal of the entry.
      See Also:
    • m_filter

      protected Filter m_filter
      The underlying filter.
    • m_nAction

      protected int m_nAction
      The action code.
  • Constructor Details

    • FilterTrigger

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

      public FilterTrigger(Filter<T> filter)
      Construct a FilterTrigger based on the specified Filter object and ACTION_ROLLBACK.
      Type Parameters:
      T - the type of the input argument to the filter
      Parameters:
      filter - the underlying Filter
    • FilterTrigger

      public FilterTrigger(Filter<T> filter, int nAction)
      Construct a FilterTrigger based on the specified Filter object and the action constant.
      Type Parameters:
      T - the type of the input argument to the filter
      Parameters:
      filter - the underlying Filter
      nAction - one of the ACTION_* constants
  • Method Details

    • process

      public void process(MapTrigger.Entry entry)
      This method is called before the result of a mutating operation represented by the specified Entry object is committed into the underlying map.

      An implementation of this method can evaluate the change by analyzing the original and the new value, and can perform any of the following:

      • override the requested change by calling InvocableMap.Entry.setValue(V) with a different value;
      • undo the pending change by resetting the entry value to the original value obtained from MapTrigger.Entry.getOriginalValue();
      • remove the entry from the underlying map by calling InvocableMap.Entry.remove(boolean);
      • reject the pending change by throwing a RuntimeException, which will prevent any changes from being committed, and will result in the exception being thrown from the operation that attempted to modify the map; or
      • do nothing, thus allowing the pending change to be committed to the underlying map.
      Specified by:
      process in interface MapTrigger
      Parameters:
      entry - a MapTrigger.Entry object that represents the pending change to be committed to the map, as well as the original state of the Entry
    • getFilter

      public Filter getFilter()
      Obtain the underlying Filter.
      Returns:
      the underlying Filter object
    • getAction

      public int getAction()
      Obtain the action code for this FilterTrigger.
      Returns:
      one of the ACTION_* constants
    • 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 FilterTrigger with another object to determine equality. Two FilterTrigger objects are considered equal iff the wrapped filters and action codes are equal.
      Overrides:
      equals in class Object
      Returns:
      true iff this FilterTrigger and the passed object are equivalent FilterTrigger objects
    • hashCode

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

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