Package 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:
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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
ArrayDeserializer.ArrayListExtension
During processing, the Array Deserializer stores the array in an ArrayListExtension class.
-
Field Summary
Fields Modifier and Type Field Description QName
arrayType
int
curIndex
protected static org.apache.commons.logging.Log
log
-
Fields inherited from class org.apache.axis.encoding.DeserializerImpl
componentsReadyFlag, defaultType, id, isEnded, isHref, isNil, targets, value
-
Fields inherited from class org.apache.axis.message.SOAPHandler
myElement
-
-
Constructor Summary
Constructors Constructor Description ArrayDeserializer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
characters(char[] chars, int i, int i1)
void
onEndChild(java.lang.String namespace, java.lang.String localName, DeserializationContext context)
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
-
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
-
-
-
-
Field Detail
-
log
protected static org.apache.commons.logging.Log log
-
arrayType
public QName arrayType
-
curIndex
public int curIndex
-
-
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 interfaceDeserializer
- Overrides:
onStartElement
in classDeserializerImpl
- Parameters:
namespace
- is the namespace of the elementlocalName
- is the name of the elementprefix
- is the prefix of the elementattributes
- are the attrs on the element...used to get the typecontext
- 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 interfaceDeserializer
- Overrides:
onStartChild
in classDeserializerImpl
- Parameters:
namespace
- is the namespace of the child elementlocalName
- is the local name of the child elementprefix
- is the prefix used on the name of the child elementattributes
- are the attributes of the child elementcontext
- 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 classSOAPHandler
- Throws:
org.xml.sax.SAXException
-
characters
public void characters(char[] chars, int i, int i1) throws org.xml.sax.SAXException
- Specified by:
characters
in interfaceorg.xml.sax.ContentHandler
- Overrides:
characters
in classSOAPHandler
- 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 interfaceDeserializer
- Overrides:
setChildValue
in classDeserializerImpl
- Parameters:
value
- value of the array elementhint
- 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 interfaceDeserializer
- Overrides:
valueComplete
in classDeserializerImpl
- Throws:
org.xml.sax.SAXException
-
-