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

<META NAME="keywords" CONTENT="org.apache.axis.wsdl.symbolTable.SymbolTable class">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="SymbolTable (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/SymbolTable.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/symbolTable/ServiceEntry.html" title="class in org.apache.axis.wsdl.symbolTable"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymTabEntry.html" title="class in org.apache.axis.wsdl.symbolTable"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="SymbolTable.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.symbolTable</FONT>
<BR>
Class SymbolTable</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.wsdl.symbolTable.SymbolTable</B>
</PRE>
<HR>
<DL>
<DT>public class <B>SymbolTable</B><DT>extends java.lang.Object</DL>

<P>
This class represents a table of all of the top-level symbols from a set of WSDL Definitions and
 DOM Documents:  XML types; WSDL messages, portTypes, bindings, and services.
 <p/>
 This symbolTable contains entries of the form <key, value> where key is of type QName and value is
 of type Vector.  The Vector's elements are all of the objects that have the given QName.  This is
 necessary since names aren't unique among the WSDL types.  message, portType, binding, service,
 could all have the same QName and are differentiated merely by type.  SymbolTable contains
 type-specific getters to bypass the Vector layer:
 public PortTypeEntry getPortTypeEntry(QName name), etc.
<P>

<P>
<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>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#ANON_TOKEN">ANON_TOKEN</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field ANON_TOKEN</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.HashMap</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#derivedTypes">derivedTypes</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.Map</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#node2ExtensionBase">node2ExtensionBase</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache of nodes -> base types for complexTypes.</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/symbolTable/SymbolTable.html#quiet">quiet</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field quiet</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/symbolTable/SymbolTable.html#SymbolTable(org.apache.axis.wsdl.symbolTable.BaseTypeMapping, boolean, boolean, boolean)">SymbolTable</A></B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BaseTypeMapping.html" title="class in org.apache.axis.wsdl.symbolTable">BaseTypeMapping</A>&nbsp;btm,
            boolean&nbsp;addImports,
            boolean&nbsp;verbose,
            boolean&nbsp;nowrap)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a symbol table with the given Namespaces.</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>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#add(java.lang.String, javax.wsdl.Definition, org.w3c.dom.Document)">add</A></B>(java.lang.String&nbsp;context,
    javax.wsdl.Definition&nbsp;def,
    org.w3c.dom.Document&nbsp;doc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the given Definition and Document information to the symbol table (including imported
 symbols), populating it with SymTabEntries for each of the top-level symbols.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#createTypeFromRef(org.w3c.dom.Node)">createTypeFromRef</A></B>(org.w3c.dom.Node&nbsp;node)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node may contain a reference (via type=, ref=, or element= attributes) to
 another type.</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/symbolTable/SymbolTable.html#dump(java.io.PrintStream)">dump</A></B>(java.io.PrintStream&nbsp;out)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dump the contents of the symbol table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#ensureOperationMessageValid(javax.wsdl.Message)">ensureOperationMessageValid</A></B>(javax.wsdl.Message&nbsp;message)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensures that a message in a <code>&lt;input&gt;</code>, <code>&lt;output&gt;</code>,
 or <code>&lt;fault&gt;</fault> element in an <code>&lt;operation&gt;</code>
 element is valid.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#ensureOperationsOfPortTypeValid(javax.wsdl.PortType)">ensureOperationsOfPortTypeValid</A></B>(javax.wsdl.PortType&nbsp;portType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensures that an an element <code>&lt;portType&gt;</code>
 is valid.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#ensureOperationValid(javax.wsdl.Operation)">ensureOperationValid</A></B>(javax.wsdl.Operation&nbsp;operation)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensures that an an element <code>&lt;operation&gt;</code> within
 an element <code>&lt;portType&gt;<code> is valid.</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/symbolTable/SymbolTable.html#existsPortWithName(javax.xml.namespace.QName)">existsPortWithName</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checks whether there exists a WSDL port with a given name in the current
 symbol table</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/symbolTable/SymTabEntry.html" title="class in org.apache.axis.wsdl.symbolTable">SymTabEntry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#get(javax.xml.namespace.QName, java.lang.Class)">get</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;Get the entry with the given QName of the given class.</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/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getBindingEntry(javax.xml.namespace.QName)">getBindingEntry</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;Get the BindingEntry with the given QName.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.wsdl.Definition</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getDefinition()">getDefinition</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the Definition.</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/symbolTable/Element.html" title="class in org.apache.axis.wsdl.symbolTable">Element</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getElement(javax.xml.namespace.QName)">getElement</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;Get the Element TypeEntry with the given QName.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Map</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getElementFormDefaults()">getElementFormDefaults</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Map</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getElementIndex()">getElementIndex</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an unmodifiable map of qnames -> Elements in the symbol
 table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.HashMap</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getHashMap()">getHashMap</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the raw symbol table HashMap.</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/symbolTable/SymbolTable.html#getMessageEntries()">getMessageEntries</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/MessageEntry.html" title="class in org.apache.axis.wsdl.symbolTable">MessageEntry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getMessageEntry(javax.xml.namespace.QName)">getMessageEntry</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;Get the MessageEntry with the given QName.</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/symbolTable/Parameters.html" title="class in org.apache.axis.wsdl.symbolTable">Parameters</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getOperationParameters(javax.wsdl.Operation, java.lang.String, org.apache.axis.wsdl.symbolTable.BindingEntry)">getOperationParameters</A></B>(javax.wsdl.Operation&nbsp;operation,
                       java.lang.String&nbsp;namespace,
                       <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bindingEntry)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For the given operation, this method returns the parameter info conveniently collated.</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/symbolTable/SymbolTable.html#getParametersFromParts(java.util.Vector, java.util.Collection, boolean, java.lang.String, org.apache.axis.wsdl.symbolTable.BindingEntry)">getParametersFromParts</A></B>(java.util.Vector&nbsp;v,
                       java.util.Collection&nbsp;parts,
                       boolean&nbsp;literal,
                       java.lang.String&nbsp;opName,
                       <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bindingEntry)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method returns a vector containing Parameters which represent
 each Part (shouldn't we call these "Parts" or something?)

 This routine does the wrapped doc/lit processing.</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/symbolTable/PortTypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">PortTypeEntry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getPortTypeEntry(javax.xml.namespace.QName)">getPortTypeEntry</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;Get the PortTypeEntry with the given QName.</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/symbolTable/ServiceEntry.html" title="class in org.apache.axis.wsdl.symbolTable">ServiceEntry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getServiceEntry(javax.xml.namespace.QName)">getServiceEntry</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;Get the ServiceEntry with the given QName.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Vector</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getSymbols(javax.xml.namespace.QName)">getSymbols</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;Get the list of entries with the given QName.</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/symbolTable/Type.html" title="class in org.apache.axis.wsdl.symbolTable">Type</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getType(javax.xml.namespace.QName)">getType</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;Get the Type TypeEntry with the given QName.</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/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getTypeEntry(javax.xml.namespace.QName, boolean)">getTypeEntry</A></B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
             boolean&nbsp;wantElementType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the type entry for the given qname.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getTypeEntryCount()">getTypeEntryCount</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the count of TypeEntries in the symbol table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Map</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getTypeIndex()">getTypeIndex</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an unmodifiable map of qnames -> Elements in the symbol
 table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Vector</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#getTypes()">getTypes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use specialized get{Element,Type}Index() methods instead</I></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/symbolTable/SymbolTable.html#getWSDLURI()">getWSDLURI</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the WSDL URI.</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/symbolTable/SymbolTable.html#isKnownNamespace(java.lang.String)">isKnownNamespace</A></B>(java.lang.String&nbsp;namespace)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check if this is a known namespace (soap-enc or schema xsd or schema xsi or xml)</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/symbolTable/SymbolTable.html#isQuiet()">isQuiet</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method isQuiet</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/symbolTable/SymbolTable.html#isWrapped()">isWrapped</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Are we wrapping literal soap body elements.</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/symbolTable/SymbolTable.html#populate(java.lang.String)">populate</A></B>(java.lang.String&nbsp;uri)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Call this method if you have a uri for the WSDL document</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/symbolTable/SymbolTable.html#populate(java.lang.String, org.w3c.dom.Document)">populate</A></B>(java.lang.String&nbsp;context,
         org.w3c.dom.Document&nbsp;doc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Call this method if your WSDL document has already been parsed as an XML DOM document.</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/symbolTable/SymbolTable.html#populate(java.lang.String, java.lang.String, java.lang.String)">populate</A></B>(java.lang.String&nbsp;uri,
         java.lang.String&nbsp;username,
         java.lang.String&nbsp;password)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method populate</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/symbolTable/SymbolTable.html#populateTypes(java.net.URL, org.w3c.dom.Document)">populateTypes</A></B>(java.net.URL&nbsp;context,
              org.w3c.dom.Document&nbsp;doc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Populate the symbol table with all of the Types from the Document.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#processTypes()">processTypes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#setQuiet(boolean)">setQuiet</A></B>(boolean&nbsp;quiet)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method setQuiet</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/symbolTable/SymbolTable.html#setWrapArrays(boolean)">setWrapArrays</A></B>(boolean&nbsp;wrapArrays)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymbolTable.html#setWrapped(boolean)">setWrapped</A></B>(boolean&nbsp;wrapped)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Turn on/off element wrapping for literal soap body's.</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="derivedTypes"><!-- --></A><H3>
