## org.apache.axis.encoding.ser
Class ArrayDeserializer

    java.lang.Object
      |
      +--org.xml.sax.helpers.DefaultHandler
            |
            +--org.apache.axis.message.SOAPHandler
                  |
                  +--org.apache.axis.encoding.DeserializerImpl
                        |
                        +--org.apache.axis.encoding.ser.ArrayDeserializer

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

public class ArrayDeserializer
extends DeserializerImpl

An ArrayDeserializer handles deserializing SOAP arrays. Some code borrowed from ApacheSOAP - thanks to Matt Duftler!

Author:
  Glen Daniels (gdaniels@macromedia.com) Multi-reference stuff:, Rich Scheuerle (scheu@us.ibm.com)
See Also:
  Serialized Form

Nested Class Summary
`class` `ArrayDeserializer.ArrayListExtension` During processing, the Array Deserializer stores the array in an ArrayListExtension class.

Field Summary
`QName` `arrayType`
`int` `curIndex`
`protected static org.apache.commons.logging.Log` `log`

Fields inherited from class org.apache.axis.encoding.DeserializerImpl
`defaultType, id, isEnded, isHref, isNil, targets, value`

Fields inherited from class org.apache.axis.message.SOAPHandler
`myElement`

Constructor Summary
`ArrayDeserializer()`

Method Summary
`void` `characters(char[] chars, int i, int i1)`
`SOAPHandler` `onStartChild(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes attributes, DeserializationContext context)` onStartChild is called on each child element.
`void` `onStartElement(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes attributes, DeserializationContext context)` This method is invoked after startElement when the element requires deserialization (i.e.
`void` `setChildValue(java.lang.Object value, java.lang.Object hint)` set is called during deserialization to assign the Object value to the array position indicated by hint.
`void` `valueComplete()` When valueComplete() is invoked on the array, first convert the array value into the expected array.

Methods inherited from class org.apache.axis.encoding.DeserializerImpl
`addChildDeserializer, componentsReady, endElement, getDefaultType, getMechanismType, getValue, getValue, getValueTargets, moveValueTargets, onEndElement, registerValueTarget, removeValueTargets, setDefaultType, setValue, setValue, startElement`

Methods inherited from class org.apache.axis.message.SOAPHandler
`makeNewElement, onEndChild`

Methods inherited from class org.xml.sax.helpers.DefaultHandler
`endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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
    `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.
    `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 `org.xml.sax.helpers.DefaultHandler`
    `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)
    `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`
    `org.xml.sax.SAXException`

Copyright © 2003 Apache Web Services Project. All Rights Reserved.