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.