Class CompositeArray

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

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

    <array length="2">
       <entry>
          <text>example text value</text>
       </entry>
       <entry>
          <text>some other example</text>
       </entry>
    </array>
 
 
For the above XML element list the element entry is contained within the array. Each entry element is deserialized as a root element and then inserted into the array. For serialization the reverse is done, each element taken from the array is written as a root element to the parent 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 array.
    private final ArrayFactory
    This factory is used to create an array for the contact.
    private final String
    This is the name to wrap each entry that is represented.
    private final Traverser
    This performs the traversal used for object serialization.
    private final Type
    This represents the actual field or method for the array.
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    This read method will read the XML element list from the provided node and deserialize its children as entry types.
    read(InputNode node, Object list)
    This read method will read the XML element list from the provided node and deserialize its children as entry types.
    private void
    read(InputNode node, Object list, int index)
    This is used to read the specified node from in to the list.
    boolean
    This validate method will validate the XML element list against the provided node and validate its children as entry types.
    private boolean
    validate(InputNode node, Class type)
    This validate method wll validate the XML element list against the provided node and validate 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 array entries.

    Methods inherited from class java.lang.Object

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

    • factory

      private final ArrayFactory factory
      This factory is used to create an array for the contact.
    • root

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

      private final String parent
      This is the name to wrap each entry that is represented.
    • entry

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

      private final Type type
      This represents the actual field or method for the array.
  • Constructor Details

    • CompositeArray

      public CompositeArray(Context context, Type type, Type entry, String parent)
      Constructor for the CompositeArray object. This is given the array type for the contact that is to be converted. An array of the specified type is used to hold the deserialized elements and will be the same length as the number of elements.
      Parameters:
      context - this is the context object used for serialization
      type - this is the field type for the array being used
      entry - this is the entry type for the array elements
      parent - this is the name to wrap the array element with
  • 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 ensures 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 list) throws Exception
      This read method will read the XML element list from the provided node and deserialize its children as entry types. This ensures 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
      list - this is the array 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

      private void read(InputNode node, Object list, int index) throws Exception
      This is used to read the specified node from in to the list. If the node is null then this represents a null element value in the array. The node can be null only if there is a parent and that parent contains no child XML elements.
      Parameters:
      node - this is the node to read the array value from
      list - this is the list to add the array value in to
      index - this is the offset to set the value in the array
      Throws:
      Exception
    • validate

      public boolean validate(InputNode node) throws Exception
      This validate method will validate the XML element list against the provided node and validate its children as entry types. This ensures each entry type is validated 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 wll validate the XML element list against the provided node and validate its children as entry types. This ensures each entry type is validated 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 array type used to create the array
      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 array entries. Each entry within the given array must be assignable to the array component type. Each array 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 object array to be serialized
      Throws:
      Exception - throw if the object cannot be serialized