derivedTypes</H3>
<PRE>
protected java.util.HashMap <B>derivedTypes</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="node2ExtensionBase"><!-- --></A><H3>
node2ExtensionBase</H3>
<PRE>
protected final java.util.Map <B>node2ExtensionBase</B></PRE>
<DL>
<DD>cache of nodes -> base types for complexTypes.  The cache is
 built on nodes because multiple TypeEntry objects may use the
 same node.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="quiet"><!-- --></A><H3>
quiet</H3>
<PRE>
protected boolean <B>quiet</B></PRE>
<DL>
<DD>Field quiet
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="ANON_TOKEN"><!-- --></A><H3>
ANON_TOKEN</H3>
<PRE>
public static final java.lang.String <B>ANON_TOKEN</B></PRE>
<DL>
<DD>Field ANON_TOKEN
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.wsdl.symbolTable.SymbolTable.ANON_TOKEN">Constant Field Values</A></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="SymbolTable(org.apache.axis.wsdl.symbolTable.BaseTypeMapping, boolean, boolean, boolean)"><!-- --></A><H3>
SymbolTable</H3>
<PRE>
public <B>SymbolTable</B>(<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BaseTypeMapping.html" title="class in org.apache.axis.wsdl.symbolTable">BaseTypeMapping</A>&nbsp;btm,
                   boolean&nbsp;addImports,
                   boolean&nbsp;verbose,
                   boolean&nbsp;nowrap)</PRE>
