<!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>
Utils (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.wsdl.toJava.Utils class">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="Utils (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/Utils.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/toJava/NamespaceSelector.html" title="class in org.apache.axis.wsdl.toJava"><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="Utils.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.toJava</FONT>
<BR>
Class Utils</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html" title="class in org.apache.axis.wsdl.symbolTable">org.apache.axis.wsdl.symbolTable.Utils</A>
      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.wsdl.toJava.Utils</B>
</PRE>
<HR>
<DL>
<DT>public class <B>Utils</B><DT>extends <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html" title="class in org.apache.axis.wsdl.symbolTable">Utils</A></DL>

<P>
Class Utils
<P>

<P>
<DL>
<DT><B>Version:</B></DT>
  <DD>%I%, %G%</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/toJava/Utils.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/toJava/Utils.html#Utils()">Utils</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/toJava/Utils.html#addPackageName(java.lang.String, java.lang.String)">addPackageName</A></B>(java.lang.String&nbsp;className,
               java.lang.String&nbsp;newPkg)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add package to name</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/toJava/Utils.html#addUnderscore(java.lang.String)">addUnderscore</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prepend an underscore to the name</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/toJava/Utils.html#capitalizeFirstChar(java.lang.String)">capitalizeFirstChar</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Capitalize the first character of the name.</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/toJava/Utils.html#fileExists(java.lang.String, java.lang.String, org.apache.axis.wsdl.toJava.Namespaces)">fileExists</A></B>(java.lang.String&nbsp;name,
           java.lang.String&nbsp;namespace,
           <A HREF="../../../../../org/apache/axis/wsdl/toJava/Namespaces.html" title="class in org.apache.axis.wsdl.toJava">Namespaces</A>&nbsp;namespaces)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does the given file already exist in the given namespace?</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/toJava/Utils.html#getConstructorForParam(org.apache.axis.wsdl.symbolTable.Parameter, org.apache.axis.wsdl.symbolTable.SymbolTable, javax.xml.rpc.holders.BooleanHolder)">getConstructorForParam</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;param,
                       <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable,
                       <A HREF="../../../../../javax/xml/rpc/holders/BooleanHolder.html" title="class in javax.xml.rpc.holders">BooleanHolder</A>&nbsp;bThrow)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a constructor for the provided Parameter
 This string will be suitable for assignment:
 <p/>
 Foo var = <i>string returned</i>
 <p/>
 Handles basic java types (int, float, etc), wrapper types (Integer, etc)
 and certain java.math (BigDecimal, BigInteger) types.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.util.Vector</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/toJava/Utils.html#getEnumerationBaseAndValues(org.w3c.dom.Node, org.apache.axis.wsdl.symbolTable.SymbolTable)">getEnumerationBaseAndValues</A></B>(org.w3c.dom.Node&nbsp;node,
                            <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the specified node represents a supported JAX-RPC enumeration,
 a Vector is returned which contains the base type and the enumeration values.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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/toJava/Utils.html#getFaultDataType(javax.wsdl.Message, org.apache.axis.wsdl.symbolTable.SymbolTable)">getFaultDataType</A></B>(javax.wsdl.Message&nbsp;faultMessage,
                 <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given a fault message, return the XML type of the exception data.</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/toJava/Utils.html#getFullExceptionName(javax.wsdl.Message, org.apache.axis.wsdl.symbolTable.SymbolTable)">getFullExceptionName</A></B>(javax.wsdl.Message&nbsp;faultMessage,
                     <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given a fault message, return the fully qualified Java class name
 of the exception to be generated from this fault</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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/toJava/Utils.html#getItemQName(org.apache.axis.wsdl.symbolTable.TypeEntry)">getItemQName</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;te)</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>static&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/toJava/Utils.html#getItemType(org.apache.axis.wsdl.symbolTable.TypeEntry)">getItemType</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;te)</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>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/toJava/Utils.html#getJavaLocalName(java.lang.String)">getJavaLocalName</A></B>(java.lang.String&nbsp;fullName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query Java Local Name</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/toJava/Utils.html#getJavaPackageName(java.lang.String)">getJavaPackageName</A></B>(java.lang.String&nbsp;fullName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query Java Package Name</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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/toJava/Utils.html#getMIMETypeQName(java.lang.String)">getMIMETypeQName</A></B>(java.lang.String&nbsp;mimeName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given a MIME type, return the AXIS-specific type QName.</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/toJava/Utils.html#getNewQName(javax.xml.namespace.QName)">getNewQName</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;Common code for generating a QName in emitted code.</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/toJava/Utils.html#getNewQNameWithLastLocalPart(javax.xml.namespace.QName)">getNewQNameWithLastLocalPart</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;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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/toJava/Utils.html#getOperationQName(javax.wsdl.BindingOperation, org.apache.axis.wsdl.symbolTable.BindingEntry, org.apache.axis.wsdl.symbolTable.SymbolTable)">getOperationQName</A></B>(javax.wsdl.BindingOperation&nbsp;bindingOper,
                  <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bEntry,
                  <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the operation QName.</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/toJava/Utils.html#getOperationSOAPAction(javax.wsdl.BindingOperation)">getOperationSOAPAction</A></B>(javax.wsdl.BindingOperation&nbsp;bindingOper)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the SOAPAction (if any) of this binding operation</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/toJava/Utils.html#getParameterTypeName(org.apache.axis.wsdl.symbolTable.Parameter)">getParameterTypeName</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;parm)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the parameter type name.</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/toJava/Utils.html#getResponseString(org.apache.axis.wsdl.symbolTable.Parameter, java.lang.String)">getResponseString</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;param,
                  java.lang.String&nbsp;var)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the Object variable 'var' cast to the appropriate type
 doing the right thing for the primitive types.</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/toJava/Utils.html#getWrapperType(java.lang.String)">getWrapperType</A></B>(java.lang.String&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a "wrapper" type for the given type name.</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/toJava/Utils.html#getWrapperType(org.apache.axis.wsdl.symbolTable.TypeEntry)">getWrapperType</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a "wrapper" type for the given TypeEntry.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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/toJava/Utils.html#getXSIType(org.apache.axis.wsdl.symbolTable.Parameter)">getXSIType</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;param)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the QName that could be used in the xsi:type
 when serializing an object for this parameter/return</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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/toJava/Utils.html#getXSIType(org.apache.axis.wsdl.symbolTable.TypeEntry)">getXSIType</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;te)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the QName that could be used in the xsi:type
 when serializing an object of the given type.</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/toJava/Utils.html#hasMIME(org.apache.axis.wsdl.symbolTable.BindingEntry)">hasMIME</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bEntry)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Are there any MIME parameters in the given binding?</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/toJava/Utils.html#hasMIME(org.apache.axis.wsdl.symbolTable.BindingEntry, javax.wsdl.BindingOperation)">hasMIME</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bEntry,
        javax.wsdl.BindingOperation&nbsp;operation)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Are there any MIME parameters in the given binding's operation?</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/toJava/Utils.html#holder(org.apache.axis.wsdl.symbolTable.Parameter, org.apache.axis.wsdl.toJava.Emitter)">holder</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;p,
       <A HREF="../../../../../org/apache/axis/wsdl/toJava/Emitter.html" title="class in org.apache.axis.wsdl.toJava">Emitter</A>&nbsp;emitter)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given a type, return the Java mapping of that type's holder.</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/toJava/Utils.html#holder(org.apache.axis.wsdl.symbolTable.TypeEntry, org.apache.axis.wsdl.toJava.Emitter)">holder</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type,
       <A HREF="../../../../../org/apache/axis/wsdl/toJava/Emitter.html" title="class in org.apache.axis.wsdl.toJava">Emitter</A>&nbsp;emitter)</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>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/toJava/Utils.html#isFaultComplex(javax.wsdl.Message, org.apache.axis.wsdl.symbolTable.SymbolTable)">isFaultComplex</A></B>(javax.wsdl.Message&nbsp;faultMessage,
               <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given a fault message, return TRUE if the fault is a complex type fault</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/toJava/Utils.html#isPrimitiveType(org.apache.axis.wsdl.symbolTable.TypeEntry)">isPrimitiveType</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method isPrimitiveType</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/toJava/Utils.html#isXsNode(org.w3c.dom.Node, java.lang.String)">isXsNode</A></B>(org.w3c.dom.Node&nbsp;node,
         java.lang.String&nbsp;nameName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines if the DOM Node represents an xs:<node></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/toJava/Utils.html#makePackageName(java.lang.String)">makePackageName</A></B>(java.lang.String&nbsp;namespace)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method makePackageName</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/toJava/Utils.html#shouldEmit(org.apache.axis.wsdl.symbolTable.TypeEntry)">shouldEmit</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type)</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>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/toJava/Utils.html#wrapPrimitiveType(org.apache.axis.wsdl.symbolTable.TypeEntry, java.lang.String)">wrapPrimitiveType</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type,
                  java.lang.String&nbsp;var)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a string with "var" wrapped as an Object type if needed</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/toJava/Utils.html#xmlNameToJava(java.lang.String)">xmlNameToJava</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map an XML name to a valid Java identifier</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/toJava/Utils.html#xmlNameToJavaClass(java.lang.String)">xmlNameToJavaClass</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map an XML name to a valid Java identifier w/ capitolized first letter</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.axis.wsdl.symbolTable.Utils"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class org.apache.axis.wsdl.symbolTable.<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html" title="class in org.apache.axis.wsdl.symbolTable">Utils</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#genQNameAttributeString(javax.xml.namespace.QName, java.lang.String)">genQNameAttributeString</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#genQNameAttributeStringWithLastLocalPart(javax.xml.namespace.QName, java.lang.String)">genQNameAttributeStringWithLastLocalPart</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getAttribute(org.w3c.dom.Node, java.lang.String)">getAttribute</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getAttributesWithLocalName(org.w3c.dom.Node, java.lang.String)">getAttributesWithLocalName</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getDerivedTypes(org.apache.axis.wsdl.symbolTable.TypeEntry, org.apache.axis.wsdl.symbolTable.SymbolTable)">getDerivedTypes</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getLastLocalPart(java.lang.String)">getLastLocalPart</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getMemberTypeQNames(org.w3c.dom.Node)">getMemberTypeQNames</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getNestedTypes(org.apache.axis.wsdl.symbolTable.TypeEntry, org.apache.axis.wsdl.symbolTable.SymbolTable, boolean)">getNestedTypes</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getNodeNameQName(org.w3c.dom.Node)">getNodeNameQName</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getNodeQName(org.w3c.dom.Node)">getNodeQName</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getQNameFromPrefixedName(org.w3c.dom.Node, java.lang.String)">getQNameFromPrefixedName</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getScopedAttribute(org.w3c.dom.Node, java.lang.String)">getScopedAttribute</A>, <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Utils.html#getTypeQName(org.w3c.dom.Node, javax.xml.rpc.holders.BooleanHolder, boolean)">getTypeQName</A></CODE></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="Utils()"><!-- --></A><H3>
