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:
Serializable
,Deserializer
,Callback
,Deserializer
,ContentHandler
,DTDHandler
,EntityResolver
,ErrorHandler
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclass
During processing, the Array Deserializer stores the array in an ArrayListExtension class. -
Field Summary
FieldsModifier and TypeFieldDescriptionint
protected static org.apache.commons.logging.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 -
Method Summary
Modifier and TypeMethodDescriptionvoid
characters
(char[] chars, int i, int i1) void
onEndChild
(String namespace, String localName, DeserializationContext context) 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
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
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.xml.sax.ContentHandler
declaration
-
Field Details
-
log
protected static org.apache.commons.logging.Log log -
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 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:
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 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:
SAXException
-
onEndChild
public void onEndChild(String namespace, String localName, DeserializationContext context) throws SAXException - Overrides:
onEndChild
in classSOAPHandler
- Throws:
SAXException
-
characters
- Specified by:
characters
in interfaceContentHandler
- Overrides:
characters
in classSOAPHandler
- Throws:
SAXException
-
setChildValue
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:
SAXException
-
valueComplete
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:
SAXException
-