<DL>
<DD>Construct a symbol table with the given Namespaces.
<P>
<DT><B>Parameters:</B><DD><CODE>btm</CODE> - <DD><CODE>addImports</CODE> - <DD><CODE>verbose</CODE> - <DD><CODE>nowrap</CODE> - </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="isQuiet()"><!-- --></A><H3>
isQuiet</H3>
<PRE>
public boolean <B>isQuiet</B>()</PRE>
<DL>
<DD>Method isQuiet
<P>
<DD><DL>

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

<A NAME="setQuiet(boolean)"><!-- --></A><H3>
setQuiet</H3>
<PRE>
public void <B>setQuiet</B>(boolean&nbsp;quiet)</PRE>
<DL>
<DD>Method setQuiet
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>quiet</CODE> - </DL>
</DD>
</DL>
<HR>

<A NAME="getHashMap()"><!-- --></A><H3>
getHashMap</H3>
<PRE>
public java.util.HashMap <B>getHashMap</B>()</PRE>
<DL>
<DD>Get the raw symbol table HashMap.
<P>
<DD><DL>

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

<A NAME="getSymbols(javax.xml.namespace.QName)"><!-- --></A><H3>
getSymbols</H3>
<PRE>
public java.util.Vector <B>getSymbols</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the list of entries with the given QName.  Since symbols can share QNames, this list is
 necessary.  This list will not contain any more than one element of any given SymTabEntry.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="get(javax.xml.namespace.QName, java.lang.Class)"><!-- --></A><H3>