Utils</H3>
<PRE>
public <B>Utils</B>()</PRE>
<DL>
</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="holder(org.apache.axis.wsdl.symbolTable.TypeEntry, org.apache.axis.wsdl.toJava.Emitter)"><!-- --></A><H3>
holder</H3>
<PRE>
public static java.lang.String <B>holder</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type,
                                      <A HREF="../../../../../org/apache/axis/wsdl/toJava/Emitter.html" title="class in org.apache.axis.wsdl.toJava">Emitter</A>&nbsp;emitter)</PRE>
<DL>
<DD><DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../org/apache/axis/wsdl/toJava/Utils.html#holder(org.apache.axis.wsdl.symbolTable.Parameter, org.apache.axis.wsdl.toJava.Emitter)"><CODE>holder(Parameter, Emitter)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="holder(org.apache.axis.wsdl.symbolTable.Parameter, org.apache.axis.wsdl.toJava.Emitter)"><!-- --></A><H3>
holder</H3>
<PRE>
public static java.lang.String <B>holder</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;p,
                                      <A HREF="../../../../../org/apache/axis/wsdl/toJava/Emitter.html" title="class in org.apache.axis.wsdl.toJava">Emitter</A>&nbsp;emitter)</PRE>
<DL>
<DD>Given a type, return the Java mapping of that type's holder.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>p</CODE> - parameter whose holder class name we want to obtain.<DD><CODE>emitter</CODE> - the only <A HREF="../../../../../org/apache/axis/wsdl/toJava/Emitter.html" title="class in org.apache.axis.wsdl.toJava"><CODE>Emitter</CODE></A> object embodying the running
                   instance of WSDL2Java.
