Class ArrayDeserializer

  • All Implemented Interfaces:
    java.io.Serializable, Deserializer, Callback, Deserializer, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

    public class ArrayDeserializer
    extends DeserializerImpl
    An ArrayDeserializer handles deserializing SOAP arrays. Some code borrowed from ApacheSOAP - thanks to Matt Duftler!
    Author:
    Glen Daniels (gdaniels@apache.org) Multi-reference stuff:, Rich Scheuerle (scheu@us.ibm.com)
    See Also:
    Serialized Form
    • Field Detail

      • log

        protected static org.apache.commons.logging.Log log
      • arrayType

        public QName arrayType
      • curIndex

        public int curIndex
    • Constructor Detail

      • ArrayDeserializer

        public ArrayDeserializer()
    • Method Detail

      • onStartElement

        public void onStartElement​(java.lang.String namespace,
                                   java.lang.String localName,
                                   java.lang.String prefix,
                                   org.xml.sax.Attributes attributes,
                                   DeserializationContext context)
                            throws org.xml.sax.SAXException
        This method is invoked after startElement when the element requires deserialization (i.e. the element is not an href & the value is not nil) DeserializerImpl provides default behavior, which simply involves obtaining a correct Deserializer and plugging its handler.
        Specified by:
        onStartElement in interface Deserializer
        Overrides:
        onStartElement in class DeserializerImpl
        Parameters:
        namespace - is the namespace of the element
        localName - is the name of the element
        prefix - is the prefix of the element
        attributes - are the attrs on the element...used to get the type
        context - is the DeserializationContext
        Throws:
        org.xml.sax.SAXException
      • onStartChild

        public SOAPHandler onStartChild​(java.lang.String namespace,
                                        java.lang.String localName,
                                        java.lang.String prefix,
                                        org.xml.sax.Attributes attributes,
                                        DeserializationContext context)
                                 throws org.xml.sax.SAXException
        onStartChild is called on each child element.
        Specified by:
        onStartChild in interface Deserializer
        Overrides:
        onStartChild in class DeserializerImpl
        Parameters:
        namespace - is the namespace of the child element
        localName - is the local name of the child element
        prefix - is the prefix used on the name of the child element
        attributes - are the attributes of the child element
        context - is the deserialization context.
        Returns:
        is a Deserializer to use to deserialize a child (must be a derived class of SOAPHandler) or null if no deserialization should be performed.
        Throws:
        org.xml.sax.SAXException
      • onEndChild

        public void onEndChild​(java.lang.String namespace,
                               java.lang.String localName,
                               DeserializationContext context)
                        throws org.xml.sax.SAXException
        Overrides:
        onEndChild in class SOAPHandler
        Throws:
        org.xml.sax.SAXException
      • characters

        public void characters​(char[] chars,
                               int i,
                               int i1)
                        throws org.xml.sax.SAXException
        Specified by:
        characters in interface org.xml.sax.ContentHandler
        Overrides:
        characters in class SOAPHandler
        Throws:
        org.xml.sax.SAXException
      • setChildValue

        public void setChildValue​(java.lang.Object value,
                                  java.lang.Object hint)
                           throws org.xml.sax.SAXException
        set is called during deserialization to assign the Object value to the array position indicated by hint. The hint is always a single Integer. If the array being deserialized is a multi-dimensional array, the hint is converted into a series of indices to set the correct nested position. The array deserializer always deserializes into an ArrayList, which is converted and copied into the actual array after completion (by valueComplete). It is important to wait until all indices have been processed before invoking valueComplete.
        Specified by:
        setChildValue in interface Deserializer
        Overrides:
        setChildValue in class DeserializerImpl
        Parameters:
        value - value of the array element
        hint - index of the array element (Integer)
        Throws:
        org.xml.sax.SAXException
      • valueComplete

        public void valueComplete()
                           throws org.xml.sax.SAXException
        When valueComplete() is invoked on the array, first convert the array value into the expected array. Then call super.valueComplete() to inform referents that the array value is ready.
        Specified by:
        valueComplete in interface Deserializer
        Overrides:
        valueComplete in class DeserializerImpl
        Throws:
        org.xml.sax.SAXException