<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:45 PDT 2006 -->
<TITLE>
Deserializer (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.encoding.Deserializer interface">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="Deserializer (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/Deserializer.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/encoding/Callback.html" title="interface in org.apache.axis.encoding"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/encoding/DeserializerFactory.html" title="interface in org.apache.axis.encoding"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Deserializer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.axis.encoding</FONT>
<BR>
Interface Deserializer</H2>
<DL>
<DT><B>All Superinterfaces:</B> <DD><A HREF="../../../../org/apache/axis/encoding/Callback.html" title="interface in org.apache.axis.encoding">Callback</A>, <A HREF="../../../../javax/xml/rpc/encoding/Deserializer.html" title="interface in javax.xml.rpc.encoding">Deserializer</A>, java.io.Serializable</DD>
</DL>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../org/apache/axis/encoding/ser/castor/CastorDeserializer.html" title="class in org.apache.axis.encoding.ser.castor">CastorDeserializer</A>, <A HREF="../../../../org/apache/axis/encoding/ser/castor/CastorEnumTypeDeserializer.html" title="class in org.apache.axis.encoding.ser.castor">CastorEnumTypeDeserializer</A>, <A HREF="../../../../org/apache/axis/encoding/DeserializerImpl.html" title="class in org.apache.axis.encoding">DeserializerImpl</A></DD>
</DL>
<HR>
<DL>
<DT>public interface <B>Deserializer</B><DT>extends <A HREF="../../../../javax/xml/rpc/encoding/Deserializer.html" title="interface in javax.xml.rpc.encoding">Deserializer</A>, <A HREF="../../../../org/apache/axis/encoding/Callback.html" title="interface in org.apache.axis.encoding">Callback</A></DL>

<P>
This interface describes the AXIS Deserializer.
 A compliant implementiation must extend either
 the AXIS SoapHandler (org.apache.axis.message.SOAPHandler)
 or the AXIS DeserializerImpl (org.apache.axis.encoding.DeserializerImpl)

 The DeserializerImpl provides a lot of the default behavior including the
 support for id/href.  So you may want to try extending it as opposed to
 extending SoapHandler.

 An Axis compliant Deserializer must provide one or more
 of the following methods:

 public &lt;constructor&gt;(Class javaType, QName xmlType)
 public &lt;constructo&gt;()

 This will allow for construction of generic factories that introspect the class
 to determine how to construct a deserializer.
 The xmlType, javaType arguments are filled in with the values known by the factory.
<P>

<P>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->


<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#componentsReady()">componentsReady</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some deserializers (ArrayDeserializer) require
 all of the component values to be known before the
 value is complete.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#endElement(java.lang.String, java.lang.String, org.apache.axis.encoding.DeserializationContext)">endElement</A></B>(java.lang.String&nbsp;namespace,
           java.lang.String&nbsp;localName,
           <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endElement is called when the end element tag is reached.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#getDefaultType()">getDefaultType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#getValue()">getValue</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the deserialized value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#getValue(java.lang.Object)">getValue</A></B>(java.lang.Object&nbsp;hint)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the deserializer has component values (like ArrayDeserializer)
 this method gets the specific component via the hint.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Vector</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#getValueTargets()">getValueTargets</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the Value Targets of the Deserializer.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#moveValueTargets(org.apache.axis.encoding.Deserializer)">moveValueTargets</A></B>(<A HREF="../../../../org/apache/axis/encoding/Deserializer.html" title="interface in org.apache.axis.encoding">Deserializer</A>&nbsp;other)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Move someone else's targets to our own (see DeserializationContext)

 The DeserializationContext only allows one Deserializer to
 wait for a unknown multi-ref'ed value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#onEndElement(java.lang.String, java.lang.String, org.apache.axis.encoding.DeserializationContext)">onEndElement</A></B>(java.lang.String&nbsp;namespace,
             java.lang.String&nbsp;localName,
             <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onEndElement is called by endElement.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/axis/message/SOAPHandler.html" title="class in org.apache.axis.message">SOAPHandler</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#onStartChild(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)">onStartChild</A></B>(java.lang.String&nbsp;namespace,
             java.lang.String&nbsp;localName,
             java.lang.String&nbsp;prefix,
             org.xml.sax.Attributes&nbsp;attributes,
             <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onStartChild is called on each child element.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#onStartElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)">onStartElement</A></B>(java.lang.String&nbsp;namespace,
               java.lang.String&nbsp;localName,
               java.lang.String&nbsp;prefix,
               org.xml.sax.Attributes&nbsp;attributes,
               <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked after startElement when the element requires
 deserialization (i.e.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#registerValueTarget(org.apache.axis.encoding.Target)">registerValueTarget</A></B>(<A HREF="../../../../org/apache/axis/encoding/Target.html" title="interface in org.apache.axis.encoding">Target</A>&nbsp;target)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For deserializers of non-primitives, the value may not be
 known until later (due to multi-referencing).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#removeValueTargets()">removeValueTargets</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove the Value Targets of the Deserializer.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#setChildValue(java.lang.Object, java.lang.Object)">setChildValue</A></B>(java.lang.Object&nbsp;value,
              java.lang.Object&nbsp;hint)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the deserializer has component values (like ArrayDeserializer)
 this method sets the specific component via the hint.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#setDefaultType(javax.xml.namespace.QName)">setDefaultType</A></B>(<A HREF="../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In some circumstances an element may not have
 a type attribute, but a default type qname is known from
 information in the container.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#setValue(java.lang.Object)">setValue</A></B>(java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the deserialized value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)">startElement</A></B>(java.lang.String&nbsp;namespace,
             java.lang.String&nbsp;localName,
             java.lang.String&nbsp;qName,
             org.xml.sax.Attributes&nbsp;attributes,
             <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when an element start tag is encountered.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/encoding/Deserializer.html#valueComplete()">valueComplete</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The valueComplete() method is invoked when the
 end tag of the element is read.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_javax.xml.rpc.encoding.Deserializer"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from interface javax.xml.rpc.encoding.<A HREF="../../../../javax/xml/rpc/encoding/Deserializer.html" title="interface in javax.xml.rpc.encoding">Deserializer</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../javax/xml/rpc/encoding/Deserializer.html#getMechanismType()">getMechanismType</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.axis.encoding.Callback"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from interface org.apache.axis.encoding.<A HREF="../../../../org/apache/axis/encoding/Callback.html" title="interface in org.apache.axis.encoding">Callback</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/axis/encoding/Callback.html#setValue(java.lang.Object, java.lang.Object)">setValue</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->


<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="getValue()"><!-- --></A><H3>
getValue</H3>
<PRE>
public java.lang.Object <B>getValue</B>()</PRE>
<DL>
<DD>Get the deserialized value.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Object representing deserialized value or null</DL>
</DD>
</DL>
<HR>

<A NAME="setValue(java.lang.Object)"><!-- --></A><H3>
setValue</H3>
<PRE>
public void <B>setValue</B>(java.lang.Object&nbsp;value)</PRE>
<DL>
<DD>Set the deserialized value.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - Object representing deserialized value</DL>
</DD>
</DL>
<HR>

<A NAME="getValue(java.lang.Object)"><!-- --></A><H3>
getValue</H3>
<PRE>
public java.lang.Object <B>getValue</B>(java.lang.Object&nbsp;hint)</PRE>
<DL>
<DD>If the deserializer has component values (like ArrayDeserializer)
 this method gets the specific component via the hint.
 The default implementation returns null.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Object representing deserialized value or null</DL>
</DD>
</DL>
<HR>

<A NAME="setChildValue(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
setChildValue</H3>
<PRE>
public void <B>setChildValue</B>(java.lang.Object&nbsp;value,
                          java.lang.Object&nbsp;hint)
                   throws org.xml.sax.SAXException</PRE>
<DL>
<DD>If the deserializer has component values (like ArrayDeserializer)
 this method sets the specific component via the hint.
 The default implementation does nothing.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - Object representing deserialized value or null
<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="setDefaultType(javax.xml.namespace.QName)"><!-- --></A><H3>
setDefaultType</H3>
<PRE>
public void <B>setDefaultType</B>(<A HREF="../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName)</PRE>
<DL>
<DD>In some circumstances an element may not have
 a type attribute, but a default type qname is known from
 information in the container.  For example,
 an element of an array may not have a type= attribute,
 so the default qname is the component type of the array.
 This method is used to communicate the default type information
 to the deserializer.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getDefaultType()"><!-- --></A><H3>
getDefaultType</H3>
<PRE>
public <A HREF="../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getDefaultType</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="registerValueTarget(org.apache.axis.encoding.Target)"><!-- --></A><H3>
registerValueTarget</H3>
<PRE>
public void <B>registerValueTarget</B>(<A HREF="../../../../org/apache/axis/encoding/Target.html" title="interface in org.apache.axis.encoding">Target</A>&nbsp;target)</PRE>
<DL>
<DD>For deserializers of non-primitives, the value may not be
 known until later (due to multi-referencing).  In such
 cases the deserializer registers Target object(s).  When
 the value is known, the set(value) will be invoked for
 each Target registered with the Deserializer.  The Target
 object abstracts the function of setting a target with a
 value.  See the Target interface for more info.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>target</CODE> - Target</DL>
</DD>
</DL>
<HR>

<A NAME="getValueTargets()"><!-- --></A><H3>
getValueTargets</H3>
<PRE>
public java.util.Vector <B>getValueTargets</B>()</PRE>
<DL>
<DD>Get the Value Targets of the Deserializer.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Vector of Target objects or null</DL>
</DD>
</DL>
<HR>

<A NAME="removeValueTargets()"><!-- --></A><H3>
removeValueTargets</H3>
<PRE>
public void <B>removeValueTargets</B>()</PRE>
<DL>
<DD>Remove the Value Targets of the Deserializer.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="moveValueTargets(org.apache.axis.encoding.Deserializer)"><!-- --></A><H3>
moveValueTargets</H3>
<PRE>
public void <B>moveValueTargets</B>(<A HREF="../../../../org/apache/axis/encoding/Deserializer.html" title="interface in org.apache.axis.encoding">Deserializer</A>&nbsp;other)</PRE>
<DL>
<DD>Move someone else's targets to our own (see DeserializationContext)

 The DeserializationContext only allows one Deserializer to
 wait for a unknown multi-ref'ed value.  So to ensure
 that all of the targets are updated, this method is invoked
 to copy the Target objects to the waiting Deserializer.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>other</CODE> - is the Deserializer to copy targets from.</DL>
</DD>
</DL>
<HR>

<A NAME="componentsReady()"><!-- --></A><H3>
componentsReady</H3>
<PRE>
public boolean <B>componentsReady</B>()</PRE>
<DL>
<DD>Some deserializers (ArrayDeserializer) require
 all of the component values to be known before the
 value is complete.
 (For the ArrayDeserializer this is important because
 the elements are stored in an ArrayList, and all values
 must be known before the ArrayList is converted into the
 expected array.

 This routine is used to indicate when the components are ready.
 The default (true) is useful for most Deserializers.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="valueComplete()"><!-- --></A><H3>
valueComplete</H3>
<PRE>
public void <B>valueComplete</B>()
                   throws org.xml.sax.SAXException</PRE>
<DL>
<DD>The valueComplete() method is invoked when the
 end tag of the element is read.  This results
 in the setting of all registered Targets (see
 registerValueTarget).
 Note that the valueComplete() only processes
 the Targets if componentReady() returns true.
 So if you override componentReady(), then your
 specific Deserializer will need to call valueComplete()
 when your components are ready (See ArrayDeserializer)
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)"><!-- --></A><H3>
startElement</H3>
<PRE>
public void <B>startElement</B>(java.lang.String&nbsp;namespace,
                         java.lang.String&nbsp;localName,
                         java.lang.String&nbsp;qName,
                         org.xml.sax.Attributes&nbsp;attributes,
                         <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)
                  throws org.xml.sax.SAXException</PRE>
<DL>
<DD>This method is invoked when an element start tag is encountered.
 DeserializerImpl provides default behavior, which involves the following:
   - directly handling the deserialization of a nill value
   - handling the registration of the id value.
   - handling the registration of a fixup if this element is an href.
   - calling onStartElement to do the actual deserialization if not nill or href cases.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - is the namespace of the element<DD><CODE>localName</CODE> - is the name of the element<DD><CODE>qName</CODE> - is the prefixed qName of the element<DD><CODE>attributes</CODE> - are the attributes on the element...used to get the type<DD><CODE>context</CODE> - is the DeserializationContext

 Normally a specific Deserializer (FooDeserializer) should extend DeserializerImpl.
 Here is the flow that will occur in such cases:
   1) DeserializerImpl.startElement(...) will be called and do the id/href/nill stuff.
   2) If real deserialization needs to take place DeserializerImpl.onStartElement will be
      invoked, which will attempt to install the specific Deserializer (FooDeserializer)
   3) The FooDeserializer.startElement(...) will be called to do the Foo specific stuff.
      This results in a call to FooDeserializer.onStartElement(...) if startElement was
      not overridden.
   4) The onChildElement(...) method is called for each child element.  Nothing occurs
      if not overridden.  The FooDeserializer.onStartChild(...) method should return
      the deserializer for the child element.
   5) When the end tag is reached, the endElement(..) method is invoked.  The default
      behavior is to handle hrefs/ids, call onEndElement and then call the Deserializer
      valueComplete method.

 So the methods that you potentially want to override are:
   onStartElement, onStartChild, componentsReady, set(object, hint)

 You probably should not override startElement or endElement.
 If you need specific behaviour at the end of the element consider overriding
 onEndElement.

 See the pre-existing Deserializers for more information.
