org.apache.axis.encoding.ser

Class BeanDeserializer

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

public class BeanDeserializer
extends DeserializerImpl
implements Serializable

General purpose deserializer for an arbitrary java bean.

Authors:
Sam Ruby
Rich Scheuerle
Tom Jordahl

Field Summary

protected SimpleDeserializer
cacheStringDSer
protected QName
cacheXMLType
protected int
collectionIndex
protected Target
constructorTarget
Constructor Target object to use (if constructorToUse != null)
protected Constructor
constructorToUse
Constructor if no default constructor
protected static Log
log
protected QName
prevQName
protected Map
propertyMap
protected TypeDesc
typeDesc
Type metadata about this class for XML deserialization

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

Constructor Summary

BeanDeserializer(Class javaType, QName xmlType)
BeanDeserializer(Class javaType, QName xmlType, TypeDesc typeDesc)
BeanDeserializer(Class javaType, QName xmlType, TypeDesc typeDesc, Map propertyMap)

Method Summary

void
characters(char[] chars, int start, int end)
BeanPropertyDescriptor
getAnyPropertyDesc()
Get a BeanPropertyDescriptor which indicates where we should put extensibility elements (i.e.
protected Deserializer
getDeserializer(QName xmlType, Class javaType, String href, DeserializationContext context)
Get the Deserializer for the attribute or child element.
protected void
handleMixedContent()
void
onEndElement(String namespace, String localName, DeserializationContext context)
onEndElement is called by endElement.
SOAPHandler
onStartChild(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context)
Deserializer interface called on each child element encountered in the XML stream.
void
onStartElement(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context)
Set the bean properties that correspond to element attributes.
void
startElement(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context)
startElement The ONLY reason that this method is overridden is so that the object value can be set or a reasonable exception is thrown indicating that the object cannot be created.

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

cacheStringDSer

protected SimpleDeserializer cacheStringDSer


cacheXMLType

protected QName cacheXMLType


collectionIndex

protected int collectionIndex


constructorTarget

protected Target constructorTarget
Constructor Target object to use (if constructorToUse != null)


constructorToUse

protected Constructor constructorToUse
Constructor if no default constructor


log

protected static Log log


prevQName

protected QName prevQName


propertyMap

protected Map propertyMap


typeDesc

protected TypeDesc typeDesc
Type metadata about this class for XML deserialization

Constructor Details

BeanDeserializer

public BeanDeserializer(Class javaType,
                        QName xmlType)


BeanDeserializer

public BeanDeserializer(Class javaType,
                        QName xmlType,
                        TypeDesc typeDesc)


BeanDeserializer

public BeanDeserializer(Class javaType,
                        QName xmlType,
                        TypeDesc typeDesc,
                        Map propertyMap)

Method Details

characters

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


getAnyPropertyDesc

public BeanPropertyDescriptor getAnyPropertyDesc()
Get a BeanPropertyDescriptor which indicates where we should put extensibility elements (i.e. XML which falls under the auspices of an <xsd:any> declaration in the schema)

Returns:
an appropriate BeanPropertyDescriptor, or null


getDeserializer

protected Deserializer getDeserializer(QName xmlType,
                                       Class javaType,
                                       String href,
                                       DeserializationContext context)
Get the Deserializer for the attribute or child element.

Parameters:
xmlType - QName of the attribute/child element or null if not known.
javaType - Class of the corresponding property
href - String is the value of the href attribute, which is used to determine whether the child element is complete or an href to another element.
context - DeserializationContext

Returns:
Deserializer or null if not found.


handleMixedContent

protected void handleMixedContent()
            throws SAXException


onEndElement

public void onEndElement(String namespace,
                         String localName,
                         DeserializationContext context)
            throws SAXException
onEndElement is called by endElement. It is not called if the element has an href.
Specified by:
onEndElement in interface Deserializer
Overrides:
onEndElement in interface DeserializerImpl

Parameters:
namespace - is the namespace of the child element
localName - is the local name of the child element
context - is the deserialization context


onStartChild

public SOAPHandler onStartChild(String namespace,
                                String localName,
                                String prefix,
                                Attributes attributes,
                                DeserializationContext context)
            throws SAXException
Deserializer interface called on each child element encountered in the XML stream.
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
Set the bean properties that correspond to element attributes. This method is invoked after startElement when the element requires deserialization (i.e. the element is not an href and the value is not nil.)
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 attributes on the element...used to get the type
context - is the DeserializationContext


startElement

public void startElement(String namespace,
                         String localName,
                         String prefix,
                         Attributes attributes,
                         DeserializationContext context)
            throws SAXException
startElement The ONLY reason that this method is overridden is so that the object value can be set or a reasonable exception is thrown indicating that the object cannot be created. This is done at this point so that it occurs BEFORE href/id processing.
Specified by:
startElement in interface Deserializer
Overrides:
startElement 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 attributes on the element...used to get the type
context - is the DeserializationContext


Copyright B) 2005 Apache Web Services Project. All Rights Reserved.