Class ArrayDeserializer

All Implemented Interfaces:
Serializable, Deserializer, Callback, Deserializer, ContentHandler, DTDHandler, EntityResolver, 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:
  • Field Details

    • log

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

      public QName arrayType
    • curIndex

      public int curIndex
  • Constructor Details

    • ArrayDeserializer

      public ArrayDeserializer()
  • Method Details

    • onStartElement

      public void onStartElement(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) throws 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:
      SAXException
    • onStartChild

      public SOAPHandler onStartChild(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) throws 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:
      SAXException
    • onEndChild

      public void onEndChild(String namespace, String localName, DeserializationContext context) throws SAXException
      Overrides:
      onEndChild in class SOAPHandler
      Throws:
      SAXException
    • characters

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

      public void setChildValue(Object value, Object hint) throws 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:
      SAXException
    • valueComplete

      public void valueComplete() throws 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:
      SAXException