Class CompositeList

java.lang.Object
org.simpleframework.xml.core.CompositeList
All Implemented Interfaces:
Converter

class CompositeList extends Object implements Converter
The CompositeList object is used to convert an element list to a collection of element entries. This in effect performs a root serialization and deserialization of entry elements for the collection object. On serialization each objects type must be checked against the XML annotation entry so that it is serialized in a form that can be deserialized.

    <list>
       <entry attribute="value">
          <text>example text value</text>
       </entry>
       <entry attribute="demo">
          <text>some other example</text>
       </entry>
    </list>
 
 
For the above XML element list the element entry is contained within the list. Each entry element is thus deserialized as a root element and then inserted into the list. This enables lists to be composed from XML documents. For serialization the reverse is done, each element taken from the collection is written as a root element to the owning element to create the list. Entry objects do not need to be of the same type.
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final Type
    This is the entry type for elements within the list.
    private final CollectionFactory
    This factory is used to create a suitable collection list.
    private final String
    This represents the name of the entry elements to write.
    private final Traverser
    This performs the traversal used for object serialization.
    private final Type
    This is the field or method that has been annotated.
  • Constructor Summary

    Constructors
    Constructor
    Description
    CompositeList(Context context, Type type, Type entry, String name)
    Constructor for the CompositeList object.
  • Method Summary

    Modifier and Type
    Method
    Description
    private Object
    populate(InputNode node, Object result)
    This populate method wll read the XML element list from the provided node and deserialize its children as entry types.
    This read method will read the XML element list from the provided node and deserialize its children as entry types.
    read(InputNode node, Object result)
    This read method will read the XML element map from the provided node and deserialize its children as entry types.
    boolean
    This validate method will validate the XML element list from the provided node and deserialize its children as entry types.
    private boolean
    validate(InputNode node, Class type)
    This validate method will validate the XML element list from the provided node and deserialize its children as entry types.
    void
    write(OutputNode node, Object source)
    This write method will write the specified object to the given XML element as as list entries.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • factory

      private final CollectionFactory factory
      This factory is used to create a suitable collection list.
    • root

      private final Traverser root
      This performs the traversal used for object serialization.
    • name

      private final String name
      This represents the name of the entry elements to write.
    • entry

      private final Type entry
      This is the entry type for elements within the list.
    • type

      private final Type type
      This is the field or method that has been annotated.
  • Constructor Details

    • CompositeList

      public CompositeList(Context context, Type type, Type entry, String name)
      Constructor for the CompositeList object. This is given the list type and entry type to be used. The list type is the Collection implementation that deserialized entry objects are inserted into.
      Parameters:
      context - this is the context object used for serialization
      type - this is the collection type for the list used
      entry - the entry type to be stored within the list
  • Method Details

    • read

      public Object read(InputNode node) throws Exception
      This read method will read the XML element list from the provided node and deserialize its children as entry types. This will each entry type is deserialized as a root type, that is, its Root annotation must be present and the name of the entry element must match that root element name.
      Specified by:
      read in interface Converter
      Parameters:
      node - this is the XML element that is to be deserialized
      Returns:
      this returns the item to attach to the object contact
      Throws:
      Exception - if a deserialized type cannot be instantiated
    • read

      public Object read(InputNode node, Object result) throws Exception
      This read method will read the XML element map from the provided node and deserialize its children as entry types. Each entry type must contain a key and value so that the entry can be inserted in to the map as a pair. If either the key or value is composite it is read as a root object, which means its Root annotation must be present and the name of the object element must match that root element name.
      Specified by:
      read in interface Converter
      Parameters:
      node - this is the XML element that is to be deserialized
      result - this is the map object that is to be populated
      Returns:
      this returns the item to attach to the object contact
      Throws:
      Exception - if a deserialized type cannot be instantiated
    • populate

      private Object populate(InputNode node, Object result) throws Exception
      This populate method wll read the XML element list from the provided node and deserialize its children as entry types. This will each entry type is deserialized as a root type, that is, its Root annotation must be present and the name of the entry element must match that root element name.
      Parameters:
      node - this is the XML element that is to be deserialized
      result - this is the collection that is to be populated
      Returns:
      this returns the item to attach to the object contact
      Throws:
      Exception
    • validate

      public boolean validate(InputNode node) throws Exception
      This validate method will validate the XML element list from the provided node and deserialize its children as entry types. This takes each entry type and validates it as a root type, that is, its Root annotation must be present and the name of the entry element must match that root element name.
      Specified by:
      validate in interface Converter
      Parameters:
      node - this is the XML element that is to be validated
      Returns:
      true if the element matches the XML schema class given
      Throws:
      Exception - if the class XML schema does not fully match
    • validate

      private boolean validate(InputNode node, Class type) throws Exception
      This validate method will validate the XML element list from the provided node and deserialize its children as entry types. This takes each entry type and validates it as a root type, that is, its Root annotation must be present and the name of the entry element must match that root element name.
      Parameters:
      node - this is the XML element that is to be validated
      type - this is the type to validate against the input node
      Returns:
      true if the element matches the XML schema class given
      Throws:
      Exception
    • write

      public void write(OutputNode node, Object source) throws Exception
      This write method will write the specified object to the given XML element as as list entries. Each entry within the given collection must be assignable from the annotated type specified within the ElementList annotation. Each entry is serialized as a root element, that is, its Root annotation is used to extract the name.
      Specified by:
      write in interface Converter
      Parameters:
      node - this is the XML element container to be populated
      source - this is the source collection to be serialized
      Throws:
      Exception - throw if the object cannot be serialized