get</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymTabEntry.html" title="class in org.apache.axis.wsdl.symbolTable">SymTabEntry</A> <B>get</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                       java.lang.Class&nbsp;cls)</PRE>
<DL>
<DD>Get the entry with the given QName of the given class.  If it does not exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - <DD><CODE>cls</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getTypeEntry(javax.xml.namespace.QName, boolean)"><!-- --></A><H3>
getTypeEntry</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/TypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">TypeEntry</A> <B>getTypeEntry</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname,
                              boolean&nbsp;wantElementType)</PRE>
<DL>
<DD>Get the type entry for the given qname.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - <DD><CODE>wantElementType</CODE> - boolean that indicates type or element (for type= or ref=)
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getType(javax.xml.namespace.QName)"><!-- --></A><H3>
getType</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Type.html" title="class in org.apache.axis.wsdl.symbolTable">Type</A> <B>getType</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the Type TypeEntry with the given QName.  If it doesn't
 exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getElement(javax.xml.namespace.QName)"><!-- --></A><H3>
getElement</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Element.html" title="class in org.apache.axis.wsdl.symbolTable">Element</A> <B>getElement</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the Element TypeEntry with the given QName.  If it doesn't
 exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getMessageEntry(javax.xml.namespace.QName)"><!-- --></A><H3>
getMessageEntry</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/MessageEntry.html" title="class in org.apache.axis.wsdl.symbolTable">MessageEntry</A> <B>getMessageEntry</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the MessageEntry with the given QName.  If it doesn't exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getPortTypeEntry(javax.xml.namespace.QName)"><!-- --></A><H3>
getPortTypeEntry</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/PortTypeEntry.html" title="class in org.apache.axis.wsdl.symbolTable">PortTypeEntry</A> <B>getPortTypeEntry</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the PortTypeEntry with the given QName.  If it doesn't exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getBindingEntry(javax.xml.namespace.QName)"><!-- --></A><H3>
getBindingEntry</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A> <B>getBindingEntry</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the BindingEntry with the given QName.  If it doesn't exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getServiceEntry(javax.xml.namespace.QName)"><!-- --></A><H3>
getServiceEntry</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/ServiceEntry.html" title="class in org.apache.axis.wsdl.symbolTable">ServiceEntry</A> <B>getServiceEntry</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</PRE>
<DL>
<DD>Get the ServiceEntry with the given QName.  If it doesn't exist, return null.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - 
<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="getTypes()"><!-- --></A><H3>
getTypes</H3>
<PRE>
public java.util.Vector <B>getTypes</B>()</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>use specialized get{Element,Type}Index() methods instead</I>
<P>
<DD>Get the list of all the XML schema types in the symbol table.  In other words, all entries
 that are instances of TypeEntry.
<P>
<DD><DL>

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

<A NAME="getElementIndex()"><!-- --></A><H3>
getElementIndex</H3>
<PRE>
public java.util.Map <B>getElementIndex</B>()</PRE>
<DL>
<DD>Return an unmodifiable map of qnames -> Elements in the symbol
 table.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>an unmodifiable <code>Map</code> value</DL>
</DD>
</DL>
<HR>

<A NAME="getTypeIndex()"><!-- --></A><H3>
getTypeIndex</H3>
<PRE>
public java.util.Map <B>getTypeIndex</B>()</PRE>
<DL>
<DD>Return an unmodifiable map of qnames -> Elements in the symbol
 table.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>an unmodifiable <code>Map</code> value</DL>
</DD>
</DL>
<HR>

<A NAME="getTypeEntryCount()"><!-- --></A><H3>
getTypeEntryCount</H3>
<PRE>
public int <B>getTypeEntryCount</B>()</PRE>
<DL>
<DD>Return the count of TypeEntries in the symbol table.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>an <code>int</code> value</DL>
</DD>
</DL>
<HR>

<A NAME="getDefinition()"><!-- --></A><H3>
getDefinition</H3>
<PRE>
public javax.wsdl.Definition <B>getDefinition</B>()</PRE>
<DL>
<DD>Get the Definition.  The definition is null until
 populate is called.
<P>
<DD><DL>

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

