Class PofExtractor<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.PofExtractor<T,E>
-
- All Implemented Interfaces:
CanonicallyNamed
,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>
public class PofExtractor<T,E> extends AbstractExtractor<T,E> implements PortableObject
POF-based ValueExtractor implementation. PofExtractor takes advantage of POF's indexed state to extract part of an object without needing to deserialize the entire object.POF uses a compact form in the serialized value when possible. For example, some numeric values are represented as special POF intrinsic types in which the type implies the value. As a result, POF requires the receiver of a value to have implicit knowledge of the type. PofExtractor uses the class supplied in the constructor as the source of the type information. If the class is null, PofExtractor will infer the type from the serialized state.
Example where extracted value is double:
PofExtractor extractor = new PofExtractor(double.class, 3);
Example where extracted value should be inferred:PofExtractor extractor = new PofExtractor(null, 4);
- Since:
- Coherence 3.5
- Author:
- as 2009.02.14
- See Also:
- Serialized Form
-
-
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.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
Constructors Constructor Description PofExtractor()
Default constructor (necessary for the PortableObject interface).PofExtractor(Class<E> clz, int iProp)
Constructs a PofExtractor based on a property index.PofExtractor(Class<E> clz, int iProp, String sNameCanon)
Constructs a PofExtractor based on a property index while providing the property's canonical name.PofExtractor(Class<E> clz, PofNavigator navigator)
Constructs a PofExtractor based on a POF navigator.PofExtractor(Class<E> clz, PofNavigator navigator, int nTarget)
Constructs a PofExtractor based on a POF navigator and the entry extraction target.PofExtractor(Class<E> clz, PofNavigator navigator, int nTarget, String sNameCanon)
Constructs a PofExtractor based on a POF navigator while providing its canonical name.PofExtractor(Class<E> clz, PofNavigator navigator, String sNameCanon)
Constructs a VALUE PofExtractor based on a POF navigator while providing its canonical name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
Compare the PofExtractor with another object to determine equality.E
extractFromEntry(Map.Entry entry)
Extracts the value from the passed Entry object.E
extractOriginalFromEntry(MapTrigger.Entry entry)
Extract the value from the "original value" of the passed Entry object or the key (if targeted).Class<E>
getClassExtracted()
Obtain the Class of the extracted value.PofNavigator
getNavigator()
Obtain the POF navigator for this extractor.protected int
getPofTypeId(PofContext ctx)
compute the expected pof type id based on the class.int
hashCode()
Return the hashCode of a non-nullcanonical name
; otherwise, the hash code isPofNavigator.hashCode() implementation
.void
readExternal(PofReader in)
Restore the contents of a user type instance by reading its state using the specified PofReader object.String
toString()
Return a human-readable description for this PofExtractor.void
writeExternal(PofWriter out)
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.-
Methods inherited from class com.tangosol.util.extractor.AbstractExtractor
compare, compareEntries, extract, getCanonicalName, 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, 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, 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
andThen, apply, applyAsDouble, applyAsInt, applyAsLong, compose, fromKey
-
-
-
-
Constructor Detail
-
PofExtractor
public PofExtractor()
Default constructor (necessary for the PortableObject interface).
-
PofExtractor
public PofExtractor(Class<E> clz, int iProp)
Constructs a PofExtractor based on a property index.This constructor is equivalent to:
PofExtractor extractor = new PofExtractor(clz, new SimplePofPath(iProp), VALUE);
- Parameters:
clz
- the required class of the extracted value or null if the class is to be inferred from the serialized stateiProp
- property index
-
PofExtractor
public PofExtractor(Class<E> clz, int iProp, String sNameCanon)
Constructs a PofExtractor based on a property index while providing the property's canonical name. Providing an appropriate canonical name enables equivalence with otherValueExtractor
instances with same canonical name. SeeValueExtractor.equals(Object)
andValueExtractor.getCanonicalName()
.- Parameters:
clz
- the required class of the extracted value or null if the class is to be inferred from the serialized stateiProp
- property indexsNameCanon
- the canonical name for this extractor- Since:
- 12.2.1.4
-
PofExtractor
public PofExtractor(Class<E> clz, PofNavigator navigator)
Constructs a PofExtractor based on a POF navigator.This constructor is equivalent to:
PofExtractor extractor = new PofExtractor(clz, navigator, VALUE);
- Parameters:
clz
- the required class of the extracted value or null if the class is to be inferred from the serialized statenavigator
- POF navigator
-
PofExtractor
public PofExtractor(Class<E> clz, PofNavigator navigator, int nTarget)
Constructs a PofExtractor based on a POF navigator and the entry extraction target.- Parameters:
clz
- the required class of the extracted value or null if the class is to be inferred from the serialized statenavigator
- POF navigatornTarget
- one of theAbstractExtractor.VALUE
orAbstractExtractor.KEY
values
-
PofExtractor
public PofExtractor(Class<E> clz, PofNavigator navigator, int nTarget, String sNameCanon)
Constructs a PofExtractor based on a POF navigator while providing its canonical name.- Parameters:
clz
- the required class of the extracted value ornull
if the class is to be inferred from the serialized statenavigator
- POF navigatornTarget
- one of theAbstractExtractor.VALUE
orAbstractExtractor.KEY
valuessNameCanon
-canonical name
for this extractor- Since:
- 12.2.1.4
-
PofExtractor
public PofExtractor(Class<E> clz, PofNavigator navigator, String sNameCanon)
Constructs a VALUE PofExtractor based on a POF navigator while providing its canonical name.- Parameters:
clz
- the required class of the extracted value or null if the class is to be inferred from the serialized statenavigator
- POF navigatorsNameCanon
-canonical name
for this extractor- Since:
- 12.2.1.4
-
-
Method Detail
-
extractFromEntry
public E extractFromEntry(Map.Entry entry)
Extracts the value from the passed Entry object.It is expected that this extractor will only be used against POF-encoded entries implementing
BinaryEntry
interface.- Overrides:
extractFromEntry
in classAbstractExtractor<T,E>
- Parameters:
entry
- an Entry object to extract a value from- Returns:
- the extracted value
- Throws:
UnsupportedOperationException
- if the specified Entry is not a POF-encodedBinaryEntry
or the serializer is not a PofContextClassCastException
- if the extracted value is incompatible with the specified class
-
extractOriginalFromEntry
public E extractOriginalFromEntry(MapTrigger.Entry entry)
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
-
getNavigator
public PofNavigator getNavigator()
Obtain the POF navigator for this extractor.- Returns:
- the POF navigator
-
getClassExtracted
public Class<E> getClassExtracted()
Obtain the Class of the extracted value.- Returns:
- the expected Class
-
equals
public boolean equals(Object o)
Compare the PofExtractor with another object to determine equality.AbstractExtractor.equals(Object)
contract takes precedence when applicable, falling back to implementation specific equals when this ando
have non-null canonical name.Two PofExtractor objects are considered equal iff their navigators are equal and they have the same target (key or value).
- Specified by:
equals
in interfaceComparator<T>
- Specified by:
equals
in interfaceValueExtractor<T,E>
- Overrides:
equals
in classAbstractExtractor<T,E>
- Parameters:
o
- the reference object with which to compare- Returns:
- true iff this PofExtractor and the passed object are equivalent
-
hashCode
public int hashCode()
Return the hashCode of a non-nullcanonical name
; otherwise, the hash code isPofNavigator.hashCode() implementation
.- Specified by:
hashCode
in interfaceValueExtractor<T,E>
- Overrides:
hashCode
in classAbstractExtractor<T,E>
- Returns:
- an integer hash value for this PofExtractor object
- See Also:
ValueExtractor.hashCode()
-
toString
public String toString()
Return a human-readable description for this PofExtractor.
-
readExternal
public void readExternal(PofReader in) throws IOException
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
public void writeExternal(PofWriter out) throws IOException
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
-
getPofTypeId
protected int getPofTypeId(PofContext ctx)
compute the expected pof type id based on the class.- Parameters:
ctx
- pof context- Returns:
- pof type id or T_UNKNOWN if the class is null.
-
-