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 TypeClassDescriptionclassDuring processing, the Array Deserializer stores the array in an ArrayListExtension class. -
Field Summary
FieldsModifier and TypeFieldDescriptionintprotected static org.apache.commons.logging.LogFields inherited from class org.apache.axis.encoding.DeserializerImpl
componentsReadyFlag, defaultType, id, isEnded, isHref, isNil, targets, valueFields inherited from class org.apache.axis.message.SOAPHandler
myElement -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcharacters(char[] chars, int i, int i1) voidonEndChild(String namespace, String localName, DeserializationContext context) onStartChild(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) onStartChild is called on each child element.voidonStartElement(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) This method is invoked after startElement when the element requires deserialization (i.e.voidsetChildValue(Object value, Object hint) set is called during deserialization to assign the Object value to the array position indicated by hint.voidWhen 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, startElementMethods inherited from class org.apache.axis.message.SOAPHandler
makeNewElementMethods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warningMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods 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:
onStartElementin interfaceDeserializer- Overrides:
onStartElementin 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:
onStartChildin interfaceDeserializer- Overrides:
onStartChildin 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:
onEndChildin classSOAPHandler- Throws:
SAXException
-
characters
- Specified by:
charactersin interfaceContentHandler- Overrides:
charactersin 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:
setChildValuein interfaceDeserializer- Overrides:
setChildValuein 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:
valueCompletein interfaceDeserializer- Overrides:
valueCompletein classDeserializerImpl- Throws:
SAXException
-