<A NAME="getWSDLURI()"><!-- --></A><H3>
getWSDLURI</H3>
<PRE>
public java.lang.String <B>getWSDLURI</B>()</PRE>
<DL>
<DD>Get the WSDL URI.  The WSDL URI is null until populate
 is called, and ONLY if a WSDL URI is provided.
<P>
<DD><DL>

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

<A NAME="isWrapped()"><!-- --></A><H3>
isWrapped</H3>
<PRE>
public boolean <B>isWrapped</B>()</PRE>
<DL>
<DD>Are we wrapping literal soap body elements.
<P>
<DD><DL>

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

<A NAME="setWrapped(boolean)"><!-- --></A><H3>
setWrapped</H3>
<PRE>
public void <B>setWrapped</B>(boolean&nbsp;wrapped)</PRE>
<DL>
<DD>Turn on/off element wrapping for literal soap body's.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>wrapped</CODE> - </DL>
</DD>
</DL>
<HR>

<A NAME="dump(java.io.PrintStream)"><!-- --></A><H3>
dump</H3>
<PRE>
public void <B>dump</B>(java.io.PrintStream&nbsp;out)</PRE>
<DL>
<DD>Dump the contents of the symbol table.  For debugging purposes only.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>out</CODE> - </DL>
</DD>
</DL>
<HR>

<A NAME="populate(java.lang.String)"><!-- --></A><H3>
populate</H3>
<PRE>
public void <B>populate</B>(java.lang.String&nbsp;uri)
              throws java.io.IOException,
                     javax.wsdl.WSDLException,
                     org.xml.sax.SAXException,
                     javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Call this method if you have a uri for the WSDL document
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>uri</CODE> - wsdlURI the location of the WSDL file.
<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="populate(java.lang.String, java.lang.String, java.lang.String)"><!-- --></A><H3>
populate</H3>
<PRE>
public void <B>populate</B>(java.lang.String&nbsp;uri,
                     java.lang.String&nbsp;username,
                     java.lang.String&nbsp;password)
              throws java.io.IOException,
                     javax.wsdl.WSDLException,
                     org.xml.sax.SAXException,
                     javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Method populate
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>uri</CODE> - <DD><CODE>username</CODE> - <DD><CODE>password</CODE> - 
<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="populate(java.lang.String, org.w3c.dom.Document)"><!-- --></A><H3>
populate</H3>
<PRE>
public void <B>populate</B>(java.lang.String&nbsp;context,
                     org.w3c.dom.Document&nbsp;doc)
              throws java.io.IOException,
                     org.xml.sax.SAXException,
                     javax.wsdl.WSDLException,
                     javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Call this method if your WSDL document has already been parsed as an XML DOM document.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - context This is directory context for the Document.  If the Document were from file "/x/y/z.wsdl" then the context could be "/x/y" (even "/x/y/z.wsdl" would work).  If context is null, then the context becomes the current directory.<DD><CODE>doc</CODE> - doc This is the XML Document containing the WSDL.
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE>
<DD><CODE>org.xml.sax.SAXException</CODE>
<DD><CODE>javax.wsdl.WSDLException</CODE>
<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="add(java.lang.String, javax.wsdl.Definition, org.w3c.dom.Document)"><!-- --></A><H3>
add</H3>
<PRE>
protected void <B>add</B>(java.lang.String&nbsp;context,
                   javax.wsdl.Definition&nbsp;def,
                   org.w3c.dom.Document&nbsp;doc)
            throws java.io.IOException,
                   org.xml.sax.SAXException,
                   javax.wsdl.WSDLException,
                   javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Add the given Definition and Document information to the symbol table (including imported
 symbols), populating it with SymTabEntries for each of the top-level symbols.  When the
 symbol table has been populated, iterate through it, setting the isReferenced flag
 appropriately for each entry.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - <DD><CODE>def</CODE> - <DD><CODE>doc</CODE> - 
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE>
<DD><CODE>org.xml.sax.SAXException</CODE>
<DD><CODE>javax.wsdl.WSDLException</CODE>
<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="isKnownNamespace(java.lang.String)"><!-- --></A><H3>
isKnownNamespace</H3>
<PRE>
public boolean <B>isKnownNamespace</B>(java.lang.String&nbsp;namespace)</PRE>
<DL>
<DD>Check if this is a known namespace (soap-enc or schema xsd or schema xsi or xml)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - 
<DT><B>Returns:</B><DD>true if this is a know namespace.</DL>
</DD>
</DL>
<HR>

