public class PofExtractor<T,E> extends AbstractExtractor<T,E> implements PortableObject
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);
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
Base.LoggingWriter, Base.StackFrame
KEY, m_nTarget, m_sNameCanon, VALUE
CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, 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_RSVD_2, 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, MAX_DECO_HEADER_BYTES, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
Constructor and 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.
|
Modifier and Type | Method and 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-null
canonical name ;
otherwise, the hash code is PofNavigator.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.
|
compare, compareEntries, extract, getCanonicalName, getTarget, isCanonicallyEquatable
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readByteArray, readCollection, readDate, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readInt, readInt, readIntArray2d, readLong, readLong, readMap, readMap, readObject, readObject, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, 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
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
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, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, 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
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
andThen, apply, applyAsDouble, applyAsInt, applyAsLong, compose, fromKey, identity, identityCast, of
andThen, compose
comparing, comparing, comparingDouble, comparingInt, comparingLong, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
public PofExtractor()
public PofExtractor(Class<E> clz, int iProp)
This constructor is equivalent to:
PofExtractor extractor = new PofExtractor(clz, new SimplePofPath(iProp), VALUE);
clz
- the required class of the extracted value or null if
the class is to be inferred from the serialized stateiProp
- property indexpublic PofExtractor(Class<E> clz, int iProp, String sNameCanon)
ValueExtractor
instances with same canonical name.
See ValueExtractor.equals(Object)
and
ValueExtractor.getCanonicalName()
.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 extractorpublic PofExtractor(Class<E> clz, PofNavigator navigator)
This constructor is equivalent to:
PofExtractor extractor = new PofExtractor(clz, navigator, VALUE);
clz
- the required class of the extracted value or null if
the class is to be inferred from the serialized statenavigator
- POF navigatorpublic PofExtractor(Class<E> clz, PofNavigator navigator, int nTarget)
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 the AbstractExtractor.VALUE
or AbstractExtractor.KEY
valuespublic PofExtractor(Class<E> clz, PofNavigator navigator, int nTarget, String sNameCanon)
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 the AbstractExtractor.VALUE
or AbstractExtractor.KEY
valuessNameCanon
- canonical name
for this extractorpublic PofExtractor(Class<E> clz, PofNavigator navigator, String sNameCanon)
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 extractorpublic E extractFromEntry(Map.Entry entry)
It is expected that this extractor will only be used against POF-encoded
entries implementing BinaryEntry
interface.
extractFromEntry
in class AbstractExtractor<T,E>
entry
- an Entry object to extract a value fromUnsupportedOperationException
- if the specified Entry is not
a POF-encoded BinaryEntry
or the serializer is not
a PofContextClassCastException
- if the extracted value is incompatible with
the specified classpublic E extractOriginalFromEntry(MapTrigger.Entry entry)
AbstractExtractor
AbstractExtractor.extractFromEntry(java.util.Map.Entry)
method.extractOriginalFromEntry
in class AbstractExtractor<T,E>
entry
- an Entry object whose original value should be used to
extract the desired value frompublic PofNavigator getNavigator()
public Class<E> getClassExtracted()
public boolean equals(Object o)
AbstractExtractor.equals(Object)
contract takes precedence when applicable,
falling back to implementation specific equals when this and o
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).
equals
in interface ValueExtractor<T,E>
equals
in interface Comparator
equals
in class AbstractExtractor<T,E>
o
- the reference object with which to comparepublic int hashCode()
canonical name
;
otherwise, the hash code is PofNavigator.hashCode() implementation
.hashCode
in interface ValueExtractor<T,E>
hashCode
in class AbstractExtractor<T,E>
ValueExtractor.hashCode()
public String toString()
public void readExternal(PofReader in) throws IOException
readExternal
in interface PortableObject
in
- the PofReader from which to read the object's stateIOException
- if an I/O error occurspublic void writeExternal(PofWriter out) throws IOException
writeExternal
in interface PortableObject
out
- the PofWriter to which to write the object's stateIOException
- if an I/O error occursprotected int getPofTypeId(PofContext ctx)
ctx
- pof context