<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="onStartElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)"><!-- --></A><H3>
onStartElement</H3>
<PRE>
public void <B>onStartElement</B>(java.lang.String&nbsp;namespace,
                           java.lang.String&nbsp;localName,
                           java.lang.String&nbsp;prefix,
                           org.xml.sax.Attributes&nbsp;attributes,
                           <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)
                    throws org.xml.sax.SAXException</PRE>
<DL>
<DD>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.)
 DeserializerImpl provides default behavior, which simply
 involves obtaining a correct Deserializer and plugging its handler.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - is the namespace of the element<DD><CODE>localName</CODE> - is the name of the element<DD><CODE>prefix</CODE> - is the prefix of the element<DD><CODE>attributes</CODE> - are the attributes on the element...used to get the type<DD><CODE>context</CODE> - is the DeserializationContext
<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="onStartChild(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)"><!-- --></A><H3>
onStartChild</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/message/SOAPHandler.html" title="class in org.apache.axis.message">SOAPHandler</A> <B>onStartChild</B>(java.lang.String&nbsp;namespace,
                                java.lang.String&nbsp;localName,
                                java.lang.String&nbsp;prefix,
                                org.xml.sax.Attributes&nbsp;attributes,
                                <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)
                         throws org.xml.sax.SAXException</PRE>