<A NAME="populateTypes(java.net.URL, org.w3c.dom.Document)"><!-- --></A><H3>
populateTypes</H3>
<PRE>
public void <B>populateTypes</B>(java.net.URL&nbsp;context,
                          org.w3c.dom.Document&nbsp;doc)
                   throws java.io.IOException,
                          org.xml.sax.SAXException,
                          javax.wsdl.WSDLException,
                          javax.xml.parsers.ParserConfigurationException</PRE>
<DL>
<DD>Populate the symbol table with all of the Types from the Document.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - <DD><CODE>doc</CODE> - 
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE>
<DD><CODE>org.xml.sax.SAXException</CODE>
<DD><CODE>javax.wsdl.WSDLException</CODE>
<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="createTypeFromRef(org.w3c.dom.Node)"><!-- --></A><H3>
createTypeFromRef</H3>
<PRE>
protected void <B>createTypeFromRef</B>(org.w3c.dom.Node&nbsp;node)
                          throws java.io.IOException</PRE>
<DL>
<DD>Node may contain a reference (via type=, ref=, or element= attributes) to
 another type.  Create a Type object representing this referenced type.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>node</CODE> - 
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="ensureOperationMessageValid(javax.wsdl.Message)"><!-- --></A><H3>
ensureOperationMessageValid</H3>
<PRE>
protected void <B>ensureOperationMessageValid</B>(javax.wsdl.Message&nbsp;message)
                                    throws java.io.IOException</PRE>
<DL>
<DD>ensures that a message in a <code>&lt;input&gt;</code>, <code>&lt;output&gt;</code>,
 or <code>&lt;fault&gt;</fault> element in an <code>&lt;operation&gt;</code>
 element is valid. In particular, ensures that
 <ol>
 <li>an attribute <code>message</code> is present (according to the
 XML Schema for WSDL 1.1 <code>message</code> is <strong>required</strong>
 <p/>
 <li>the value of attribute <code>message</code> (a QName) refers to
 an already defined message
 </ol>
 <p/>
 <strong>Note</strong>: this method should throw a <code>javax.wsdl.WSDLException</code> rather than
 a <code>java.io.IOException</code>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - the message object
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE> - thrown, if the message is not valid</DL>
</DD>
</DL>
<HR>

<A NAME="ensureOperationValid(javax.wsdl.Operation)"><!-- --></A><H3>
ensureOperationValid</H3>
<PRE>
protected void <B>ensureOperationValid</B>(javax.wsdl.Operation&nbsp;operation)
                             throws java.io.IOException</PRE>
<DL>
<DD>ensures that an an element <code>&lt;operation&gt;</code> within
 an element <code>&lt;portType&gt;<code> is valid. Throws an exception
 if the operation is not valid.
 <p/>
 <strong>Note</strong>: this method should throw a <code>javax.wsdl.WSDLException</code>
 rather than a <code>java.io.IOException</code>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>operation</CODE> - the operation element
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE> - thrown, if the element is not valid.
<DD><CODE>java.lang.IllegalArgumentException</CODE> - thrown, if operation is null</DL>
</DD>
</DL>
<HR>

<A NAME="ensureOperationsOfPortTypeValid(javax.wsdl.PortType)"><!-- --></A><H3>
ensureOperationsOfPortTypeValid</H3>
<PRE>
protected void <B>ensureOperationsOfPortTypeValid</B>(javax.wsdl.PortType&nbsp;portType)
                                        throws java.io.IOException</PRE>
<DL>
<DD>ensures that an an element <code>&lt;portType&gt;</code>
 is valid. Throws an exception if the portType is not valid.
 <p/>
 <strong>Note</strong>: this method should throw a <code>javax.wsdl.WSDLException</code>
 rather than a <code>java.io.IOException</code>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>portType</CODE> - the portType element
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE> - thrown, if the element is not valid.
<DD><CODE>java.lang.IllegalArgumentException</CODE> - thrown, if operation is null</DL>
</DD>
</DL>
<HR>

<A NAME="getOperationParameters(javax.wsdl.Operation, java.lang.String, org.apache.axis.wsdl.symbolTable.BindingEntry)"><!-- --></A><H3>
getOperationParameters</H3>
<PRE>
public <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/Parameters.html" title="class in org.apache.axis.wsdl.symbolTable">Parameters</A> <B>getOperationParameters</B>(javax.wsdl.Operation&nbsp;operation,
                                         java.lang.String&nbsp;namespace,
                                         <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bindingEntry)
                                  throws java.io.IOException</PRE>
