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

      • ACTION_ROLLBACK

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

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

        public static final int ACTION_REMOVE
        Evaluation failure results in a removal of the entry.
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
      • ACTION_REMOVE_LOGICAL

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

        protected Filter m_filter
        The underlying filter.
      • m_nAction

        protected int m_nAction
        The action code.
    • Constructor Detail

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

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