<!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:50 PDT 2006 -->
<TITLE>
Types (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.wsdl.fromJava.Types class">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="Types (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/Types.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/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Types.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;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&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.wsdl.fromJava</FONT>
<BR>
Class Types</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.wsdl.fromJava.Types</B>
</PRE>
<HR>
<DL>
<DT>public class <B>Types</B><DT>extends java.lang.Object</DL>

<P>
<p>Description: </p> This class is used to recursively serializes a Java Class into
 an XML Schema representation.
 <p/>
 It has utility methods to create a schema node, assosiate namespaces to the various types
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>unascribed</DD>
</DL>
<HR>

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


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

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Field Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected static&nbsp;org.apache.commons.logging.Log</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#log">log</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field log</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#Types(javax.wsdl.Definition, org.apache.axis.encoding.TypeMapping, org.apache.axis.encoding.TypeMapping, org.apache.axis.wsdl.fromJava.Namespaces, java.lang.String, java.util.List, org.apache.axis.description.ServiceDesc)">Types</A></B>(javax.wsdl.Definition&nbsp;def,
      <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;tm,
      <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;defaultTM,
      <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava">Namespaces</A>&nbsp;namespaces,
      java.lang.String&nbsp;targetNamespace,
      java.util.List&nbsp;stopClasses,
      <A HREF="../../../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description">ServiceDesc</A>&nbsp;serviceDesc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This class serailizes a <code>Class</code> to XML Schema.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#Types(javax.wsdl.Definition, org.apache.axis.encoding.TypeMapping, org.apache.axis.encoding.TypeMapping, org.apache.axis.wsdl.fromJava.Namespaces, java.lang.String, java.util.List, org.apache.axis.description.ServiceDesc, org.apache.axis.wsdl.fromJava.Emitter)">Types</A></B>(javax.wsdl.Definition&nbsp;def,
      <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;tm,
      <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;defaultTM,
      <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava">Namespaces</A>&nbsp;namespaces,
      java.lang.String&nbsp;targetNamespace,
      java.util.List&nbsp;stopClasses,
      <A HREF="../../../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description">ServiceDesc</A>&nbsp;serviceDesc,
      <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Emitter.html" title="class in org.apache.axis.wsdl.fromJava">Emitter</A>&nbsp;emitter)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This class serailizes a <code>Class</code> to XML Schema.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== 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;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#createArrayElement(java.lang.String)">createArrayElement</A></B>(java.lang.String&nbsp;componentTypeName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method createArrayElement</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#createAttributeElement(java.lang.String, java.lang.Class, javax.xml.namespace.QName, boolean, org.w3c.dom.Document)">createAttributeElement</A></B>(java.lang.String&nbsp;elementName,
                       java.lang.Class&nbsp;javaType,
                       <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;xmlType,
                       boolean&nbsp;nullable,
                       org.w3c.dom.Document&nbsp;docHolder)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create Attribute Element with a given name and type</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#createElement(java.lang.String)">createElement</A></B>(java.lang.String&nbsp;elementName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a DOM Element in this context</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#createElement(java.lang.String, java.lang.String, boolean, boolean, org.w3c.dom.Document)">createElement</A></B>(java.lang.String&nbsp;elementName,
              java.lang.String&nbsp;elementType,
              boolean&nbsp;nullable,
              boolean&nbsp;omittable,
              org.w3c.dom.Document&nbsp;docHolder)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create Element with a given name and type</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#createElementWithAnonymousType(java.lang.String, java.lang.Class, boolean, org.w3c.dom.Document)">createElementWithAnonymousType</A></B>(java.lang.String&nbsp;elementName,
                               java.lang.Class&nbsp;fieldType,
                               boolean&nbsp;omittable,
                               org.w3c.dom.Document&nbsp;ownerDocument)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write an &lt;element&gt; with an anonymous internal ComplexType</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#createLiteralArrayElement(java.lang.String, javax.xml.namespace.QName)">createLiteralArrayElement</A></B>(java.lang.String&nbsp;componentType,
                          <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;itemName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an array which is a wrapper type for "item" elements
 of a component type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#getLocalNameFromFullName(java.lang.String)">getLocalNameFromFullName</A></B>(java.lang.String&nbsp;full)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Utility method to get the local class name from a fully qualified java class name</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/axis/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava">Namespaces</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#getNamespaces()">getNamespaces</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the namespaces object for the current context</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#getPackageNameFromFullName(java.lang.String)">getPackageNameFromFullName</A></B>(java.lang.String&nbsp;full)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Utility method to get the package name from a fully qualified java class name</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#getQNameString(javax.xml.namespace.QName)">getQNameString</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;Return a string suitable for representing a given QName in the context
 of this WSDL document.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description">ServiceDesc</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#getServiceDesc()">getServiceDesc</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return the service description</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.List</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#getStopClasses()">getStopClasses</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the list of classes that we should not emit WSDL for.</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/wsdl/fromJava/Types.html#getTypeQName(java.lang.Class)">getTypeQName</A></B>(java.lang.Class&nbsp;javaType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the QName of the specified javaType</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/wsdl/fromJava/Types.html#insertTypesFragment(org.w3c.dom.Document)">insertTypesFragment</A></B>(org.w3c.dom.Document&nbsp;doc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts the type fragment into the given wsdl document and ensures
 that definitions from each embedded schema are allowed to reference
 schema components from the other sibling schemas.</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/wsdl/fromJava/Types.html#isAcceptableAsAttribute(java.lang.Class)">isAcceptableAsAttribute</A></B>(java.lang.Class&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Is the given class acceptable as an attribute</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#isArray(java.lang.Class)">isArray</A></B>(java.lang.Class&nbsp;clazz)</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>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#isBeanCompatible(java.lang.Class, boolean)">isBeanCompatible</A></B>(java.lang.Class&nbsp;javaType,
                 boolean&nbsp;issueErrors)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isBeanCompatible</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#isEnumClass(java.lang.Class)">isEnumClass</A></B>(java.lang.Class&nbsp;cls)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if indicated type matches the JAX-RPC enumeration class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#isNullable(java.lang.Class)">isNullable</A></B>(java.lang.Class&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines if the field is nullable.</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/wsdl/fromJava/Types.html#loadInputSchema(java.lang.String)">loadInputSchema</A></B>(java.lang.String&nbsp;inputSchema)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Loads the types from the input schema file.</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/wsdl/fromJava/Types.html#loadInputTypes(java.lang.String)">loadInputTypes</A></B>(java.lang.String&nbsp;inputWSDL)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load the types from the input wsdl file.</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/wsdl/fromJava/Types.html#updateNamespaces()">updateNamespaces</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method updateNamespaces</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/wsdl/fromJava/Types.html#writeElementDecl(javax.xml.namespace.QName, java.lang.Class, javax.xml.namespace.QName, boolean, javax.xml.namespace.QName)">writeElementDecl</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                 java.lang.Class&nbsp;javaType,
                 <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;typeQName,
                 boolean&nbsp;nillable,
                 <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;itemQName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a top-level element declaration in our generated schema</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/wsdl/fromJava/Types.html#writeElementForPart(java.lang.Class, javax.xml.namespace.QName)">writeElementForPart</A></B>(java.lang.Class&nbsp;type,
                    <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;Write out an element referenced by a part element attribute.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#writeEnumType(javax.xml.namespace.QName, java.lang.Class)">writeEnumType</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName,
              java.lang.Class&nbsp;cls)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write Enumeration Complex Type
 (Only supports enumeration classes of string types)</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/wsdl/fromJava/Types.html#writeSchemaElement(javax.xml.namespace.QName, org.w3c.dom.Element)">writeSchemaElement</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName,
                   org.w3c.dom.Element&nbsp;element)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Please use writeSchemaElement(String namespaceURI, Element element)</I></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/wsdl/fromJava/Types.html#writeSchemaElement(java.lang.String, org.w3c.dom.Element)">writeSchemaElement</A></B>(java.lang.String&nbsp;namespaceURI,
                   org.w3c.dom.Element&nbsp;element)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write out the given Element into the appropriate schema node.</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/wsdl/fromJava/Types.html#writeSchemaElementDecl(javax.xml.namespace.QName, org.w3c.dom.Element)">writeSchemaElementDecl</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                       org.w3c.dom.Element&nbsp;element)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method writeSchemaElementDecl</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/wsdl/fromJava/Types.html#writeSchemaTypeDecl(javax.xml.namespace.QName, org.w3c.dom.Element)">writeSchemaTypeDecl</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                    org.w3c.dom.Element&nbsp;element)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method writeSchemaTypeDecl</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#writeType(java.lang.Class)">writeType</A></B>(java.lang.Class&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write a schema representation for the given <code>Class</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#writeType(java.lang.Class, javax.xml.namespace.QName)">writeType</A></B>(java.lang.Class&nbsp;type,
          <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;Write a schema representation for the given <code>Class</code>.</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/wsdl/fromJava/Types.html#writeTypeAndSubTypeForPart(java.lang.Class, javax.xml.namespace.QName)">writeTypeAndSubTypeForPart</A></B>(java.lang.Class&nbsp;type,
                           <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;Write out a type (and its subtypes) referenced by a part type attribute.</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/wsdl/fromJava/Types.html#writeTypeForPart(java.lang.Class, javax.xml.namespace.QName)">writeTypeForPart</A></B>(java.lang.Class&nbsp;type,
                 <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;Write out a type referenced by a part type attribute.</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/wsdl/fromJava/Types.html#writeWrappedParameter(org.w3c.dom.Element, java.lang.String, javax.xml.namespace.QName, java.lang.Class)">writeWrappedParameter</A></B>(org.w3c.dom.Element&nbsp;sequence,
                      java.lang.String&nbsp;name,
                      <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;type,
                      java.lang.Class&nbsp;javaType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write a parameter (a sub-element) into a sequence generated by
 writeWrapperElement() above.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Element</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/fromJava/Types.html#writeWrapperElement(javax.xml.namespace.QName, boolean, boolean)">writeWrapperElement</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                    boolean&nbsp;request,
                    boolean&nbsp;hasParams)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write the element definition for a WRAPPED operation.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

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

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

