Class UniversalExtractor<T,E> 
- Type Parameters:
- T- the type of the value to extract from
- E- the type of value that will be extracted
- 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>
 Either a property or method based extractor based on parameters passed to
 constructor UniversalExtractor(String, Object[], int).
 Generally, the name value passed to the UniversalExtractor constructor
 represents a property unless sName value ends in METHOD_SUFFIX,
 "()",
 then this instance is a reflection based method extractor.
 Special cases are described in the constructor documentation.
 
 AbstractExtractor.equals(Object) and AbstractExtractor.hashCode()
 describe how this Extractor can be equivalent to other ValueExtractor
 implementations.
- Since:
- 12.2.1.4
- Author:
- cp/gg 2002.11.01, ew 2007.02.01, jf 2017.11.20
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelperExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCacheNested classes/interfaces inherited from class com.tangosol.util.BaseBase.LoggingWriter
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final String[]JavaBean accessor prefixes.protected Object[]The parameter array.protected StringA method or property name.protected StringCanonical name for this extractor.static final StringIfm_sNameends with this suffix, it represents a method name.Fields inherited from class com.tangosol.util.extractor.AbstractExtractorKEY, m_nTarget, VALUEFields inherited from class com.tangosol.util.ExternalizableHelperBINARY_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_TOPLINK, 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, s_tloInEHDeserialize, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
- 
Constructor SummaryConstructorsConstructorDescriptionDefault constructor (necessary for the ExternalizableLite interface).UniversalExtractor(String sName) Construct a UniversalExtractor based on syntax ofsName.UniversalExtractor(String sName, Object[] aoParam) Construct a UniversalExtractor based on a name and optional parameters.UniversalExtractor(String sName, Object[] aoParam, int nTarget) Construct a UniversalExtractor based on a name, optional parameters and the entry extraction target.
- 
Method SummaryModifier and TypeMethodDescriptionstatic <T,E> ValueExtractor <T, E> createExtractor(String sNames) Return a ValueExtractor representing dot separated list of property and/or method names.booleanCompare theUniversalExtractorwith another object to determine equality.Extract from target using reflection or map access.protected EextractComplex(T oTarget) Extract from target using reflection or map access.fromKey()Obtain a version of thisValueExtractorthat targets an entry's key.Return the canonical name for this extractor.Return the method name that this extractor is configured to invoke.getName()Return the name passed intoUniversalExtractor(String).Object[]Return the array of arguments used to invoke the method.Return the property name of this extractor.inthashCode()HashCode value is hashCode of non-nullcanonical name; otherwise, it is the hashCode ofsNamepassed to {#link UniversalExtractor(String)}.protected voidinit()Called in constructor and deserializers.booleanReturn true if this a method extractor.booleanReturn true if this is a Property extractor.voidRestore the contents of a user type instance by reading its state using the specified PofReader object.voidRestore the contents of this object by loading the object's state from the passed DataInput object.toString()Provide a human-readable description of thisUniversalExtractorobject.voidwriteExternal(PofWriter out) Save the contents of a POF user type instance by writing its state using the specified PofWriter object.voidwriteExternal(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.extractor.AbstractExtractorcompare, compareEntries, extractFromEntry, extractOriginalFromEntry, getTarget, isCanonicallyEquatableMethods inherited from class com.tangosol.util.ExternalizableHelperasBinary, 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, writeIntArray, writeIntArray2d, writeLong, writeLong, writeLongArray, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializableMethods inherited from class com.tangosol.util.BitHelpercountBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLongMethods inherited from class com.tangosol.util.Baseazzert, 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, newHashMap, newHashMap, newHashSet, newHashSet, 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, waitMethods inherited from class java.lang.Objectclone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Comparatorreversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLongMethods inherited from interface com.tangosol.util.function.Remote.FunctionandThen, composeMethods inherited from interface com.tangosol.util.ValueExtractorandThen, apply, applyAsDouble, applyAsInt, applyAsLong, compose, getTarget
- 
Field Details- 
BEAN_ACCESSOR_PREFIXESJavaBean accessor prefixes.
- 
METHOD_SUFFIXIfm_sNameends with this suffix, it represents a method name.- See Also:
 
- 
m_sNameA method or property name.
- 
m_aoParamThe parameter array. Must be null or zero length for a property based extractor.
- 
m_sNameCanonCanonical name for this extractor.Note: subclasses are responsible for initialization and POF and/or Lite serialization of this field. 
 
- 
- 
Constructor Details- 
UniversalExtractorpublic UniversalExtractor()Default constructor (necessary for the ExternalizableLite interface).
- 
UniversalExtractorConstruct a UniversalExtractor based on syntax ofsName.If sNamedoes not end inMETHOD_SUFFIX,"()", this extractor is a property extractor. IfsNameis prefixed with one of theBEAN_ACCESSOR_PREFIXESand optionally ends in theMETHOD_SUFFIX, this extractor is a property extractor. Otherwise, if thesNamejust ends in {#link #METHOD_SUFFIX}, this extractor is considered a method extractor.- Parameters:
- sName- a method or property name
 
- 
UniversalExtractorConstruct a UniversalExtractor based on a name and optional parameters.If sNamedoes not end inMETHOD_SUFFIX,"()", and has noaoParams,this extractor is a property extractor. IfsNameis prefixed with one of theBEAN_ACCESSOR_PREFIXES, optionally ends inMETHOD_SUFFIXand has noaoParams,this extractor is a property extractor. Otherwise, if thesNamejust ends in {#link #METHOD_SUFFIX}, this extractor is considered a method extractor.- Parameters:
- sName- a method or property name
- aoParam- the array of arguments to be used in the method invocation; may be null
- Throws:
- IllegalArgumentException- when- sNamedoes not end in- METHOD_SUFFIXand aoParam array length is one or more.
 
- 
UniversalExtractorConstruct a UniversalExtractor based on a name, optional parameters and the entry extraction target.If sNamedoes not end inMETHOD_SUFFIX,"()", this extractor is a property extractor. IfsNameis prefixed with one of theBEAN_ACCESSOR_PREFIXESand optionally ends inMETHOD_SUFFIX, this extractor is a property extractor. If thesNamejust ends inMETHOD_SUFFIX, this extractor is considered a method extractor.- Parameters:
- sName- a method or property name
- aoParam- the array of arguments to be used in the method invocation; may be null
- nTarget- one of the- AbstractExtractor.VALUEor- AbstractExtractor.KEYvalues
- Throws:
- IllegalArgumentException- when- sNamedoes not end in- METHOD_SUFFIXand aoParam array length is one or more.
 
 
- 
- 
Method Details- 
extractExtract from target using reflection or map access.If name is a property, reflection accessor method lookup on Tfails andoTargetis an instanceMap, use canonical name to get value from target.- Specified by:
- extractin interface- ValueExtractor<T,- E> 
- Overrides:
- extractin class- AbstractExtractor<T,- E> 
- Parameters:
- oTarget- the target
- Returns:
- value extracted from target
 
- 
getCanonicalNameDescription copied from interface:ValueExtractorReturn the canonical name for this extractor.A canonical name uniquely identifies what is to be extracted, but not how it is to be extracted. Thus two different extractor implementations with the same non-null canonical name are considered to be equal, and should reflect this in their implementations of hashCode and equals. Canonical names for properties are designated by their property name in camel case, for instance a Java Bean with method getFooBarwould have a property namedfooBar, and would havefooBaras its canonical name.Canonical names for zero-arg method invocations are the method name followed by (). Dots in a canonical name delimit one or more property/method accesses represented by a chaining ValueExtractor such as ChainedExtractororPofExtractor(Class, PofNavigator, String).There is currently no canonical name format for methods which take parameters and as such they must return a canonical name of null.- Specified by:
- getCanonicalNamein interface- CanonicallyNamed
- Specified by:
- getCanonicalNamein interface- ValueExtractor<T,- E> 
- Overrides:
- getCanonicalNamein class- AbstractExtractor<T,- E> 
- Returns:
- the extractor's canonical name, or null
 
- 
fromKeyDescription copied from interface:ValueExtractorObtain a version of thisValueExtractorthat targets an entry's key.- Specified by:
- fromKeyin interface- ValueExtractor<T,- E> 
- Returns:
- a version of this ValueExtractorthat targets an entry's key
 
- 
equalsCompare theUniversalExtractorwith another object to determine equality.AbstractExtractor.equals(Object)contract takes precedence when applicable, falling back to implementation specific equals.Two UniversalExtractor objects, re1 and re2 are considered equal if re1.extract(o) equals re2.extract(o) for all values of o. - Specified by:
- equalsin interface- Comparator<T>
- Specified by:
- equalsin interface- ValueExtractor<T,- E> 
- Overrides:
- equalsin class- AbstractExtractor<T,- E> 
- Parameters:
- o- the reference object with which to compare
- Returns:
- trueiff this- UniversalExtractorand the passed object are equivalent
 
- 
hashCodepublic int hashCode()HashCode value is hashCode of non-nullcanonical name; otherwise, it is the hashCode ofsNamepassed to {#link UniversalExtractor(String)}.- Specified by:
- hashCodein interface- ValueExtractor<T,- E> 
- Overrides:
- hashCodein class- AbstractExtractor<T,- E> 
- Returns:
- an integer hash value for this UniversalExtractor object
 
- 
toStringProvide a human-readable description of thisUniversalExtractorobject.
- 
initprotected void init()Called in constructor and deserializers.
- 
getMethodNameReturn the method name that this extractor is configured to invoke. If a reflection-based method extractor,isMethodExtractor(), return the method name to be invoked. If a property extractor, return the likely JavaBean accessor method name.- Returns:
- method name
 
- 
getNameReturn the name passed intoUniversalExtractor(String).- Returns:
- the name of extraction attribute.
 
- 
getPropertyNameReturn the property name of this extractor.- Returns:
- property name of this extractor; otherwise, return null.
 
- 
isPropertyExtractorpublic boolean isPropertyExtractor()Return true if this is a Property extractor.- Returns:
- true if this a property extractor.
 
- 
isMethodExtractorpublic boolean isMethodExtractor()Return true if this a method extractor.- Returns:
- true if this is a method extractor.
 
- 
getParametersReturn the array of arguments used to invoke the method.- Returns:
- the array of arguments used to invoke the method
 
- 
extractComplexExtract from target using reflection or map access. If name is a property, reflection accessor method lookup onTfails andTis an instanceMap, use canonical name to get value from target. If successful, cache the reflection computation.- Parameters:
- oTarget- the target
- Returns:
- value extracted from target
- Throws:
- InvocationTargetException- if reflection method lookup fails
- IllegalAccessException- if reflection method lookup fails
 
- 
createExtractorReturn a ValueExtractor representing dot separated list of property and/or method names.- Type Parameters:
- T- the type of the value to extract from
- E- the type of value that will be extracted
- Parameters:
- sNames- dot-delimited property and/or methods name(s)
- Returns:
- UniversalExtractorif only one name in parameter; otherwise, return a- ChainedExtractorwith a UniversalExtractor for each name.
 
- 
readExternalRestore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
- readExternalin 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
 
- 
writeExternalSave the contents of this object by storing the object's state into the passed DataOutput object.- Specified by:
- writeExternalin interface- ExternalizableLite
- Parameters:
- out- the DataOutput stream to write the state of this object to
- Throws:
- IOException- if an I/O exception occurs
 
- 
readExternalRestore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
- readExternalin interface- PortableObject
- Parameters:
- in- the PofReader from which to read the object's state
- Throws:
- IOException- if an I/O error occurs
 
- 
writeExternalSave the contents of a POF user type instance by writing its state using the specified PofWriter object.- Specified by:
- writeExternalin interface- PortableObject
- Parameters:
- out- the PofWriter to which to write the object's state
- Throws:
- IOException- if an I/O error occurs
 
 
-