<DL>
<DD>For the given operation, this method returns the parameter info conveniently collated.
 There is a bit of processing that is needed to write the interface, stub, and skeleton.
 Rather than do that processing 3 times, it is done once, here, and stored in the
 Parameters object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>operation</CODE> - <DD><CODE>namespace</CODE> - <DD><CODE>bindingEntry</CODE> - 
<DT><B>Returns:</B><DD>
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getParametersFromParts(java.util.Vector, java.util.Collection, boolean, java.lang.String, org.apache.axis.wsdl.symbolTable.BindingEntry)"><!-- --></A><H3>
getParametersFromParts</H3>
<PRE>
public void <B>getParametersFromParts</B>(java.util.Vector&nbsp;v,
                                   java.util.Collection&nbsp;parts,
                                   boolean&nbsp;literal,
                                   java.lang.String&nbsp;opName,
                                   <A HREF="../../../../../org/apache/axis/wsdl/symbolTable/BindingEntry.html" title="class in org.apache.axis.wsdl.symbolTable">BindingEntry</A>&nbsp;bindingEntry)
                            throws java.io.IOException</PRE>
<DL>
<DD>This method returns a vector containing Parameters which represent
 each Part (shouldn't we call these "Parts" or something?)

 This routine does the wrapped doc/lit processing.
 It is also used for generating Faults, and this really confuses things
 but we need to do the same processing for the fault messages.

 This whole method is waaaay too complex.
 It needs rewriting (for instance, we sometimes new up
 a Parameter, then ignore it in favor of another we new up.)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>v</CODE> - The output vector of parameters<DD><CODE>parts</CODE> - The parts of the message<DD><CODE>literal</CODE> - Are we in a literal operation (or fault)?<DD><CODE>opName</CODE> - The operation (or fault) name<DD><CODE>bindingEntry</CODE> - The binding for this operation - can be NULL if we are looking at a fault
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE> - when encountering an error in the WSDL</DL>
</DD>
</DL>
<HR>

<A NAME="existsPortWithName(javax.xml.namespace.QName)"><!-- --></A><H3>
existsPortWithName</H3>
<PRE>
protected boolean <B>existsPortWithName</B>(<A HREF="../../../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;name)</PRE>
<DL>
<DD>checks whether there exists a WSDL port with a given name in the current
 symbol table
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the QName of the port. Note: only the local part of the qname is relevant,
             since port names are not qualified with a namespace. They are of type nmtoken in WSDL 1.1
             and of type ncname in WSDL 1.2
<DT><B>Returns:</B><DD>true, if there is a port element with the specified name; false, otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="processTypes()"><!-- --></A><H3>
processTypes</H3>
<PRE>
protected void <B>processTypes</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getMessageEntries()"><!-- --></A><H3>
getMessageEntries</H3>
<PRE>
public java.util.List <B>getMessageEntries</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setWrapArrays(boolean)"><!-- --></A><H3>
setWrapArrays</H3>
<PRE>
public void <B>setWrapArrays</B>(boolean&nbsp;wrapArrays)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getElementFormDefaults()"><!-- --></A><H3>
getElementFormDefaults</H3>
<PRE>
public java.util.Map <B>getElementFormDefaults</B>()</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/SymbolTable.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/symbolTable/ServiceEntry.html" title="class in org.apache.axis.wsdl.symbolTable"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/axis/wsdl/symbolTable/SymTabEntry.html" title="class in org.apache.axis.wsdl.symbolTable"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="SymbolTable.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>