<A NAME="log"><!-- --></A><H3>
log</H3>
<PRE>
protected static org.apache.commons.logging.Log <B>log</B></PRE>
<DL>
<DD>Field log
<P>
<DL>
</DL>
</DL>

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

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

<A NAME="Types(javax.wsdl.Definition, org.apache.axis.encoding.TypeMapping, org.apache.axis.encoding.TypeMapping, org.apache.axis.wsdl.fromJava.Namespaces, java.lang.String, java.util.List, org.apache.axis.description.ServiceDesc)"><!-- --></A><H3>
Types</H3>
<PRE>
public <B>Types</B>(javax.wsdl.Definition&nbsp;def,
             <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;tm,
             <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;defaultTM,
             <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava">Namespaces</A>&nbsp;namespaces,
             java.lang.String&nbsp;targetNamespace,
             java.util.List&nbsp;stopClasses,
             <A HREF="../../../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description">ServiceDesc</A>&nbsp;serviceDesc)</PRE>
<DL>
<DD>This class serailizes a <code>Class</code> to XML Schema. The constructor
 provides the context for the streamed node within the WSDL document
<P>
<DT><B>Parameters:</B><DD><CODE>def</CODE> - WSDL Definition Element to declare namespaces<DD><CODE>tm</CODE> - TypeMappingRegistry to handle known types<DD><CODE>defaultTM</CODE> - default TM<DD><CODE>namespaces</CODE> - user defined or autogenerated namespace and prefix maps<DD><CODE>targetNamespace</CODE> - targetNamespace of the document<DD><CODE>stopClasses</CODE> - <DD><CODE>serviceDesc</CODE> - </DL>
<HR>