<DT><B>Returns:</B><DD>the name of the holder class for <tt>p</tt>.</DL>
</DD>
</DL>
<HR>

<A NAME="addPackageName(java.lang.String, java.lang.String)"><!-- --></A><H3>
addPackageName</H3>
<PRE>
public static java.lang.String <B>addPackageName</B>(java.lang.String&nbsp;className,
                                              java.lang.String&nbsp;newPkg)</PRE>
<DL>
<DD>Add package to name
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>className</CODE> - full name of the class.<DD><CODE>newPkg</CODE> - name of the package to append
<DT><B>Returns:</B><DD>String name with package name added</DL>
</DD>
</DL>
<HR>

<A NAME="getFullExceptionName(javax.wsdl.Message, org.apache.axis.wsdl.symbolTable.SymbolTable)"><!-- --></A><H3>
getFullExceptionName</H3>
<PRE>
public static java.lang.String <B>getFullExceptionName</B>(javax.wsdl.Message&nbsp;faultMessage,
                                                    <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</PRE>
<DL>
<DD>Given a fault message, return the fully qualified Java class name
 of the exception to be generated from this fault
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>faultMessage</CODE> - The WSDL fault message<DD><CODE>symbolTable</CODE> - the current symbol table
<DT><B>Returns:</B><DD>A Java class name for the fault</DL>
</DD>
</DL>
<HR>

<A NAME="getFaultDataType(javax.wsdl.Message, org.apache.axis.wsdl.symbolTable.SymbolTable)"><!-- --></A><H3>
getFaultDataType</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getFaultDataType</B>(javax.wsdl.Message&nbsp;faultMessage,
                                     <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</PRE>
<DL>
<DD>Given a fault message, return the XML type of the exception data.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>faultMessage</CODE> - The WSDL fault message object<DD><CODE>symbolTable</CODE> - the current symbol table
<DT><B>Returns:</B><DD>A QName for the XML type of the data</DL>
</DD>
</DL>
<HR>

<A NAME="isFaultComplex(javax.wsdl.Message, org.apache.axis.wsdl.symbolTable.SymbolTable)"><!-- --></A><H3>
isFaultComplex</H3>
<PRE>
public static boolean <B>isFaultComplex</B>(javax.wsdl.Message&nbsp;faultMessage,
                                     <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</PRE>
<DL>
<DD>Given a fault message, return TRUE if the fault is a complex type fault
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>faultMessage</CODE> - The WSDL fault message object<DD><CODE>symbolTable</CODE> - the current symbol table
<DT><B>Returns:</B><DD>A Java class name for the fault</DL>
</DD>
</DL>
<HR>

<A NAME="getEnumerationBaseAndValues(org.w3c.dom.Node, org.apache.axis.wsdl.symbolTable.SymbolTable)"><!-- --></A><H3>
getEnumerationBaseAndValues</H3>
<PRE>
public static java.util.Vector <B>getEnumerationBaseAndValues</B>(org.w3c.dom.Node&nbsp;node,
                                                           <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</PRE>
<DL>
<DD>If the specified node represents a supported JAX-RPC enumeration,
 a Vector is returned which contains the base type and the enumeration values.
 The first element in the vector is the base type (an TypeEntry).
 Subsequent elements are values (Strings).
 If this is not an enumeration, null is returned.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - <DD><CODE>symbolTable</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="capitalizeFirstChar(java.lang.String)"><!-- --></A><H3>
capitalizeFirstChar</H3>
<PRE>
public static java.lang.String <B>capitalizeFirstChar</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Capitalize the first character of the name.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="addUnderscore(java.lang.String)"><!-- --></A><H3>
addUnderscore</H3>
<PRE>
public static java.lang.String <B>addUnderscore</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Prepend an underscore to the name
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="xmlNameToJava(java.lang.String)"><!-- --></A><H3>
xmlNameToJava</H3>
<PRE>
public static java.lang.String <B>xmlNameToJava</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Map an XML name to a valid Java identifier
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="xmlNameToJavaClass(java.lang.String)"><!-- --></A><H3>
xmlNameToJavaClass</H3>
<PRE>
public static java.lang.String <B>xmlNameToJavaClass</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Map an XML name to a valid Java identifier w/ capitolized first letter
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="makePackageName(java.lang.String)"><!-- --></A><H3>
makePackageName</H3>
<PRE>
public static java.lang.String <B>makePackageName</B>(java.lang.String&nbsp;namespace)</PRE>
<DL>
<DD>Method makePackageName
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getJavaLocalName(java.lang.String)"><!-- --></A><H3>
getJavaLocalName</H3>
<PRE>
public static java.lang.String <B>getJavaLocalName</B>(java.lang.String&nbsp;fullName)</PRE>
<DL>
<DD>Query Java Local Name
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fullName</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getJavaPackageName(java.lang.String)"><!-- --></A><H3>
getJavaPackageName</H3>
<PRE>
public static java.lang.String <B>getJavaPackageName</B>(java.lang.String&nbsp;fullName)</PRE>
<DL>
<DD>Query Java Package Name
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fullName</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="fileExists(java.lang.String, java.lang.String, org.apache.axis.wsdl.toJava.Namespaces)"><!-- --></A><H3>
fileExists</H3>
<PRE>
public static boolean <B>fileExists</B>(java.lang.String&nbsp;name,
                                 java.lang.String&nbsp;namespace,
                                 <A HREF="../../../../../org/apache/axis/wsdl/toJava/Namespaces.html" title="class in org.apache.axis.wsdl.toJava">Namespaces</A>&nbsp;namespaces)
                          throws java.io.IOException</PRE>
<DL>
<DD>Does the given file already exist in the given namespace?
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - <DD><CODE>namespace</CODE> - <DD><CODE>namespaces</CODE> - 
<DT><B>Returns:</B><DD>
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="wrapPrimitiveType(org.apache.axis.wsdl.symbolTable.TypeEntry, java.lang.String)"><!-- --></A><H3>
wrapPrimitiveType</H3>
<PRE>
public static java.lang.String <B>wrapPrimitiveType</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type,
                                                 java.lang.String&nbsp;var)</PRE>
<DL>
<DD>Return a string with "var" wrapped as an Object type if needed
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - <DD><CODE>var</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getResponseString(org.apache.axis.wsdl.symbolTable.Parameter, java.lang.String)"><!-- --></A><H3>
getResponseString</H3>
<PRE>
public static java.lang.String <B>getResponseString</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;param,
                                                 java.lang.String&nbsp;var)</PRE>
<DL>
<DD>Return the Object variable 'var' cast to the appropriate type
 doing the right thing for the primitive types.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>var</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="isPrimitiveType(org.apache.axis.wsdl.symbolTable.TypeEntry)"><!-- --></A><H3>
isPrimitiveType</H3>
<PRE>
public static boolean <B>isPrimitiveType</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type)</PRE>
<DL>
<DD>Method isPrimitiveType
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getWrapperType(java.lang.String)"><!-- --></A><H3>
getWrapperType</H3>
<PRE>
public static java.lang.String <B>getWrapperType</B>(java.lang.String&nbsp;type)</PRE>
<DL>
<DD>Return a "wrapper" type for the given type name.  In other words,
 if it's a primitive type ("int") return the java wrapper class
 ("java.lang.Integer").  Otherwise return the type name itself.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - 
<DT><B>Returns:</B><DD>the name of a java wrapper class for the type, or the type's
         name if it's not primitive.</DL>
</DD>
</DL>
<HR>

<A NAME="getWrapperType(org.apache.axis.wsdl.symbolTable.TypeEntry)"><!-- --></A><H3>
getWrapperType</H3>
<PRE>
public static java.lang.String <B>getWrapperType</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type)</PRE>
<DL>
<DD>Returns a "wrapper" type for the given TypeEntry.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>type</CODE> - 
<DT><B>Returns:</B><DD>the name of a java wrapper class for the type, or the type's
         name if it's not a primitive.</DL>
