Package com.tangosol.util.extractor
Class ChainedExtractor<T,E>
java.lang.Object
com.tangosol.util.Base
com.tangosol.util.BitHelper
com.tangosol.util.ExternalizableHelper
com.tangosol.util.extractor.AbstractExtractor<T,E>
com.tangosol.util.extractor.AbstractCompositeExtractor<T,E>
com.tangosol.util.extractor.ChainedExtractor<T,E>
- All Implemented Interfaces:
CanonicallyNamed
,ExternalizableLite
,PortableObject
,QueryMapComparator
,Remote.Function<T,
,E> Remote.ToDoubleFunction<T>
,Remote.ToIntFunction<T>
,Remote.ToLongFunction<T>
,ValueExtractor<T,
,E> Serializable
,Comparator
,Function<T,
,E> ToDoubleFunction<T>
,ToIntFunction<T>
,ToLongFunction<T>
Composite ValueExtractor implementation based on an array of extractors.
The extractors in the array are applied sequentially left-to-right, so a
result of a previous extractor serves as a target object for a next one.
- Author:
- gg 2003.09.22
- 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
-
Field Summary
Fields inherited from class com.tangosol.util.extractor.AbstractCompositeExtractor
m_aExtractor
Fields inherited from class com.tangosol.util.extractor.AbstractExtractor
KEY, m_nTarget, m_sNameCanon, VALUE
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).ChainedExtractor
(ValueExtractor[] aExtractor) Construct a ChainedExtractor based on a specified ValueExtractor array.ChainedExtractor
(ValueExtractor<? super T, ? extends U> extractor1, ValueExtractor<? super U, ? extends E> extractor2) Construct a ChainedExtractor based on two extractors.ChainedExtractor
(String sName) Construct a ChainedExtractor for a specified method name sequence. -
Method Summary
Modifier and TypeMethodDescription<V> ValueExtractor
<T, V> andThen
(ValueExtractor<? super E, ? extends V> after) Returns a composed extractor that first applies this extractor to its input, and then applies theafter
extractor to the result.<V> ValueExtractor
<V, E> compose
(ValueExtractor<? super V, ? extends T> before) Returns a composed extractor that first applies thebefore
extractor to its input, and then applies this extractor to the result.protected int
Return the target of the first extractor in composite extractor.static ValueExtractor[]
createExtractors
(String sName) Parse a dot-delimited sequence of method names and instantiate a corresponding array ofReflectionExtractor
objects.void
Ensure that this target is correct after first extractor manually updated.Extract the value from the passed object.extractFromEntry
(Map.Entry entry) Extract the value from the passed entry.Extract the value from the "original value" of the passed Entry object or the key (if targeted).Compute a canonical name as a dot-separated concatenation of the canonical name of eachValueExtractor
array element, starting from lowest index array element.protected static ValueExtractor[]
merge
(ValueExtractor[] aHead, ValueExtractor[] aTail) Return aValueExtractor
array with the provided arrays merged into a single array.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.Methods inherited from class com.tangosol.util.extractor.AbstractCompositeExtractor
equals, getExtractors, hashCode, toString, writeExternal, writeExternal
Methods inherited from class com.tangosol.util.extractor.AbstractExtractor
compare, compareEntries, getTarget, isCanonicallyEquatable
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
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
Methods inherited from interface com.tangosol.util.function.Remote.Function
andThen, compose
Methods inherited from interface com.tangosol.util.ValueExtractor
apply, applyAsDouble, applyAsInt, applyAsLong, fromKey
-
Constructor Details
-
ChainedExtractor
public ChainedExtractor()Default constructor (necessary for the ExternalizableLite interface). -
ChainedExtractor
Construct a ChainedExtractor based on a specified ValueExtractor array.- Parameters:
aExtractor
- the ValueExtractor array
-
ChainedExtractor
public ChainedExtractor(ValueExtractor<? super T, ? extends U> extractor1, ValueExtractor<? super U, ? extends E> extractor2) Construct a ChainedExtractor based on two extractors.- Type Parameters:
U
- the type of value that will be extracted in the first ValueExtractor- Parameters:
extractor1
- the first ValueExtractorextractor2
- the second ValueExtractor
-
ChainedExtractor
Construct a ChainedExtractor for a specified method name sequence.- Parameters:
sName
- a dot-delimited sequence of method names which results in a ChainedExtractor that is based on an array of correspondingReflectionExtractor
objects
-
-
Method Details
-
ensureTarget
public void ensureTarget()Ensure that this target is correct after first extractor manually updated. -
extract
Extract the value from the passed object. The underlying extractors are applied sequentially, so a result of a previous extractor serves as a target object for a next one. A value of null prevents any further extractions and is returned immediately. For intrinsic types, the returned value is expected to be a standard wrapper type in the same manner that reflection works; for example, int would be returned as a java.lang.Integer.- Specified by:
extract
in interfaceValueExtractor<T,
E> - Overrides:
extract
in classAbstractExtractor<T,
E> - Parameters:
oTarget
- the object to extract the value from- Returns:
- the extracted value; null is an acceptable value
-
extractFromEntry
Extract the value from the passed entry. The underlying extractors are applied sequentially, so a result of a previous extractor serves as a target object for a next one. A value of null prevents any further extractions and is returned immediately. For intrinsic types, the returned value is expected to be a standard wrapper type in the same manner that reflection works; for example, int would be returned as a java.lang.Integer.- Overrides:
extractFromEntry
in classAbstractExtractor<T,
E> - Parameters:
entry
- an Entry object to extract a desired value from- Returns:
- the extracted value
-
extractOriginalFromEntry
Description copied from class:AbstractExtractor
Extract the value from the "original value" of the passed Entry object or the key (if targeted). This method's conventions are exactly the same as for theAbstractExtractor.extractFromEntry(java.util.Map.Entry)
method.- Overrides:
extractOriginalFromEntry
in classAbstractExtractor<T,
E> - Parameters:
entry
- an Entry object whose original value should be used to extract the desired value from- Returns:
- the extracted value or null if the original value is not present
-
compose
Description copied from interface:ValueExtractor
Returns a composed extractor that first applies thebefore
extractor to its input, and then applies this extractor to the result. If evaluation of either extractor throws an exception, it is relayed to the caller of the composed extractor.- Type Parameters:
V
- the type of input to thebefore
extractor, and to the composed extractor- Parameters:
before
- the extractor to apply before this extractor is applied- Returns:
- a composed extractor that first applies the
before
extractor and then applies this extractor - See Also:
-
andThen
Description copied from interface:ValueExtractor
Returns a composed extractor that first applies this extractor to its input, and then applies theafter
extractor to the result. If evaluation of either extractor throws an exception, it is relayed to the caller of the composed extractor.- Type Parameters:
V
- the type of output of theafter
extractor, and of the composed extractor- Parameters:
after
- the extractor to apply after this extractor is applied- Returns:
- a composed extractor that first applies this extractor and then
applies the
after
extractor - See Also:
-
getCanonicalName
Compute a canonical name as a dot-separated concatenation of the canonical name of eachValueExtractor
array element, starting from lowest index array element.- Specified by:
getCanonicalName
in interfaceCanonicallyNamed
- Specified by:
getCanonicalName
in interfaceValueExtractor<T,
E> - Overrides:
getCanonicalName
in classAbstractExtractor<T,
E> - Returns:
- canonical name reflecting this instance's array of
ValueExtractor
s.
-
readExternal
Restore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternal
in interfaceExternalizableLite
- Overrides:
readExternal
in classAbstractCompositeExtractor<T,
E> - 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
-
readExternal
Restore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
readExternal
in interfacePortableObject
- Overrides:
readExternal
in classAbstractCompositeExtractor<T,
E> - Parameters:
in
- the PofReader from which to read the object's state- Throws:
IOException
- if an I/O error occurs
-
createExtractors
Parse a dot-delimited sequence of method names and instantiate a corresponding array ofReflectionExtractor
objects.- Parameters:
sName
- a dot-delimited sequence of method names- Returns:
- an array of
ReflectionExtractor
objects
-
merge
Return aValueExtractor
array with the provided arrays merged into a single array.- Parameters:
aHead
- the first group of elements in the returned arrayaTail
- the second group of elements in the returned array- Returns:
- a ValueExtractor array with the provided arrays merged into a single array
-
computeTarget
protected int computeTarget()Return the target of the first extractor in composite extractor.Enables equivalence between KeyExtractor("foo.bar") and ChainExtractor(ReflectionExtractor("foo", null, KEY), ReflectionExtractor("bar")).
- Returns:
- the target of the first extractor in CompositeExtractor.
- Since:
- 12.2.1.4
-