<A NAME="Types(javax.wsdl.Definition, org.apache.axis.encoding.TypeMapping, org.apache.axis.encoding.TypeMapping, org.apache.axis.wsdl.fromJava.Namespaces, java.lang.String, java.util.List, org.apache.axis.description.ServiceDesc, org.apache.axis.wsdl.fromJava.Emitter)"><!-- --></A><H3>
Types</H3>
<PRE>
public <B>Types</B>(javax.wsdl.Definition&nbsp;def,
             <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;tm,
             <A HREF="../../../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A>&nbsp;defaultTM,
             <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava">Namespaces</A>&nbsp;namespaces,
             java.lang.String&nbsp;targetNamespace,
             java.util.List&nbsp;stopClasses,
             <A HREF="../../../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description">ServiceDesc</A>&nbsp;serviceDesc,
             <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Emitter.html" title="class in org.apache.axis.wsdl.fromJava">Emitter</A>&nbsp;emitter)</PRE>
<DL>
<DD>This class serailizes a <code>Class</code> to XML Schema. The constructor
 provides the context for the streamed node within the WSDL document
<P>
<DT><B>Parameters:</B><DD><CODE>def</CODE> - WSDL Definition Element to declare namespaces<DD><CODE>tm</CODE> - TypeMappingRegistry to handle known types<DD><CODE>defaultTM</CODE> - default TM<DD><CODE>namespaces</CODE> - user defined or autogenerated namespace and prefix maps<DD><CODE>targetNamespace</CODE> - targetNamespace of the document<DD><CODE>stopClasses</CODE> - <DD><CODE>serviceDesc</CODE> - <DD><CODE>emitter</CODE> - Java2Wsdl emitter</DL>

<!-- ============ 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="isArray(java.lang.Class)"><!-- --></A><H3>
isArray</H3>
<PRE>
public static boolean <B>isArray</B>(java.lang.Class&nbsp;clazz)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getNamespaces()"><!-- --></A><H3>
getNamespaces</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava">Namespaces</A> <B>getNamespaces</B>()</PRE>
<DL>
<DD>Return the namespaces object for the current context
<P>
<DD><DL>

<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="loadInputSchema(java.lang.String)"><!-- --></A><H3>
loadInputSchema</H3>
<PRE>
public void <B>loadInputSchema</B>(java.lang.String&nbsp;inputSchema)
                     throws java.io.IOException,
                            javax.wsdl.WSDLException,
                            org.xml.sax.SAXException,
                            javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Loads the types from the input schema file.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>inputSchema</CODE> - file or URL
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE>
<DD><CODE>javax.wsdl.WSDLException</CODE>
<DD><CODE>org.xml.sax.SAXException</CODE>
<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="loadInputTypes(java.lang.String)"><!-- --></A><H3>
loadInputTypes</H3>
<PRE>
public void <B>loadInputTypes</B>(java.lang.String&nbsp;inputWSDL)
                    throws java.io.IOException,
                           javax.wsdl.WSDLException,
                           org.xml.sax.SAXException,
                           javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Load the types from the input wsdl file.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>inputWSDL</CODE> - file or URL
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE>
<DD><CODE>javax.wsdl.WSDLException</CODE>
<DD><CODE>org.xml.sax.SAXException</CODE>
<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeTypeForPart(java.lang.Class, javax.xml.namespace.QName)"><!-- --></A><H3>
writeTypeForPart</H3>
<PRE>
public <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>writeTypeForPart</B>(java.lang.Class&nbsp;type,
                              <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                       throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write out a type referenced by a part type attribute.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - <code>Class</code> to generate the XML Schema info for<DD><CODE>qname</CODE> - <code>QName</code> of the type.  If null, qname is
              defaulted from the class.
<DT><B>Returns:</B><DD>the QName of the generated Schema type, null if void,
         if the Class type cannot be converted to a schema type
         then xsd:anytype is returned.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeTypeAndSubTypeForPart(java.lang.Class, javax.xml.namespace.QName)"><!-- --></A><H3>
writeTypeAndSubTypeForPart</H3>
<PRE>
public <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>writeTypeAndSubTypeForPart</B>(java.lang.Class&nbsp;type,
                                        <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                                 throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write out a type (and its subtypes) referenced by a part type attribute.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - <code>Class</code> to generate the XML Schema info for<DD><CODE>qname</CODE> - <code>QName</code> of the type.  If null, qname is
             defaulted from the class.
<DT><B>Returns:</B><DD>the QName of the generated Schema type, null if void,
         if the Class type cannot be converted to a schema type
         then xsd:anytype is returned.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeElementForPart(java.lang.Class, javax.xml.namespace.QName)"><!-- --></A><H3>
writeElementForPart</H3>
<PRE>
public <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>writeElementForPart</B>(java.lang.Class&nbsp;type,
                                 <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                          throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write out an element referenced by a part element attribute.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - <code>Class</code> to generate the XML Schema info for<DD><CODE>qname</CODE> - <code>QName</code> of the element.  If null, qname is
              defaulted from the class.
<DT><B>Returns:</B><DD>the QName of the generated Schema type, null if no element
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeWrapperElement(javax.xml.namespace.QName, boolean, boolean)"><!-- --></A><H3>
writeWrapperElement</H3>
<PRE>
public org.w3c.dom.Element <B>writeWrapperElement</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                                               boolean&nbsp;request,
                                               boolean&nbsp;hasParams)
                                        throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write the element definition for a WRAPPED operation.  This will
 write out any necessary namespace/schema declarations, an an element
 definition with an internal (anonymous) complexType.  The name of the
 element will be *foo*Request or *foo*Response depending on whether the
 request boolean is true.  If the operation contains parameters, then
 we also generate a &gt;sequence&lt; node underneath the complexType,
 and return it for later use by writeWrappedParameter() below.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - the desired element QName<DD><CODE>request</CODE> - true if we're writing the request wrapper, false if
                  writing the response.<DD><CODE>hasParams</CODE> - true if there are parameters, and thus a sequence
                  node is needed
<DT><B>Returns:</B><DD>a DOM Element for the sequence, inside which we'll write the
         parameters as elements, or null if there are no parameters
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeWrappedParameter(org.w3c.dom.Element, java.lang.String, javax.xml.namespace.QName, java.lang.Class)"><!-- --></A><H3>
writeWrappedParameter</H3>
<PRE>
public void <B>writeWrappedParameter</B>(org.w3c.dom.Element&nbsp;sequence,
                                  java.lang.String&nbsp;name,
                                  <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;type,
                                  java.lang.Class&nbsp;javaType)
                           throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write a parameter (a sub-element) into a sequence generated by
 writeWrapperElement() above.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sequence</CODE> - the &lt;sequence&gt; in which we're writing<DD><CODE>name</CODE> - is the name of an element to add to the wrapper element.<DD><CODE>type</CODE> - is the QName of the type of the element.<DD><CODE>javaType</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getTypeQName(java.lang.Class)"><!-- --></A><H3>
getTypeQName</H3>
<PRE>
public <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getTypeQName</B>(java.lang.Class&nbsp;javaType)</PRE>
<DL>
<DD>Return the QName of the specified javaType
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>javaType</CODE> - input javaType Class
<DT><B>Returns:</B><DD>QName</DL>
</DD>
</DL>
<HR>

<A NAME="getQNameString(javax.xml.namespace.QName)"><!-- --></A><H3>
getQNameString</H3>
<PRE>
public java.lang.String <B>getQNameString</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Return a string suitable for representing a given QName in the context
 of this WSDL document.  If the namespace of the QName is not yet
 registered, we will register it up in the Definitions.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - a QName (typically a type)
<DT><B>Returns:</B><DD>a String containing a standard "ns:localPart" rep of the QName</DL>
</DD>
</DL>
<HR>

<A NAME="getPackageNameFromFullName(java.lang.String)"><!-- --></A><H3>
getPackageNameFromFullName</H3>
<PRE>
public static java.lang.String <B>getPackageNameFromFullName</B>(java.lang.String&nbsp;full)</PRE>
<DL>
<DD>Utility method to get the package name from a fully qualified java class name
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>full</CODE> - input class name
<DT><B>Returns:</B><DD>package name</DL>
</DD>
</DL>
<HR>

<A NAME="getLocalNameFromFullName(java.lang.String)"><!-- --></A><H3>
getLocalNameFromFullName</H3>
<PRE>
public static java.lang.String <B>getLocalNameFromFullName</B>(java.lang.String&nbsp;full)</PRE>
<DL>
<DD>Utility method to get the local class name from a fully qualified java class name
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>full</CODE> - input class name
<DT><B>Returns:</B><DD>package name</DL>
</DD>
</DL>
<HR>

<A NAME="writeSchemaTypeDecl(javax.xml.namespace.QName, org.w3c.dom.Element)"><!-- --></A><H3>
writeSchemaTypeDecl</H3>
<PRE>
public void <B>writeSchemaTypeDecl</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                                org.w3c.dom.Element&nbsp;element)
                         throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Method writeSchemaTypeDecl
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - <DD><CODE>element</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeSchemaElementDecl(javax.xml.namespace.QName, org.w3c.dom.Element)"><!-- --></A><H3>
writeSchemaElementDecl</H3>
<PRE>
public void <B>writeSchemaElementDecl</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                                   org.w3c.dom.Element&nbsp;element)
                            throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Method writeSchemaElementDecl
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - <DD><CODE>element</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeSchemaElement(javax.xml.namespace.QName, org.w3c.dom.Element)"><!-- --></A><H3>
writeSchemaElement</H3>
<PRE>
public void <B>writeSchemaElement</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName,
                               org.w3c.dom.Element&nbsp;element)
                        throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>Please use writeSchemaElement(String namespaceURI, Element element)</I>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qName</CODE> - qName to get the namespace of the schema node<DD><CODE>element</CODE> - the Element to append to the Schema node
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeSchemaElement(java.lang.String, org.w3c.dom.Element)"><!-- --></A><H3>
writeSchemaElement</H3>
<PRE>
public void <B>writeSchemaElement</B>(java.lang.String&nbsp;namespaceURI,
                               org.w3c.dom.Element&nbsp;element)
                        throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write out the given Element into the appropriate schema node.
 If need be create the schema node as well
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespaceURI</CODE> - namespace this node should get dropped into<DD><CODE>element</CODE> - the Element to append to the Schema node
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeType(java.lang.Class)"><!-- --></A><H3>
writeType</H3>
<PRE>
public java.lang.String <B>writeType</B>(java.lang.Class&nbsp;type)
                           throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write a schema representation for the given <code>Class</code>. Recurse
 through all the public fields as well as fields represented by java
 bean compliant accessor methods.
 <p/>
 Then return the qualified string representation of the generated type
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - Class for which to generate schema
<DT><B>Returns:</B><DD>a prefixed string for the schema type
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeType(java.lang.Class, javax.xml.namespace.QName)"><!-- --></A><H3>
writeType</H3>
<PRE>
public java.lang.String <B>writeType</B>(java.lang.Class&nbsp;type,
                                  <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName)
                           throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write a schema representation for the given <code>Class</code>. Recurse
 through all the public fields as well as fields represented by java
 bean compliant accessor methods.
 <p/>
 Then return the qualified string representation of the generated type
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - Class for which to generate schema<DD><CODE>qName</CODE> - of the type to write
<DT><B>Returns:</B><DD>a prefixed string for the schema type or null if problems occur
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="createArrayElement(java.lang.String)"><!-- --></A><H3>
createArrayElement</H3>
<PRE>
public org.w3c.dom.Element <B>createArrayElement</B>(java.lang.String&nbsp;componentTypeName)</PRE>
<DL>
<DD>Method createArrayElement
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>componentTypeName</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="createLiteralArrayElement(java.lang.String, javax.xml.namespace.QName)"><!-- --></A><H3>
createLiteralArrayElement</H3>
<PRE>
public org.w3c.dom.Element <B>createLiteralArrayElement</B>(java.lang.String&nbsp;componentType,
                                                     <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;itemName)</PRE>