</DD>
</DL>
<HR>

<A NAME="getOperationQName(javax.wsdl.BindingOperation, org.apache.axis.wsdl.symbolTable.BindingEntry, org.apache.axis.wsdl.symbolTable.SymbolTable)"><!-- --></A><H3>
getOperationQName</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getOperationQName</B>(javax.wsdl.BindingOperation&nbsp;bindingOper,
                                      <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bEntry,
                                      <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable)</PRE>
<DL>
<DD>Return the operation QName.  The namespace is determined from
 the soap:body namespace, if it exists, otherwise it is "".
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>bindingOper</CODE> - the operation<DD><CODE>bEntry</CODE> - the symbol table binding entry<DD><CODE>symbolTable</CODE> - SymbolTable
<DT><B>Returns:</B><DD>the operation QName</DL>
</DD>
</DL>
<HR>

<A NAME="getOperationSOAPAction(javax.wsdl.BindingOperation)"><!-- --></A><H3>
getOperationSOAPAction</H3>
<PRE>
public static java.lang.String <B>getOperationSOAPAction</B>(javax.wsdl.BindingOperation&nbsp;bindingOper)</PRE>
<DL>
<DD>Return the SOAPAction (if any) of this binding operation
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>bindingOper</CODE> - the operation to look at
<DT><B>Returns:</B><DD>the SOAPAction or null if not found</DL>
</DD>
</DL>
<HR>

