Class AbstractExtractor<T,E> 
- All Implemented Interfaces:
- CanonicallyNamed,- 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>
- Direct Known Subclasses:
- AbstractCompositeExtractor,- ChainedFragmentExtractor,- ConditionalExtractor,- DeserializationAccelerator,- EntryExtractor,- FragmentExtractor,- IdentityExtractor,- KeyExtractor,- PartitionedJCacheStatistics.CacheStatisticsExtractor,- PofExtractor,- ReflectionExtractor,- ScriptValueExtractor,- UniversalExtractor
 Starting with Coherence 3.5, when used to extract information that is coming
 from a Map, subclasses have the additional ability to operate against the
 Map.Entry instead of just the value. In other words, like the
 EntryExtractor class, this allows an extractor implementation to
 extract a desired value using all available information on the corresponding
 Map.Entry object and is intended to be used in advanced custom scenarios, when
 application code needs to look at both key and value at the same time or can
 make some very specific assumptions regarding to the implementation details of
 the underlying Entry object. To maintain full backwards compatibility, the
 default behavior remains to extract from the Value property of the Map.Entry.
 
 Note: subclasses are responsible for initialization and POF and/or
 Lite serialization of the m_nTarget field.
- Author:
- gg 2003.09.22
- 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 intIndicates that theextractFromEntry(java.util.Map.Entry)operation should use the Entry's key.protected intSpecifies which part of the entry should be used by theextractFromEntry(java.util.Map.Entry)operation.protected StringCanonical name for this extractor.static final intIndicates that theextractFromEntry(java.util.Map.Entry)operation should use the Entry's value.Fields 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 SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionintCompares its two arguments for order.intcompareEntries(QueryMap.Entry entry1, QueryMap.Entry entry2) Compare two entries based on the rules specified byComparator.booleanEquivalence by canonical name and target.Extract the value from the passed object.extractFromEntry(Map.Entry entry) Extract the value from the passed Entry object.Extract the value from the "original value" of the passed Entry object or the key (if targeted).Return the canonical name for this extractor.intReturnVALUE.inthashCode()HashCode value is hashCode of non-nullcanonical name; otherwise, it is the identity hashCode value.protected booleanisCanonicallyEquatable(Object oValue) Return true if either this oroValuehave a non-nullcanonical name.Methods 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, toString, 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, fromKey
- 
Field Details- 
VALUEpublic static final int VALUEIndicates that theextractFromEntry(java.util.Map.Entry)operation should use the Entry's value.- Since:
- Coherence 3.5
- See Also:
 
- 
KEYpublic static final int KEYIndicates that theextractFromEntry(java.util.Map.Entry)operation should use the Entry's key.- Since:
- Coherence 3.5
- See Also:
 
- 
m_nTargetprotected int m_nTargetSpecifies which part of the entry should be used by theextractFromEntry(java.util.Map.Entry)operation. Legal values areVALUE(default) orKEY.Note: subclasses are responsible for initialization and POF and/or Lite serialization of this field. - Since:
- Coherence 3.5
 
- 
m_sNameCanonCanonical name for this extractor.Note: subclasses are responsible for initialization and POF and/or Lite serialization of this field. - Since:
- 12.2.1.4
 
 
- 
- 
Constructor Details- 
AbstractExtractorpublic AbstractExtractor()
 
- 
- 
Method Details- 
extractDescription copied from interface:ValueExtractorExtract the value from the passed object. The returned value may be null. 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:
- extractin interface- ValueExtractor<T,- E> 
- Parameters:
- oTarget- the object to extract the value from
- Returns:
- the extracted value; null is an acceptable value
 
- 
getTargetpublic int getTarget()Description copied from interface:ValueExtractorReturnVALUE.- Specified by:
- getTargetin interface- ValueExtractor<T,- E> 
- Returns:
- VALUE
 
- 
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> 
- Returns:
- the extractor's canonical name, or null
 
- 
equalsEquivalence by canonical name and target.When precondition isCanonicallyEquatable(Object)is false, fall back to implementation specific equals implementation.- Specified by:
- equalsin interface- Comparator<T>
- Specified by:
- equalsin interface- ValueExtractor<T,- E> 
- Overrides:
- equalsin class- Object
- Parameters:
- o- the reference object with which to compare
- Returns:
- trueif canonical name match and no target mismatch
 
- 
hashCodepublic int hashCode()HashCode value is hashCode of non-nullcanonical name; otherwise, it is the identity hashCode value.Subclass computes hashCode when canonical name is null.
- 
compareCompares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.- Specified by:
- comparein interface- Comparator<T>
- Parameters:
- o1- the first object to be compared
- o2- the second object to be compared
- Returns:
- a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second
- Throws:
- ClassCastException- if the arguments' types prevent them from being compared by this Comparator.
 
- 
compareEntriesCompare two entries based on the rules specified byComparator.If possible, use the extractmethod to optimize the value extraction process.This method is expected to be implemented by Comparator wrappers, such as ChainedComparatorandInverseComparator, which simply pass on this invocation to the wrapped Comparator objects if they too implement this interface, or to invoke their default compare method passing the actual objects (not the extracted values) obtained from the extractor using the passed entries.This interface is also expected to be implemented by ValueExtractor implementations that implement the Comparator interface. It is expected that in most cases, the Comparator wrappers will eventually terminate at (i.e. delegate to) ValueExtractors that also implement this interface. - Specified by:
- compareEntriesin interface- QueryMapComparator<T>
- Parameters:
- entry1- the first entry to compare values from; read-only
- entry2- the second entry to compare values from; read-only
- Returns:
- a negative integer, zero, or a positive integer as the first entry denotes a value that is is less than, equal to, or greater than the value denoted by the second entry
 
- 
extractFromEntryExtract the value from the passed Entry object. The returned value should follow the conventions outlined in theextract(T)method. By overriding this method, an extractor implementation is able to extract a desired value using all available information on the corresponding Map.Entry object and is intended to be used in advanced custom scenarios, when application code needs to look at both key and value at the same time or can make some very specific assumptions regarding to the implementation details of the underlying Entry object.- Parameters:
- entry- an Entry object to extract a desired value from
- Returns:
- the extracted value
- Since:
- Coherence 3.5
 
- 
extractOriginalFromEntryExtract 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 theextractFromEntry(java.util.Map.Entry)method.- 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
- Since:
- Coherence 3.6
 
- 
isCanonicallyEquatableReturn true if either this oroValuehave a non-nullcanonical name.This is a precondition for solely relying on equals(Object)to compute equivalence in subclass implementations. SincehashCode()is computed differently when canonical name exists, implementation specific equivalence can only be used when both instances have a null canonical name; otherwise, the objectequals(Object)/hashCode()contract would be violated.- Parameters:
- oValue- an object
- Returns:
- Return trueif either this oroValuehave a non-nullcanonical name.
- Since:
- 12.2.1.4
 
 
-