dsto.dfc.databeans.io
Class XmlCollectionsCodec

java.lang.Object
  extended by dsto.dfc.databeans.io.XmlCollectionsCodec
All Implemented Interfaces:
XmlDecoder, XmlEncoder

public class XmlCollectionsCodec
extends Object
implements XmlEncoder, XmlDecoder

Handles XML encode/decode of the Java collections types (Set, Map, List, or generic Collection). Also has special handling for IDataObject-compatible collections (eg SetDataObject, ListDataObject, etc).

Author:
Matthew Phillips

Constructor Summary
XmlCollectionsCodec()
           
 
Method Summary
 boolean canEncode(XmlEncodeContext context, Object value)
          Test if this codec can encode a given object.
 Object decode(XmlDecodeContext context, org.jdom.Element element)
          Decode an XML representation into a value.
protected  Object decodeCollection(XmlDecodeContext context, org.jdom.Element element, Class defaultType)
          Decode a java.util.Collection.
protected  Object decodeMap(XmlDecodeContext context, org.jdom.Element element)
           
 org.jdom.Element encode(XmlEncodeContext context, Object value)
          Generate an XML representation of an object.
protected  org.jdom.Element encodeCollection(XmlEncodeContext context, Collection collection)
          Encode any java.util.Collection, with some extra special handling for List's.
protected  void encodeCollectionType(XmlEncodeContext context, org.jdom.Element element, Object collection, Class defaultType)
          Add the type and unmodifiable/synchronized attributes for a collection.
protected  org.jdom.Element encodeMap(XmlEncodeContext context, Map map)
           
protected  org.jdom.Element encodeSet(XmlEncodeContext context, Set set)
           
 boolean shouldPreserveIdentity(XmlEncodeContext context, Object value)
          Return true if the identity of the given value should be preserved.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XmlCollectionsCodec

public XmlCollectionsCodec()
Method Detail

shouldPreserveIdentity

public boolean shouldPreserveIdentity(XmlEncodeContext context,
                                      Object value)
Description copied from interface: XmlEncoder
Return true if the identity of the given value should be preserved. If true, any instances of the object after the first will be written out as references to the original rather than a copy.

Specified by:
shouldPreserveIdentity in interface XmlEncoder

canEncode

public boolean canEncode(XmlEncodeContext context,
                         Object value)
Description copied from interface: XmlEncoder
Test if this codec can encode a given object.

Specified by:
canEncode in interface XmlEncoder
Parameters:
context - The current encode context.
value - The value. May be null.
Returns:
True if this encoder should be used for value.

encode

public org.jdom.Element encode(XmlEncodeContext context,
                               Object value)
Description copied from interface: XmlEncoder
Generate an XML representation of an object.

Specified by:
encode in interface XmlEncoder
Parameters:
context - The encoding context.
value - The value to be encoded.
Returns:
The JDOM element created for the value.

decode

public Object decode(XmlDecodeContext context,
                     org.jdom.Element element)
              throws IllegalArgumentException,
                     ClassNotFoundException
Description copied from interface: XmlDecoder
Decode an XML representation into a value.

Specified by:
decode in interface XmlDecoder
Parameters:
context - The decode context.
element - The element to decode.
Returns:
The new object.
Throws:
IllegalArgumentException - if an error is found in the structure of the document.
ClassNotFoundException - if a referenced class cannot be found.

encodeMap

protected org.jdom.Element encodeMap(XmlEncodeContext context,
                                     Map map)

encodeSet

protected org.jdom.Element encodeSet(XmlEncodeContext context,
                                     Set set)

encodeCollection

protected org.jdom.Element encodeCollection(XmlEncodeContext context,
                                            Collection collection)
Encode any java.util.Collection, with some extra special handling for List's.


encodeCollectionType

protected void encodeCollectionType(XmlEncodeContext context,
                                    org.jdom.Element element,
                                    Object collection,
                                    Class defaultType)
Add the type and unmodifiable/synchronized attributes for a collection.

Parameters:
context - The context.
element - The element to build on.
collection - The collection.
defaultType - The default non-IDataObject type for the collection. If the collection is not an IDataObject and this is the same as the collection's actual type, the type attribute will be omitted.

decodeMap

protected Object decodeMap(XmlDecodeContext context,
                           org.jdom.Element element)
                    throws ClassNotFoundException,
                           IllegalArgumentException
Throws:
ClassNotFoundException
IllegalArgumentException

decodeCollection

protected Object decodeCollection(XmlDecodeContext context,
                                  org.jdom.Element element,
                                  Class defaultType)
                           throws ClassNotFoundException,
                                  IllegalArgumentException
Decode a java.util.Collection.

Throws:
ClassNotFoundException
IllegalArgumentException


Copyright © 2008 Commonwealth of Australia