Class KeyExtractor<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>
ReflectionExtractor is that when used in various
EntryFilter implementations it forces
the evaluation of entry keys rather than entry values.
For example, consider a key object that consists of two properties: "FirstName" and "LastName". To retrieve all keys that have a value of the "LastName" property equal to "Smith", the following query could be used:
ValueExtractor extractor = new KeyExtractor("getLastName");
Set setKeys = cache.keySet(new EqualsFilter(extractor, "Smith"));
As of Coherence 3.5, the same effect can be achieved for subclasses of the
AbstractExtractor, for example:
ValueExtractor extractor = new ReflectionExtractor("getLastName", null,
AbstractExtractor.KEY);
Set setKeys = cache.keySet(new EqualsFilter(extractor, "Smith"));
Note: This class does not function with
PofExtractor and the mechanism
described above is recommended.- Since:
- Coherence 3.2
- Author:
- gg 2006.06.12
- 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.XmlBeanClassCacheNested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ValueExtractor<? super T, ? extends E> The underlying ValueExtractor.Fields inherited from class com.tangosol.util.extractor.AbstractExtractor
KEY, m_nTarget, m_sNameCanon, VALUEFields 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
ConstructorsConstructorDescriptionDefault constructor (necessary for the ExternalizableLite and PortableObject interfaces).KeyExtractor(ValueExtractor<? super T, ? extends E> extractor) Construct a KeyExtractor based on a specified ValueExtractor.KeyExtractor(String sMethod) Construct a KeyExtractor for a specified method name. -
Method Summary
Modifier and TypeMethodDescriptionbooleanEquivalence by canonical name and target.Extract the value from the passed object.Return the canonical name for this extractor.ValueExtractor<? super T, ? extends E> Obtain the underlying ValueExtractor.inthashCode()Compute hashCode from underlyingValueExtractor.static <T,E> ValueExtractor <T, E> of(ValueExtractor<T, E> extractor) Factory method for key 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()Return a human-readable description for this KeyExtractor.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.AbstractExtractor
compare, compareEntries, extractFromEntry, extractOriginalFromEntry, getTarget, isCanonicallyEquatableMethods 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, writeXmlSerializableMethods 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, toLongMethods 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, waitMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLongMethods inherited from interface com.tangosol.util.function.Remote.Function
andThen, composeMethods inherited from interface com.tangosol.util.ValueExtractor
andThen, apply, applyAsDouble, applyAsInt, applyAsLong, compose, fromKey
-
Field Details
-
m_extractor
The underlying ValueExtractor.
-
-
Constructor Details
-
KeyExtractor
public KeyExtractor()Default constructor (necessary for the ExternalizableLite and PortableObject interfaces). -
KeyExtractor
Construct a KeyExtractor based on a specified ValueExtractor.- Parameters:
extractor- the underlying ValueExtractor
-
KeyExtractor
Construct a KeyExtractor for a specified method name.- Parameters:
sMethod- a method name to construct an underlyingReflectionExtractorfor; this parameter can also be a dot-delimited sequence of method names which would result in a KeyExtractor based on theChainedExtractorthat is based on an array of corresponding ReflectionExtractor objects
-
-
Method Details
-
extract
Extract 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 interfaceValueExtractor<T,E> - Overrides:
extractin classAbstractExtractor<T,E> - Parameters:
oTarget- the object to extract the value from- Returns:
- the extracted value; null is an acceptable value
-
getCanonicalName
Description 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 interfaceCanonicallyNamed- Specified by:
getCanonicalNamein interfaceValueExtractor<T,E> - Overrides:
getCanonicalNamein classAbstractExtractor<T,E> - Returns:
- the extractor's canonical name, or
null
-
getExtractor
Obtain the underlying ValueExtractor.- Returns:
- the ValueExtractor
-
of
Factory method for key extractor.- Type Parameters:
T- the type of the value to extract fromE- the type of value that will be extracted- Parameters:
extractor- an extractor to convert to key extractor- Returns:
- key extractor based on the specified extractor
-
equals
Description copied from class:AbstractExtractorEquivalence by canonical name and target.When precondition
AbstractExtractor.isCanonicallyEquatable(Object)is false, fall back to implementation specific equals implementation.- Specified by:
equalsin interfaceComparator<T>- Specified by:
equalsin interfaceValueExtractor<T,E> - Overrides:
equalsin classAbstractExtractor<T,E> - Parameters:
o- the reference object with which to compare- Returns:
trueif canonical name match and no target mismatch
-
hashCode
public int hashCode()Compute hashCode from underlyingValueExtractor.- Specified by:
hashCodein interfaceValueExtractor<T,E> - Overrides:
hashCodein classAbstractExtractor<T,E> - Returns:
- an integer hash value for this KeyExtractor object
-
toString
Return a human-readable description for this KeyExtractor. -
readExternal
Restore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternalin 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:
writeExternalin 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:
readExternalin 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:
writeExternalin interfacePortableObject- Parameters:
out- the PofWriter to which to write the object's state- Throws:
IOException- if an I/O error occurs
-