<A NAME="getNewQName(javax.xml.namespace.QName)"><!-- --></A><H3>
getNewQName</H3>
<PRE>
public static java.lang.String <B>getNewQName</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Common code for generating a QName in emitted code.  Note that there's
 no semicolon at the end, so we can use this in a variety of contexts.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getNewQNameWithLastLocalPart(javax.xml.namespace.QName)"><!-- --></A><H3>
getNewQNameWithLastLocalPart</H3>
<PRE>
public static java.lang.String <B>getNewQNameWithLastLocalPart</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getParameterTypeName(org.apache.axis.wsdl.symbolTable.Parameter)"><!-- --></A><H3>
getParameterTypeName</H3>
<PRE>
public static java.lang.String <B>getParameterTypeName</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;parm)</PRE>
<DL>
<DD>Get the parameter type name.  If this is a MIME type, then
 figure out the appropriate type from the MIME type, otherwise
 use the name of the type itself.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parm</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getXSIType(org.apache.axis.wsdl.symbolTable.Parameter)"><!-- --></A><H3>
getXSIType</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getXSIType</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;param)</PRE>
<DL>
<DD>Get the QName that could be used in the xsi:type
 when serializing an object for this parameter/return
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>param</CODE> - is a parameter
<DT><B>Returns:</B><DD>the QName of the parameter's xsi type</DL>
</DD>
</DL>
<HR>