<DL>
<DD>Create an array which is a wrapper type for "item" elements
 of a component type.  This is basically the unencoded parallel to
 a SOAP-encoded array.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>componentType</CODE> - <DD><CODE>itemName</CODE> - the QName of the inner element (right now we only use the localPart)
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="isEnumClass(java.lang.Class)"><!-- --></A><H3>
isEnumClass</H3>
<PRE>
public static boolean <B>isEnumClass</B>(java.lang.Class&nbsp;cls)</PRE>
<DL>
<DD>Returns true if indicated type matches the JAX-RPC enumeration class.
 Note: supports JSR 101 version 0.6 Public Draft
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>cls</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="writeEnumType(javax.xml.namespace.QName, java.lang.Class)"><!-- --></A><H3>
writeEnumType</H3>
<PRE>
public org.w3c.dom.Element <B>writeEnumType</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qName,
                                         java.lang.Class&nbsp;cls)
                                  throws java.lang.NoSuchMethodException,
                                         java.lang.IllegalAccessException,
                                         <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write Enumeration Complex Type
 (Only supports enumeration classes of string types)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qName</CODE> - QName of type.<DD><CODE>cls</CODE> - class of type
<DT><B>Returns:</B><DD>
<DT><B>Throws:</B>
<DD><CODE>java.lang.NoSuchMethodException</CODE>
<DD><CODE>java.lang.IllegalAccessException</CODE>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="writeElementDecl(javax.xml.namespace.QName, java.lang.Class, javax.xml.namespace.QName, boolean, javax.xml.namespace.QName)"><!-- --></A><H3>
writeElementDecl</H3>
<PRE>
public void <B>writeElementDecl</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                             java.lang.Class&nbsp;javaType,
                             <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;typeQName,
                             boolean&nbsp;nillable,
                             <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;itemQName)
                      throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Create a top-level element declaration in our generated schema
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - <DD><CODE>javaType</CODE> - <DD><CODE>typeQName</CODE> - <DD><CODE>nillable</CODE> - nillable attribute of the element<DD><CODE>itemQName</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="createElement(java.lang.String, java.lang.String, boolean, boolean, org.w3c.dom.Document)"><!-- --></A><H3>
createElement</H3>
<PRE>
public org.w3c.dom.Element <B>createElement</B>(java.lang.String&nbsp;elementName,
                                         java.lang.String&nbsp;elementType,
                                         boolean&nbsp;nullable,
                                         boolean&nbsp;omittable,
                                         org.w3c.dom.Document&nbsp;docHolder)</PRE>
