org.apache.axis.encoding.ser

Class ArrayDeserializer

Implemented Interfaces:
Deserializer, java.io.Serializable, Callback, Deserializer, Deserializer

public class ArrayDeserializer
extends DeserializerImpl

An ArrayDeserializer handles deserializing SOAP arrays. Some code borrowed from ApacheSOAP - thanks to Matt Duftler!
Authors:
Glen Daniels (gdaniels@apache.org) Multi-reference stuff:
Rich Scheuerle (scheu@us.ibm.com)

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 Log
log

Fields inherited from class org.apache.axis.encoding.DeserializerImpl

componentsReadyFlag, defaultType, id, isEnded, isHref, isNil, log, targets, value

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

myElement

Method Summary

void
characters(char[] chars, int i, int i1)
void
onEndChild(String namespace, String localName, DeserializationContext context)
SOAPHandler
onStartChild(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context)
onStartChild is called on each child element.
void
onStartElement(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context)
This method is invoked after startElement when the element requires deserialization (i.e.
void
setChildValue(Object value, 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, onStartChild, onStartElement, registerValueTarget, removeValueTargets, setChildValue, setDefaultType, setValue, setValue, startElement, valueComplete

Methods inherited from class org.apache.axis.message.SOAPHandler

characters, endElement, makeNewElement, onEndChild, onStartChild, startElement

Field Details

arrayType

public QName arrayType

curIndex

public int curIndex

log

protected static Log log

Method Details

characters

public void characters(char[] chars,
                       int i,
                       int i1)
            throws SAXException
Overrides:
characters in interface SOAPHandler

onEndChild

public void onEndChild(String namespace,
                       String localName,
                       DeserializationContext context)
            throws SAXException
Overrides:
onEndChild in interface SOAPHandler

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 interface 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.

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 interface 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

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 interface DeserializerImpl
Parameters:
value - value of the array element
hint - index of the array element (Integer)

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 interface DeserializerImpl

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