<A NAME="getXSIType(org.apache.axis.wsdl.symbolTable.TypeEntry)"><!-- --></A><H3>
getXSIType</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getXSIType</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;te)</PRE>
<DL>
<DD>Get the QName that could be used in the xsi:type
 when serializing an object of the given type.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>te</CODE> - is the type entry
<DT><B>Returns:</B><DD>the QName of the type's xsi type</DL>
</DD>
</DL>
<HR>

<A NAME="getMIMETypeQName(java.lang.String)"><!-- --></A><H3>
getMIMETypeQName</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getMIMETypeQName</B>(java.lang.String&nbsp;mimeName)</PRE>
<DL>
<DD>Given a MIME type, return the AXIS-specific type QName.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>mimeName</CODE> - the MIME type name
<DT><B>Returns:</B><DD>the AXIS-specific QName for the MIME type</DL>
</DD>
</DL>
<HR>

<A NAME="hasMIME(org.apache.axis.wsdl.symbolTable.BindingEntry)"><!-- --></A><H3>
hasMIME</H3>
<PRE>
public static boolean <B>hasMIME</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bEntry)</PRE>
<DL>
<DD>Are there any MIME parameters in the given binding?
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>bEntry</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="hasMIME(org.apache.axis.wsdl.symbolTable.BindingEntry, javax.wsdl.BindingOperation)"><!-- --></A><H3>
hasMIME</H3>
<PRE>
public static boolean <B>hasMIME</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bEntry,
                              javax.wsdl.BindingOperation&nbsp;operation)</PRE>
