Class CompositeListUnion

  • All Implemented Interfaces:
    Converter, Repeater

    class CompositeListUnion
    extends java.lang.Object
    implements Repeater
    The CompositeListUnion object is used to act as a mediator for multiple converters associated with a particular union group. This will basically determine which Converter should be delegated to based on either the XML element name being read or the type of the instance object being written. Selection of the converter is done by consulting the Group of labels representing the union declaration.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Context context
      This is the current context used for the serialization.
      private LabelMap elements
      This contains the labels in the union group keyed by name.
      private Group group
      This contains the group of labels associated with the union.
      private Expression path
      This is the path expression used to represent this union.
      private Style style
      This is this style associated with the serialization context.
      private Type type
      This is the type field or method annotated as a union.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object read​(InputNode node)
      The read method uses the name of the XML element to select a converter to be used to read the instance.
      java.lang.Object read​(InputNode node, java.lang.Object value)
      The read method uses the name of the XML element to select a converter to be used to read the instance.
      private java.lang.Object readElement​(InputNode node)
      The readElement method uses the name of the element to select a converter to be used to read the instance.
      private java.lang.Object readElement​(InputNode node, java.lang.Object value)
      The readElement method uses the name of the element to select a converter to be used to read the instance.
      private java.lang.Object readText​(InputNode node)
      The readText method is used to read free text from between the declared elements and add them to a list.
      private java.lang.Object readText​(InputNode node, java.lang.Object value)
      The readText method is used to read free text from between the declared elements and add them to a list.
      boolean validate​(InputNode node)
      The validate method is used to validate the XML element provided using an associated class schema.
      void write​(OutputNode node, java.lang.Object source)
      The write method uses the name of the XML element to select a converter to be used to write the instance.
      private void write​(OutputNode node, java.lang.Object item, Label label)
      The write method uses the name of the XML element to select a converter to be used to write the instance.
      private void write​(OutputNode node, java.util.Collection list)
      The write method uses the name of the XML element to select a converter to be used to write the instance.
      • Methods inherited from class java.lang.Object

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

      • elements

        private final LabelMap elements
        This contains the labels in the union group keyed by name.
      • path

        private final Expression path
        This is the path expression used to represent this union.
      • context

        private final Context context
        This is the current context used for the serialization.
      • group

        private final Group group
        This contains the group of labels associated with the union.
      • style

        private final Style style
        This is this style associated with the serialization context.
      • type

        private final Type type
        This is the type field or method annotated as a union.
    • Constructor Detail

      • CompositeListUnion

        public CompositeListUnion​(Context context,
                                  Group group,
                                  Expression path,
                                  Type type)
                           throws java.lang.Exception
        Constructor for the CompositeListUnion object. This is used to create a converter that delegates to other associated converters within the union group depending on the XML element name being read or the instance type that is being written.
        Parameters:
        context - this is the context used for the serialization
        group - this is the union group used for delegation
        path - this is the path expression representing this union
        type - this is the annotated field or method to be used
        Throws:
        java.lang.Exception
    • Method Detail

      • read

        public java.lang.Object read​(InputNode node)
                              throws java.lang.Exception
        The read method uses the name of the XML element to select a converter to be used to read the instance. Selection of the converter is done by looking up the associated label from the union group using the element name. Once the converter has been selected it is used to read the instance.
        Specified by:
        read in interface Converter
        Parameters:
        node - this is the XML element used to read the instance
        Returns:
        this is the instance that has been read by this
        Throws:
        java.lang.Exception - if a deserialized type cannot be instantiated
      • readElement

        private java.lang.Object readElement​(InputNode node)
                                      throws java.lang.Exception
        The readElement method uses the name of the element to select a converter to be used to read the instance. Selection of the converter is done by looking up the associated label from the union group using the element name. Once the converter has been selected it is used to read the instance.
        Parameters:
        node - this is the XML element used to read the instance
        Returns:
        this is the instance that has been read by this
        Throws:
        java.lang.Exception
      • readText

        private java.lang.Object readText​(InputNode node)
                                   throws java.lang.Exception
        The readText method is used to read free text from between the declared elements and add them to a list. Consuming free text in this manner enables an element list union to parse unstructured XML such as XHTML.
        Parameters:
        node - this is the node to consume the free text from
        Returns:
        this returns the list with the text added to it
        Throws:
        java.lang.Exception
      • read

        public java.lang.Object read​(InputNode node,
                                     java.lang.Object value)
                              throws java.lang.Exception
        The read method uses the name of the XML element to select a converter to be used to read the instance. Selection of the converter is done by looking up the associated label from the union group using the element name. Once the converter has been selected it is used to read the instance.
        Specified by:
        read in interface Converter
        Specified by:
        read in interface Repeater
        Parameters:
        node - this is the XML element used to read the instance
        value - this is the value that is to be repeated
        Returns:
        this is the instance that has been read by this
        Throws:
        java.lang.Exception - if a deserialized type cannot be instantiated
      • readElement

        private java.lang.Object readElement​(InputNode node,
                                             java.lang.Object value)
                                      throws java.lang.Exception
        The readElement method uses the name of the element to select a converter to be used to read the instance. Selection of the converter is done by looking up the associated label from the union group using the element name. Once the converter has been selected it is used to read the instance.
        Parameters:
        node - this is the XML element used to read the instance
        value - this is the value that is to be repeated
        Returns:
        this is the instance that has been read by this
        Throws:
        java.lang.Exception
      • readText

        private java.lang.Object readText​(InputNode node,
                                          java.lang.Object value)
                                   throws java.lang.Exception
        The readText method is used to read free text from between the declared elements and add them to a list. Consuming free text in this manner enables an element list union to parse unstructured XML such as XHTML.
        Parameters:
        node - this is the node to consume the free text from
        value - this is the value that is to be repeated
        Returns:
        this returns the list with the text added to it
        Throws:
        java.lang.Exception
      • validate

        public boolean validate​(InputNode node)
                         throws java.lang.Exception
        The validate method is used to validate the XML element provided using an associated class schema. The schema is selected using the name of the XML element to acquire the associated converter. Once the converter has been acquired it is delegated to and validated against it.
        Specified by:
        validate in interface Converter
        Parameters:
        node - this is the input XML element to be validated
        Returns:
        this returns true if the node validates
        Throws:
        java.lang.Exception - if the class XML schema does not fully match
      • write

        public void write​(OutputNode node,
                          java.lang.Object source)
                   throws java.lang.Exception
        The write method uses the name of the XML element to select a converter to be used to write the instance. Selection of the converter is done by looking up the associated label from the union group using the instance type. Once the converter has been selected it is used to write the instance.
        Specified by:
        write in interface Converter
        Parameters:
        source - this is the source collection to be serialized
        node - this is the XML element container to be populated
        Throws:
        java.lang.Exception - throw if the object cannot be serialized
      • write

        private void write​(OutputNode node,
                           java.util.Collection list)
                    throws java.lang.Exception
        The write method uses the name of the XML element to select a converter to be used to write the instance. Selection of the converter is done by looking up the associated label from the union group using the instance type. Once the converter has been selected it is used to write the instance.
        Parameters:
        node - this is the XML element used to write the instance
        list - this is the value that is to be written
        Throws:
        java.lang.Exception
      • write

        private void write​(OutputNode node,
                           java.lang.Object item,
                           Label label)
                    throws java.lang.Exception
        The write method uses the name of the XML element to select a converter to be used to write the instance. Selection of the converter is done by looking up the associated label from the union group using the instance type. Once the converter has been selected it is used to write the instance.
        Parameters:
        node - this is the XML element used to write the instance
        item - this is the individual list entry to be serialized
        label - this is the label to used to acquire the converter
        Throws:
        java.lang.Exception