<DL>
<DD>Create Element with a given name and type
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>elementName</CODE> - the name of the created element<DD><CODE>elementType</CODE> - schema type representation of the element<DD><CODE>nullable</CODE> - nullable attribute of the element<DD><CODE>omittable</CODE> - <DD><CODE>docHolder</CODE> - 
<DT><B>Returns:</B><DD>the created Element</DL>
</DD>
</DL>
<HR>

<A NAME="createAttributeElement(java.lang.String, java.lang.Class, javax.xml.namespace.QName, boolean, org.w3c.dom.Document)"><!-- --></A><H3>
createAttributeElement</H3>
<PRE>
public org.w3c.dom.Element <B>createAttributeElement</B>(java.lang.String&nbsp;elementName,
                                                  java.lang.Class&nbsp;javaType,
                                                  <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;xmlType,
                                                  boolean&nbsp;nullable,
                                                  org.w3c.dom.Document&nbsp;docHolder)
                                           throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Create Attribute Element with a given name and type
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>elementName</CODE> - the name of the created element<DD><CODE>javaType</CODE> - <DD><CODE>xmlType</CODE> - <DD><CODE>nullable</CODE> - nullable attribute of the element<DD><CODE>docHolder</CODE> - 
<DT><B>Returns:</B><DD>the created Element
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="isAcceptableAsAttribute(java.lang.Class)"><!-- --></A><H3>
isAcceptableAsAttribute</H3>
<PRE>
public boolean <B>isAcceptableAsAttribute</B>(java.lang.Class&nbsp;type)</PRE>
<DL>
<DD>Is the given class acceptable as an attribute
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - input Class
<DT><B>Returns:</B><DD>true if the type is a simple, enum type or extends SimpleType</DL>
</DD>
</DL>
<HR>