<DL>
<DD>Are there any MIME parameters in the given binding's operation?
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>bEntry</CODE> - <DD><CODE>operation</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getConstructorForParam(org.apache.axis.wsdl.symbolTable.Parameter, org.apache.axis.wsdl.symbolTable.SymbolTable, javax.xml.rpc.holders.BooleanHolder)"><!-- --></A><H3>
getConstructorForParam</H3>
<PRE>
public static java.lang.String <B>getConstructorForParam</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameter.html" title="class in org.apache.axis.wsdl.symbolTable">Parameter</A>&nbsp;param,
                                                      <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html" title="class in org.apache.axis.wsdl.symbolTable">SymbolTable</A>&nbsp;symbolTable,
                                                      <A HREF="../../../../../javax/xml/rpc/holders/BooleanHolder.html" title="class in javax.xml.rpc.holders">BooleanHolder</A>&nbsp;bThrow)</PRE>
<DL>
<DD>Return a constructor for the provided Parameter
 This string will be suitable for assignment:
 <p/>
 Foo var = <i>string returned</i>
 <p/>
 Handles basic java types (int, float, etc), wrapper types (Integer, etc)
 and certain java.math (BigDecimal, BigInteger) types.
 Will also handle all Axis specific types (org.apache.axis.types.*)
 <p/>
 Caller should expect to wrap the construction in a try/catch block
 if bThrow is set to <i>true</i>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>param</CODE> - info about the parameter we need a constructor for<DD><CODE>symbolTable</CODE> - used to lookup enumerations<DD><CODE>bThrow</CODE> - set to true if contructor needs try/catch block
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="shouldEmit(org.apache.axis.wsdl.symbolTable.TypeEntry)"><!-- --></A><H3>
shouldEmit</H3>
<PRE>
public static boolean <B>shouldEmit</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;type)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isXsNode(org.w3c.dom.Node, java.lang.String)"><!-- --></A><H3>
isXsNode</H3>
<PRE>
public static boolean <B>isXsNode</B>(org.w3c.dom.Node&nbsp;node,
                               java.lang.String&nbsp;nameName)</PRE>
<DL>
<DD>Determines if the DOM Node represents an xs:<node>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getItemQName(org.apache.axis.wsdl.symbolTable.TypeEntry)"><!-- --></A><H3>
getItemQName</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getItemQName</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;te)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getItemType(org.apache.axis.wsdl.symbolTable.TypeEntry)"><!-- --></A><H3>
getItemType</H3>
<PRE>
public static <A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getItemType</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A>&nbsp;te)</PRE>
<DL>
<DD><DL>
</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/Utils.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/toJava/NamespaceSelector.html" title="class in org.apache.axis.wsdl.toJava"><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="Utils.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>
