Package com.tangosol.util.filter
Class FilterTrigger
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.BitHelper
-
- com.tangosol.util.ExternalizableHelper
-
- com.tangosol.util.filter.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 theEntry
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.
- Since:
- Coherence 3.4
- Author:
- gg 2008.03.11
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelper
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
Nested classes/interfaces inherited from interface com.tangosol.util.MapTrigger
MapTrigger.Entry<K,V>
-
-
Field Summary
Fields Modifier and Type Field Description static int
ACTION_IGNORE
Evaluation failure results in restoring the original Entry's value.static int
ACTION_IGNORE_LOGICAL
Evaluation failure results in restoring the original Entry's value using the non-synthetic API.static int
ACTION_REMOVE
Evaluation failure results in a removal of the entry.static int
ACTION_REMOVE_LOGICAL
Evaluation failure results in a non-synthetic removal of the entry.static int
ACTION_ROLLBACK
Evaluation failure results in an IllegalArgumentException thrown by the trigger.protected Filter
m_filter
The underlying filter.protected int
m_nAction
The action code.-
Fields inherited from class com.tangosol.util.ExternalizableHelper
BINARY_SIZE, CHUNK_SIZE, CHUNK_THRESHOLD, CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, DECO_BACKUP, DECO_CUSTOM, DECO_EXPIRY, DECO_ID_MAX, DECO_ID_MIN, DECO_JCACHE, DECO_JCACHE_SYNTHETIC, DECO_MEMCACHED, DECO_PUSHREP, DECO_QUEUE_METADATA, DECO_RSVD_1, DECO_STORE, DECO_TX, DECO_VALUE, DECO_WLS, EMPTY_BINARY_ARRAY, FMT_B_ARRAY, FMT_BIN_DECO, FMT_BIN_EXT_DECO, FMT_BINARY, FMT_BOOLEAN, FMT_BYTE, FMT_DECIMAL, FMT_DOUBLE, FMT_EXT, FMT_FLOAT, FMT_IDO, FMT_INT, FMT_INTEGER, FMT_LONG, FMT_NONE, FMT_NULL, FMT_OBJ_EXT, FMT_OBJ_SER, FMT_OPT, FMT_OPT_DOUBLE, FMT_OPT_INT, FMT_OPT_LONG, FMT_SHORT, FMT_STRING, FMT_UNKNOWN, FMT_XML_BEAN, FMT_XML_SER, FORCE_RESOLVING_STREAMS, LAMBDA_SERIALIZATION, MAX_DECO_HEADER_BYTES, PACKED_INT_SIZE, PACKED_LONG_SIZE, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
-
-
Constructor Summary
Constructors Constructor Description FilterTrigger()
Default constructor (necessary for the ExternalizableLite interface).FilterTrigger(Filter<T> filter)
Construct a FilterTrigger based on the specified Filter object and ACTION_ROLLBACK.FilterTrigger(Filter<T> filter, int nAction)
Construct a FilterTrigger based on the specified Filter object and the action constant.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
Compare the FilterTrigger with another object to determine equality.int
getAction()
Obtain the action code for this FilterTrigger.Filter
getFilter()
Obtain the underlying Filter.int
hashCode()
Determine a hash value for the FilterTrigger object according to the generalObject.hashCode()
contract.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.void
readExternal(PofReader in)
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
readExternal(DataInput in)
Restore the contents of this object by loading the object's state from the passed DataInput object.String
toString()
Return a human-readable description for this FilterTrigger.void
writeExternal(PofWriter out)
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.void
writeExternal(DataOutput out)
Save the contents of this object by storing the object's state into the passed DataOutput object.-
Methods inherited from class com.tangosol.util.ExternalizableHelper
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, checkObjectInputFilter, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getConfigSerialFilter, getConfigSerialFilterFactory, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectInputFilter, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isPatchCompatible, isPatchCompatible, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readBooleanArray, readByteArray, readCharArray, readCharArray, readCollection, readDate, readDoubleArray, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readFloatArray, readInt, readInt, readIntArray, readIntArray, readIntArray2d, readLargeBooleanArray, readLargeByteArray, readLargeCharArray, readLargeDoubleArray, readLargeFloatArray, readLargeIntArray, readLargeLongArray, readLargeObjectArray, readLargeStringArray, readLong, readLong, readLongArray, readLongArray, readMap, readMap, readObject, readObject, readObjectArray, readObjectArray, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, validateLoadArray, validateLoadClass, writeBigDecimal, writeBigInteger, writeBooleanArray, writeByteArray, writeCollection, writeDate, writeDoubleArray, writeExternalizableLite, writeFloatArray, writeInt, writeInt, writeIntArray2d, writeLong, writeLong, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializable
-
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLong
-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
-
-
-
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 FilternAction
- 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 interfaceMapTrigger
- Parameters:
entry
- aMapTrigger.Entry
object that represents the pending change to be committed to the map, as well as the original state of the Entry
- override the requested change by calling
-
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 interfaceExternalizableLite
- 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 occursNotActiveException
- 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 interfaceExternalizableLite
- 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 interfacePortableObject
- 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 interfacePortableObject
- 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.
-
hashCode
public int hashCode()
Determine a hash value for the FilterTrigger object according to the generalObject.hashCode()
contract.
-
-