<A NAME="isNullable(java.lang.Class)"><!-- --></A><H3>
isNullable</H3>
<PRE>
public static boolean <B>isNullable</B>(java.lang.Class&nbsp;type)</PRE>
<DL>
<DD>Determines if the field is nullable. All non-primitives are nillable.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - input Class
<DT><B>Returns:</B><DD>true if nullable</DL>
</DD>
</DL>
<HR>

<A NAME="updateNamespaces()"><!-- --></A><H3>
updateNamespaces</H3>
<PRE>
public void <B>updateNamespaces</B>()</PRE>
<DL>
<DD>Method updateNamespaces
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="insertTypesFragment(org.w3c.dom.Document)"><!-- --></A><H3>
insertTypesFragment</H3>
<PRE>
public void <B>insertTypesFragment</B>(org.w3c.dom.Document&nbsp;doc)</PRE>
<DL>
<DD>Inserts the type fragment into the given wsdl document and ensures
 that definitions from each embedded schema are allowed to reference
 schema components from the other sibling schemas.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>doc</CODE> - </DL>
</DD>
</DL>
<HR>

<A NAME="getStopClasses()"><!-- --></A><H3>
getStopClasses</H3>
<PRE>
public java.util.List <B>getStopClasses</B>()</PRE>
<DL>
<DD>Return the list of classes that we should not emit WSDL for.
<P>
<DD><DL>