<DL>
<DD>onStartChild is called on each child element.
 The default behavior supplied by DeserializationImpl is to do nothing.
 A specific deserializer may perform other tasks.  For example a
 BeanDeserializer will construct a deserializer for the indicated
 property and return it.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - is the namespace of the child element<DD><CODE>localName</CODE> - is the local name of the child element<DD><CODE>prefix</CODE> - is the prefix used on the name of the child element<DD><CODE>attributes</CODE> - are the attributes of the child element<DD><CODE>context</CODE> - is the deserialization context.
<DT><B>Returns:</B><DD>is a Deserializer to use to deserialize a child (must be
 a derived class of SOAPHandler) or null if no deserialization should
 be performed.
<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="endElement(java.lang.String, java.lang.String, org.apache.axis.encoding.DeserializationContext)"><!-- --></A><H3>
endElement</H3>
<PRE>
public void <B>endElement</B>(java.lang.String&nbsp;namespace,
                       java.lang.String&nbsp;localName,
                       <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)
                throws org.xml.sax.SAXException</PRE>
<DL>
<DD>endElement is called when the end element tag is reached.
 It handles href/id information for multi-ref processing
 and invokes the valueComplete() method of the deserializer
 which sets the targets with the deserialized value.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - is the namespace of the child element<DD><CODE>localName</CODE> - is the local name of the child element<DD><CODE>context</CODE> - is the deserialization context
<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="onEndElement(java.lang.String, java.lang.String, org.apache.axis.encoding.DeserializationContext)"><!-- --></A><H3>
onEndElement</H3>
<PRE>
public void <B>onEndElement</B>(java.lang.String&nbsp;namespace,
                         java.lang.String&nbsp;localName,
                         <A HREF="../../../../org/apache/axis/encoding/DeserializationContext.html" title="class in org.apache.axis.encoding">DeserializationContext</A>&nbsp;context)
                  throws org.xml.sax.SAXException</PRE>
<DL>
<DD>onEndElement is called by endElement.  It is not called
 if the element has an href.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - is the namespace of the child element<DD><CODE>localName</CODE> - is the local name of the child element<DD><CODE>context</CODE> - is the deserialization context
<DT><B>Throws:</B>
<DD><CODE>org.xml.sax.SAXException</CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/Deserializer.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/encoding/Callback.html" title="interface in org.apache.axis.encoding"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/encoding/DeserializerFactory.html" title="interface in org.apache.axis.encoding"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Deserializer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
