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 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.
- Since:
- Coherence 3.4
- Author:
- gg 2008.03.11
- See Also:
-
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
Modifier and TypeFieldDescriptionstatic final int
Evaluation failure results in restoring the original Entry's value.static final int
Evaluation failure results in restoring the original Entry's value using the non-synthetic API.static final int
Evaluation failure results in a removal of the entry.static final int
Evaluation failure results in a non-synthetic removal of the entry.static final int
Evaluation failure results in an IllegalArgumentException thrown by the trigger.protected Filter
The underlying filter.protected int
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
ConstructorDescriptionDefault 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
Modifier and TypeMethodDescriptionboolean
Compare the FilterTrigger with another object to determine equality.int
Obtain the action code for this FilterTrigger.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
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
Restore the contents of this object by loading the object's state from the passed DataInput object.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, isResolving, isSerializable, isSerializerCompatible, 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 Details
-
ACTION_ROLLBACK
public static final int ACTION_ROLLBACKEvaluation failure results in an IllegalArgumentException thrown by the trigger.- See Also:
-
ACTION_IGNORE
public static final int ACTION_IGNOREEvaluation failure results in restoring the original Entry's value.- See Also:
-
ACTION_REMOVE
public static final int ACTION_REMOVEEvaluation failure results in a removal of the entry.- See Also:
-
ACTION_IGNORE_LOGICAL
public static final int ACTION_IGNORE_LOGICALEvaluation 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_LOGICALEvaluation failure results in a non-synthetic removal of the entry.- See Also:
-
m_filter
The underlying filter. -
m_nAction
protected int m_nActionThe action code.
-
-
Constructor Details
-
FilterTrigger
public FilterTrigger()Default constructor (necessary for the ExternalizableLite interface). -
FilterTrigger
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
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 Details
-
process
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
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
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 occurs
-
writeExternal
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
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
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
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. -
toString
Return a human-readable description for this FilterTrigger.
-