Package com.tangosol.run.xml
Class IterableAdapter
java.lang.Object
com.tangosol.util.Base
com.tangosol.util.BitHelper
com.tangosol.util.ExternalizableHelper
com.tangosol.run.xml.PropertyAdapter
com.tangosol.run.xml.IterableAdapter
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
ArrayAdapter
,CollectionAdapter
,MapAdapter
,PrimitiveArrayAdapter
An IterableAdapter is the base class for any data type that must be
iterated over to serialize/deserialize, such as arrays, collections
and maps.
<property>
<name>People</name>
<xml-name>people</xml-name> <!-- optional, empty name indicates anonymous element -->
<adapter>...</adapter> <!-- optional -->
<type>...</type> <!-- defaults via reflection -->
<class>...</class> <!-- defaults to <type> -->
<sparse>true</sparse> <!-- defaults to false -->
<empty-is-null>true</empty-is-null> <!-- defaults to false -->
<element> <!-- optional, depends on the adapter -->
<xml-name>person</xml-name> <!-- optional, nests the elements -->
</element>
<property>
Example of collection/array nested within collection tags:
<doc>
<people>
<person>...</person>
<person>...</person>
...
</people>
</doc>
Example of collection/array nested directly within the document:
<doc>
<person>...</person>
<person>...</person>
...
</doc>
Example of map nested within collection tags:
<doc>
<people>
<person>
<name>...</name>
<number>...</number>
</person>
<person>
<name>...</name>
<number>...</number>
</person>
...
</people>
</doc>
Example of map nested directly within the document:
<doc>
<person>
<name>...</name>
<number>...</number>
</person>
<person>
<name>...</name>
<number>...</number>
</person>
...
</doc>
- Version:
- 1.00 2001.03.18
- Author:
- cp
- 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.XmlBeanClassCache
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
Empty-is-null option: Empty iterable values are not stored in the serialized form of the XmlBean nor in the XML form of the XmlBean.protected boolean
Sparse array storage option.protected String
Name used for each element of the array when formatted into XML.Fields inherited from class com.tangosol.run.xml.PropertyAdapter
m_clzType, m_fAttribute, m_infoBean, m_methodClone, m_methodGet, m_methodSet, m_sName, m_sNmsPrefix, m_sNmsUri, m_sXml, NOPARAMS
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
ConstructorDescriptionIterableAdapter
(XmlBean.BeanInfo infoBean, Class clzType, String sName, String sXml, XmlElement xml) Construct a IterableAdapter. -
Method Summary
Modifier and TypeMethodDescriptionprotected PropertyAdapter
findAdapter
(XmlBean.BeanInfo infoBean, XmlElement xml) Obtain a PropertyAdapapter for a map entry key or valuefromXml
(XmlElement xml) Deserialize an object from an XML element.boolean
Determine if the property value must be deep-cloned.boolean
boolean
isNested()
boolean
isSparse()
protected abstract Object
readElements
(XmlElement xml) Serialize an object into an XML element.protected abstract void
writeElements
(XmlElement xml, Object o) Methods inherited from class com.tangosol.run.xml.PropertyAdapter
clone, equalsValue, findAttribute, findElement, fromUri, get, getAccessor, getBeanInfo, getCloner, getElements, getLocalXmlName, getMutator, getName, getNamespacePrefix, getNamespaceUri, getType, getXmlName, hash, isAnonymous, isAttribute, isElementMatch, isEmpty, readExternal, readXml, set, setNamespacePrefix, toString, toUri, writeExternal, writeXml
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, 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, 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
-
Field Details
-
m_fSparse
protected boolean m_fSparseSparse array storage option. -
m_fEmptyIsNull
protected boolean m_fEmptyIsNullEmpty-is-null option: Empty iterable values are not stored in the serialized form of the XmlBean nor in the XML form of the XmlBean. -
m_sElement
Name used for each element of the array when formatted into XML. If null, then the elements are placed directly into the document using the adapter's XML name.
-
-
Constructor Details
-
IterableAdapter
public IterableAdapter(XmlBean.BeanInfo infoBean, Class clzType, String sName, String sXml, XmlElement xml) Construct a IterableAdapter.- Parameters:
infoBean
- BeanInfo for a bean containing this propertyclzType
- the type of the propertysName
- the property namesXml
- the XML tag namexml
- additional XML information
-
-
Method Details
-
isCloneRequired
public boolean isCloneRequired()Description copied from class:PropertyAdapter
Determine if the property value must be deep-cloned. Typically, a property value must be deep-cloned if it is a mutable reference type, e.g. StringBuffer, Date, byte[].- Specified by:
isCloneRequired
in classPropertyAdapter
- Returns:
- true if the property value must be "deep" cloned when the containing object is cloned
-
isSparse
public boolean isSparse()- Returns:
- true if the iterable data should be stored in a sparse format in XML
-
isEmptyIsNull
public boolean isEmptyIsNull()- Returns:
- true if the iterable data should not be stored at all if it is empty, such as a zero-length array or empty collection
-
getElementName
- Returns:
- the local XML name of the individual array elements (null if the array elements are nested directly within the document)
-
isNested
public boolean isNested()- Returns:
- true only if this adapter creates a single XML element on writeXml and reads from a single XML element on readXml
-
fromXml
Deserialize an object from an XML element.- Overrides:
fromXml
in classPropertyAdapter
- Parameters:
xml
- the XML element to deserialize from- Returns:
- the object deserialized from the XML element
- Throws:
UnsupportedOperationException
- if the property cannot be read from a single XML element
-
toXml
Serialize an object into an XML element.- Overrides:
toXml
in classPropertyAdapter
- Parameters:
o
- the object to serialize- Returns:
- the XML element representing the serialized form of the passed object
- Throws:
UnsupportedOperationException
- if the property cannot be written to a single XML element
-
readElements
- Parameters:
xml
- the XML element containing the XML elements to deserialize from- Returns:
- the object deserialized from the XML (not null)
-
writeElements
- Parameters:
xml
- the XML element to which the iterable elements are writteno
- the object to serialize (not null)
-
findAdapter
Obtain a PropertyAdapapter for a map entry key or value- Parameters:
infoBean
- BeanInfo for a bean containing this propertyxml
- the information about the map entry key or value- Returns:
- a PropertyAdapter for the map entry key or value
-