<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="createElement(java.lang.String)"><!-- --></A><H3>
createElement</H3>
<PRE>
public org.w3c.dom.Element <B>createElement</B>(java.lang.String&nbsp;elementName)</PRE>
<DL>
<DD>Create a DOM Element in this context
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>elementName</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="isBeanCompatible(java.lang.Class, boolean)"><!-- --></A><H3>
isBeanCompatible</H3>
<PRE>
protected boolean <B>isBeanCompatible</B>(java.lang.Class&nbsp;javaType,
                                   boolean&nbsp;issueErrors)</PRE>
<DL>
<DD>isBeanCompatible
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>javaType</CODE> - Class<DD><CODE>issueErrors</CODE> - if true, issue messages if not compatible
                    Returns true if it appears that this class is a bean and
                    can be mapped to a complexType
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="createElementWithAnonymousType(java.lang.String, java.lang.Class, boolean, org.w3c.dom.Document)"><!-- --></A><H3>
createElementWithAnonymousType</H3>
<PRE>
public org.w3c.dom.Element <B>createElementWithAnonymousType</B>(java.lang.String&nbsp;elementName,
                                                          java.lang.Class&nbsp;fieldType,
                                                          boolean&nbsp;omittable,
                                                          org.w3c.dom.Document&nbsp;ownerDocument)
                                                   throws <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write an &lt;element&gt; with an anonymous internal ComplexType
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>elementName</CODE> - <DD><CODE>fieldType</CODE> - <DD><CODE>omittable</CODE> - <DD><CODE>ownerDocument</CODE> - 
<DT><B>Returns:</B><DD>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getServiceDesc()"><!-- --></A><H3>
getServiceDesc</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description">ServiceDesc</A> <B>getServiceDesc</B>()</PRE>
<DL>
<DD>return the service description
<P>
<DD><DL>

<DT><B>Returns:</B><DD></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/Types.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/wsdl/fromJava/Namespaces.html" title="class in org.apache.axis.wsdl.fromJava"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Types.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;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&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>
