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

<META NAME="keywords" CONTENT="org.apache.axis.MessageContext class">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="MessageContext (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/MessageContext.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/Message.html" title="class in org.apache.axis"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/axis/SimpleChain.html" title="class in org.apache.axis"><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="MessageContext.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</FONT>
<BR>
Class MessageContext</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.MessageContext</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A>, <A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html" title="interface in javax.xml.rpc.handler.soap">SOAPMessageContext</A></DD>
</DL>
<HR>
<DL>
<DT>public class <B>MessageContext</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html" title="interface in javax.xml.rpc.handler.soap">SOAPMessageContext</A></DL>

<P>
A MessageContext is the Axis implementation of the javax
 SOAPMessageContext class, and is core to message processing
 in handlers and other parts of the system.

 This class also contains constants for accessing some
 well-known properties. Using a hierarchical namespace is
 strongly suggested in order to lower the chance for
 conflicts.

 (These constants should be viewed as an explicit list of well
  known and widely used context keys, there's nothing wrong
  with directly using the key strings. This is the reason for
  the hierarchical constant namespace.

  Actually I think we might just list the keys in the docs and
  provide no such constants since they create yet another
  namespace, but we'd have no compile-time checks then.

  Whaddya think? - todo by Jacek)
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Doug Davis (dug@us.ibm.com), Jacek Kopecky (jacek@idoox.com)</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>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#ACCEPTMISSINGPARAMS">ACCEPTMISSINGPARAMS</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A boolean param, to control whether we accept missing parameters
 as nulls or refuse to acknowledge them.</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/MessageContext.html#ATTACHMENTS_DIR">ATTACHMENTS_DIR</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The directory where in coming attachments are created.</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/MessageContext.html#AUTHUSER">AUTHUSER</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place to store an AuthenticatedUser.</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/MessageContext.html#CALL">CALL</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If on the client - this is the Call object.</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/MessageContext.html#ENGINE_HANDLER">ENGINE_HANDLER</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contains an instance of Handler, which is the
  ServiceContext and the entrypoint of this service.</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/MessageContext.html#HTTP_TRANSPORT_VERSION">HTTP_TRANSPORT_VERSION</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The value of the property is used by service WSDL generation (aka ?WSDL).</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/MessageContext.html#IS_MSG">IS_MSG</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Are we doing Msg vs RPC? - For Java Binding.</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/MessageContext.html#log">log</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The <code>Log</code> used for logging all messages.</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/MessageContext.html#QUIT_REQUESTED">QUIT_REQUESTED</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Has a quit been requested? Hackish...</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/MessageContext.html#SECURITY_PROVIDER">SECURITY_PROVIDER</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The security provider.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#systemTempDir">systemTempDir</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Temporary directory to store attachments.</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/MessageContext.html#TRANS_URL">TRANS_URL</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This String is the URL that the message came to.</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/MessageContext.html#WSDLGEN_INTFNAMESPACE">WSDLGEN_INTFNAMESPACE</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The value of the property is used by service WSDL generation (aka ?WSDL)
 For the service's interface namespace if not set TRANS_URL property is used.</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/MessageContext.html#WSDLGEN_SERV_LOC_URL">WSDLGEN_SERV_LOC_URL</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The value of the property is used by service WSDL generation (aka ?WSDL).</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/MessageContext.html#MessageContext(org.apache.axis.AxisEngine)">MessageContext</A></B>(<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A>&nbsp;engine)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a message context.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

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

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the MessageContext contains a property with the specified name.</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/MessageContext.html#dispose()">dispose</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if a message (or subclass) has any disposal needs, this method
 is where it goes.</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/MessageContext.html#finalize()">finalize</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;during finalization, the dispose() method is called.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getAllPropertyNames()">getAllPropertyNames</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an Iterator view of the names of the properties 
  in this MessageContext and any parents of the LockableHashtable</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getAxisEngine()">getAxisEngine</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the axis engine.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.ClassLoader</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getClassLoader()">getClassLoader</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the classloader, implicitly binding to the thread context
 classloader if an override has not been supplied.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../org/apache/axis/MessageContext.html" title="class in org.apache.axis">MessageContext</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getCurrentContext()">getCurrentContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the active message context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getCurrentMessage()">getCurrentMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the current (i.e.</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/MessageContext.html#getEncodingStyle()">getEncodingStyle</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the encoding style as a URI that should be used for the SOAP
 message.</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/MessageContext.html#getMaintainSession()">getMaintainSession</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Discover if we are maintaining session state.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getMessage()">getMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the SOAPMessage from this message context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getOperation()">getOperation</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The current operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getOperationByQName(javax.xml.namespace.QName)">getOperationByQName</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 first possible operation that could match a
 body containing an element of 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/constants/Style.html" title="class in org.apache.axis.constants">Style</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getOperationStyle()">getOperationStyle</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the operation style.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/constants/Use.html" title="class in org.apache.axis.constants">Use</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getOperationUse()">getOperationUse</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the operation use.</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/MessageContext.html#getPassword()">getPassword</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the password.</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/MessageContext.html#getPastPivot()">getPastPivot</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine when we've passed the pivot.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getPossibleOperationsByQName(javax.xml.namespace.QName)">getPossibleOperationsByQName</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;Returns a list of operation descriptors that could may
 possibly match a body containing an element of the given QName.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getProperty(java.lang.String)">getProperty</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the value associated with the named property - or null if not
 defined/set.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getPropertyNames()">getPropertyNames</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an <code>Iterator</code> view of the names of the properties in
 this <code>MessageContext</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getRequestMessage()">getRequestMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the request message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getResponseMessage()">getResponseMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the response message.</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/MessageContext.html#getRoles()">getRoles</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the SOAP actor roles associated with an execution of the
 <code>HandlerChain</code> and its contained <code>Handler</code>
 instances.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/schema/SchemaVersion.html" title="interface in org.apache.axis.schema">SchemaVersion</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getSchemaVersion()">getSchemaVersion</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the XML schema version information.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getService()">getService</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the <code>SOAPService</code> used to handle services in this
 context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/session/Session.html" title="interface in org.apache.axis.session">Session</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getSession()">getSession</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the current session.</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/MessageContext.html#getSOAPActionURI()">getSOAPActionURI</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the soapAction URI.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/soap/SOAPConstants.html" title="interface in org.apache.axis.soap">SOAPConstants</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getSOAPConstants()">getSOAPConstants</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the <code>SOAPConstants</code> used by this message context.</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/MessageContext.html#getStrProp(java.lang.String)">getStrProp</A></B>(java.lang.String&nbsp;propName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a <code>String</code> property by name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getTargetService()">getTargetService</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the name of the targed service for this message.</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/MessageContext.html#getTimeout()">getTimeout</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get timeout from our MessageContext.</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/MessageContext.html#getTransportName()">getTransportName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The name of the transport for this context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getTypeMapping()">getTypeMapping</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the type mapping currently in scope for our encoding style.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/encoding/TypeMappingRegistry.html" title="interface in org.apache.axis.encoding">TypeMappingRegistry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#getTypeMappingRegistry()">getTypeMappingRegistry</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the currently in-scope type mapping registry.</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/MessageContext.html#getUsername()">getUsername</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the user name.</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/MessageContext.html#isClient()">isClient</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Let us know whether this is the client or the server.</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/MessageContext.html#isEncoded()">isEncoded</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates if the opration is encoded.</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/MessageContext.html#isHighFidelity()">isHighFidelity</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read the high fidelity property.</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/MessageContext.html#isPropertyTrue(java.lang.String)">isPropertyTrue</A></B>(java.lang.String&nbsp;propName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests to see if the named property is set in the 'bag', returning
 <code>false</code> if it is not present at all.</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/MessageContext.html#isPropertyTrue(java.lang.String, boolean)">isPropertyTrue</A></B>(java.lang.String&nbsp;propName,
               boolean&nbsp;defaultVal)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test if a property is set to something we consider to be true in the
 'bag'.</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/MessageContext.html#removeProperty(java.lang.String)">removeProperty</A></B>(java.lang.String&nbsp;propName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a property (name-value pair) from the
 <code>MessageContext</code>.</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/MessageContext.html#reset()">reset</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return this context to a clean state.</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/MessageContext.html#setClassLoader(java.lang.ClassLoader)">setClassLoader</A></B>(java.lang.ClassLoader&nbsp;cl)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set a new classloader.</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/MessageContext.html#setCurrentMessage(org.apache.axis.Message)">setCurrentMessage</A></B>(<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A>&nbsp;curMsg)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the current message.</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/MessageContext.html#setEncodingStyle(java.lang.String)">setEncodingStyle</A></B>(java.lang.String&nbsp;namespaceURI)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the encoding style to the URI passed in.</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/MessageContext.html#setHighFidelity(boolean)">setHighFidelity</A></B>(boolean&nbsp;highFidelity)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the high fidelity propert.</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/MessageContext.html#setMaintainSession(boolean)">setMaintainSession</A></B>(boolean&nbsp;yesno)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set whether we are maintaining session state.</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/MessageContext.html#setMessage(javax.xml.soap.SOAPMessage)">setMessage</A></B>(<A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A>&nbsp;message)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the SOAPMessage for this message context.</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/MessageContext.html#setOperation(org.apache.axis.description.OperationDesc)">setOperation</A></B>(<A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A>&nbsp;operation)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the current operation.</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/MessageContext.html#setPassword(java.lang.String)">setPassword</A></B>(java.lang.String&nbsp;password)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the password.</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/MessageContext.html#setPastPivot(boolean)">setPastPivot</A></B>(boolean&nbsp;pastPivot)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicate when we've passed the pivot.</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/MessageContext.html#setProperty(java.lang.String, java.lang.Object)">setProperty</A></B>(java.lang.String&nbsp;name,
            java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allows you to set a named property to the passed in value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/MessageContext.html#setPropertyParent(java.util.Hashtable)">setPropertyParent</A></B>(java.util.Hashtable&nbsp;parent)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the Hashtable that contains the default values for our
 properties.</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/MessageContext.html#setRequestMessage(org.apache.axis.Message)">setRequestMessage</A></B>(<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A>&nbsp;reqMsg)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the request message, and make sure that message is associated
 with this MessageContext.</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/MessageContext.html#setResponseMessage(org.apache.axis.Message)">setResponseMessage</A></B>(<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A>&nbsp;respMsg)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the response message, and make sure that message is associated
 with this MessageContext.</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/MessageContext.html#setRoles(java.lang.String[])">setRoles</A></B>(java.lang.String[]&nbsp;roles)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the SOAP actor roles associated with an executioni of
 <code>CodeHandlerChain</code> and its contained <code>Handler</code>
 instances.</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/MessageContext.html#setSchemaVersion(org.apache.axis.schema.SchemaVersion)">setSchemaVersion</A></B>(<A HREF="../../../org/apache/axis/schema/SchemaVersion.html" title="interface in org.apache.axis.schema">SchemaVersion</A>&nbsp;schemaVersion)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the XML schema version this message context will use.</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/MessageContext.html#setService(org.apache.axis.handlers.soap.SOAPService)">setService</A></B>(<A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A>&nbsp;sh)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the <code>SOAPService</code> used to handle services in this
 context.</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/MessageContext.html#setSession(org.apache.axis.session.Session)">setSession</A></B>(<A HREF="../../../org/apache/axis/session/Session.html" title="interface in org.apache.axis.session">Session</A>&nbsp;session)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the current session.</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/MessageContext.html#setSOAPActionURI(java.lang.String)">setSOAPActionURI</A></B>(java.lang.String&nbsp;SOAPActionURI)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the soapAction URI.</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/MessageContext.html#setSOAPConstants(org.apache.axis.soap.SOAPConstants)">setSOAPConstants</A></B>(<A HREF="../../../org/apache/axis/soap/SOAPConstants.html" title="interface in org.apache.axis.soap">SOAPConstants</A>&nbsp;soapConstants)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the <code>SOAPConstants</code> used by this message context.</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/MessageContext.html#setTargetService(java.lang.String)">setTargetService</A></B>(java.lang.String&nbsp;tServ)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the target service for this message.</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/MessageContext.html#setTimeout(int)">setTimeout</A></B>(int&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set timeout in our MessageContext.</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/MessageContext.html#setTransportName(java.lang.String)">setTransportName</A></B>(java.lang.String&nbsp;transportName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the transport name for this context.</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/MessageContext.html#setTypeMappingRegistry(org.apache.axis.encoding.TypeMappingRegistry)">setTypeMappingRegistry</A></B>(<A HREF="../../../org/apache/axis/encoding/TypeMappingRegistry.html" title="interface in org.apache.axis.encoding">TypeMappingRegistry</A>&nbsp;reg)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replace the engine's type mapping registry with a local one.</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/MessageContext.html#setUsername(java.lang.String)">setUsername</A></B>(java.lang.String&nbsp;username)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the username.</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/MessageContext.html#setUseSOAPAction(boolean)">setUseSOAPAction</A></B>(boolean&nbsp;useSOAPAction)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable or dissable the use of soap action information.</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/MessageContext.html#useSOAPAction()">useSOAPAction</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates wether the soap action URI is being used or not.</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, 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>The <code>Log</code> used for logging all messages.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="systemTempDir"><!-- --></A><H3>
systemTempDir</H3>
<PRE>
protected static java.lang.String <B>systemTempDir</B></PRE>
<DL>
<DD>Temporary directory to store attachments.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="ENGINE_HANDLER"><!-- --></A><H3>
ENGINE_HANDLER</H3>
<PRE>
public static final java.lang.String <B>ENGINE_HANDLER</B></PRE>
<DL>
<DD>Contains an instance of Handler, which is the
  ServiceContext and the entrypoint of this service.

  (if it has been so configured - will our deployment
   tool do this by default?  - todo by Jacek)
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.ENGINE_HANDLER">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="TRANS_URL"><!-- --></A><H3>
TRANS_URL</H3>
<PRE>
public static final java.lang.String <B>TRANS_URL</B></PRE>
<DL>
<DD>This String is the URL that the message came to.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.TRANS_URL">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="QUIT_REQUESTED"><!-- --></A><H3>
QUIT_REQUESTED</H3>
<PRE>
public static final java.lang.String <B>QUIT_REQUESTED</B></PRE>
<DL>
<DD>Has a quit been requested? Hackish... but useful... -- RobJ
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.QUIT_REQUESTED">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="AUTHUSER"><!-- --></A><H3>
AUTHUSER</H3>
<PRE>
public static final java.lang.String <B>AUTHUSER</B></PRE>
<DL>
<DD>Place to store an AuthenticatedUser.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.AUTHUSER">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="CALL"><!-- --></A><H3>
CALL</H3>
<PRE>
public static final java.lang.String <B>CALL</B></PRE>
<DL>
<DD>If on the client - this is the Call object.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.CALL">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="IS_MSG"><!-- --></A><H3>
IS_MSG</H3>
<PRE>
public static final java.lang.String <B>IS_MSG</B></PRE>
<DL>
<DD>Are we doing Msg vs RPC? - For Java Binding.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.IS_MSG">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="ATTACHMENTS_DIR"><!-- --></A><H3>
ATTACHMENTS_DIR</H3>
<PRE>
public static final java.lang.String <B>ATTACHMENTS_DIR</B></PRE>
<DL>
<DD>The directory where in coming attachments are created.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.ATTACHMENTS_DIR">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="ACCEPTMISSINGPARAMS"><!-- --></A><H3>
ACCEPTMISSINGPARAMS</H3>
<PRE>
public static final java.lang.String <B>ACCEPTMISSINGPARAMS</B></PRE>
<DL>
<DD>A boolean param, to control whether we accept missing parameters
 as nulls or refuse to acknowledge them.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.ACCEPTMISSINGPARAMS">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="WSDLGEN_INTFNAMESPACE"><!-- --></A><H3>
WSDLGEN_INTFNAMESPACE</H3>
<PRE>
public static final java.lang.String <B>WSDLGEN_INTFNAMESPACE</B></PRE>
<DL>
<DD>The value of the property is used by service WSDL generation (aka ?WSDL)
 For the service's interface namespace if not set TRANS_URL property is used.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.WSDLGEN_INTFNAMESPACE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="WSDLGEN_SERV_LOC_URL"><!-- --></A><H3>
WSDLGEN_SERV_LOC_URL</H3>
<PRE>
public static final java.lang.String <B>WSDLGEN_SERV_LOC_URL</B></PRE>
<DL>
<DD>The value of the property is used by service WSDL generation (aka ?WSDL).
 For the service's location if not set TRANS_URL property is used.
  (helps provide support through proxies.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.WSDLGEN_SERV_LOC_URL">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="HTTP_TRANSPORT_VERSION"><!-- --></A><H3>
HTTP_TRANSPORT_VERSION</H3>
<PRE>
public static final java.lang.String <B>HTTP_TRANSPORT_VERSION</B></PRE>
<DL>
<DD>The value of the property is used by service WSDL generation (aka ?WSDL).
  Set this property to request a certain level of HTTP.
  The values MUST use org.apache.axis.transport.http.HTTPConstants.HEADER_PROTOCOL_10
    for HTTP 1.0
  The values MUST use org.apache.axis.transport.http.HTTPConstants.HEADER_PROTOCOL_11
    for HTTP 1.1
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.HTTP_TRANSPORT_VERSION">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="SECURITY_PROVIDER"><!-- --></A><H3>
SECURITY_PROVIDER</H3>
<PRE>
public static final java.lang.String <B>SECURITY_PROVIDER</B></PRE>
<DL>
<DD>The security provider.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.MessageContext.SECURITY_PROVIDER">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="MessageContext(org.apache.axis.AxisEngine)"><!-- --></A><H3>
MessageContext</H3>
<PRE>
public <B>MessageContext</B>(<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A>&nbsp;engine)</PRE>
<DL>
<DD>Create a message context.
<P>
<DT><B>Parameters:</B><DD><CODE>engine</CODE> - the controlling axis engine. Null is actually accepted here,
 though passing a null engine in is strongly discouraged as many of the methods
 assume that it is in fact defined.</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="getOperation()"><!-- --></A><H3>
getOperation</H3>
<PRE>
public <A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A> <B>getOperation</B>()</PRE>
<DL>
<DD>The current operation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the current operation; may be <code>null</code></DL>
</DD>
</DL>
<HR>

<A NAME="setOperation(org.apache.axis.description.OperationDesc)"><!-- --></A><H3>
setOperation</H3>
<PRE>
public void <B>setOperation</B>(<A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A>&nbsp;operation)</PRE>
<DL>
<DD>Set the current operation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>operation</CODE> - the <code>Operation</code> this context is executing</DL>
</DD>
</DL>
<HR>

<A NAME="getPossibleOperationsByQName(javax.xml.namespace.QName)"><!-- --></A><H3>
getPossibleOperationsByQName</H3>
<PRE>
public <A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A>[] <B>getPossibleOperationsByQName</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                                             throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Returns a list of operation descriptors that could may
 possibly match a body containing an element of the given QName.
 For non-DOCUMENT, the list of operation descriptors that match
 the name is returned.  For DOCUMENT, all the operations that have
 qname as a parameter are returned
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - of the first element in the body
<DT><B>Returns:</B><DD>list of operation descriptions
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if the operation names could not be looked up</DL>
</DD>
</DL>
<HR>

<A NAME="getOperationByQName(javax.xml.namespace.QName)"><!-- --></A><H3>
getOperationByQName</H3>
<PRE>
public <A HREF="../../../org/apache/axis/description/OperationDesc.html" title="class in org.apache.axis.description">OperationDesc</A> <B>getOperationByQName</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                                  throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>get the first possible operation that could match a
 body containing an element of the given QName. Sets the currentOperation
 field in the process; if that field is already set then its value
 is returned instead
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - name of the message body
<DT><B>Returns:</B><DD>an operation or null
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentContext()"><!-- --></A><H3>
getCurrentContext</H3>
<PRE>
public static <A HREF="../../../org/apache/axis/MessageContext.html" title="class in org.apache.axis">MessageContext</A> <B>getCurrentContext</B>()</PRE>
<DL>
<DD>Get the active message context.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the current active message context</DL>
</DD>
</DL>
<HR>

<A NAME="finalize()"><!-- --></A><H3>
finalize</H3>
<PRE>
protected void <B>finalize</B>()</PRE>
<DL>
<DD>during finalization, the dispose() method is called.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><A HREF="../../../org/apache/axis/MessageContext.html#dispose()"><CODE>dispose()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="setTypeMappingRegistry(org.apache.axis.encoding.TypeMappingRegistry)"><!-- --></A><H3>
setTypeMappingRegistry</H3>
<PRE>
public void <B>setTypeMappingRegistry</B>(<A HREF="../../../org/apache/axis/encoding/TypeMappingRegistry.html" title="interface in org.apache.axis.encoding">TypeMappingRegistry</A>&nbsp;reg)</PRE>
<DL>
<DD>Replace the engine's type mapping registry with a local one. This will
 have no effect on any type mappings obtained before this call.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>reg</CODE> - the new <code>TypeMappingRegistry</code></DL>
</DD>
</DL>
<HR>

<A NAME="getTypeMappingRegistry()"><!-- --></A><H3>
getTypeMappingRegistry</H3>
<PRE>
public <A HREF="../../../org/apache/axis/encoding/TypeMappingRegistry.html" title="interface in org.apache.axis.encoding">TypeMappingRegistry</A> <B>getTypeMappingRegistry</B>()</PRE>
<DL>
<DD>Get the currently in-scope type mapping registry.

 By default, will return a reference to the AxisEngine's TMR until
 someone sets our local one (usually as a result of setting the
 serviceHandler).
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the type mapping registry to use for this request.</DL>
</DD>
</DL>
<HR>

<A NAME="getTypeMapping()"><!-- --></A><H3>
getTypeMapping</H3>
<PRE>
public <A HREF="../../../org/apache/axis/encoding/TypeMapping.html" title="interface in org.apache.axis.encoding">TypeMapping</A> <B>getTypeMapping</B>()</PRE>
<DL>
<DD>Return the type mapping currently in scope for our encoding style.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the type mapping</DL>
</DD>
</DL>
<HR>

<A NAME="getTransportName()"><!-- --></A><H3>
getTransportName</H3>
<PRE>
public java.lang.String <B>getTransportName</B>()</PRE>
<DL>
<DD>The name of the transport for this context.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the transport name</DL>
</DD>
</DL>
<HR>

<A NAME="setTransportName(java.lang.String)"><!-- --></A><H3>
setTransportName</H3>
<PRE>
public void <B>setTransportName</B>(java.lang.String&nbsp;transportName)</PRE>
<DL>
<DD>Set the transport name for this context.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>transportName</CODE> - the name of the transport</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPConstants()"><!-- --></A><H3>
getSOAPConstants</H3>
<PRE>
public <A HREF="../../../org/apache/axis/soap/SOAPConstants.html" title="interface in org.apache.axis.soap">SOAPConstants</A> <B>getSOAPConstants</B>()</PRE>
<DL>
<DD>Get the <code>SOAPConstants</code> used by this message context.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the soap constants</DL>
</DD>
</DL>
<HR>

<A NAME="setSOAPConstants(org.apache.axis.soap.SOAPConstants)"><!-- --></A><H3>
setSOAPConstants</H3>
<PRE>
public void <B>setSOAPConstants</B>(<A HREF="../../../org/apache/axis/soap/SOAPConstants.html" title="interface in org.apache.axis.soap">SOAPConstants</A>&nbsp;soapConstants)</PRE>
<DL>
<DD>Set the <code>SOAPConstants</code> used by this message context.
 This may also affect the encoding style.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>soapConstants</CODE> - the new soap constants to use</DL>
</DD>
</DL>
<HR>

<A NAME="getSchemaVersion()"><!-- --></A><H3>
getSchemaVersion</H3>
<PRE>
public <A HREF="../../../org/apache/axis/schema/SchemaVersion.html" title="interface in org.apache.axis.schema">SchemaVersion</A> <B>getSchemaVersion</B>()</PRE>
<DL>
<DD>Get the XML schema version information.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>SchemaVersion</code> in use</DL>
</DD>
</DL>
<HR>

<A NAME="setSchemaVersion(org.apache.axis.schema.SchemaVersion)"><!-- --></A><H3>
setSchemaVersion</H3>
<PRE>
public void <B>setSchemaVersion</B>(<A HREF="../../../org/apache/axis/schema/SchemaVersion.html" title="interface in org.apache.axis.schema">SchemaVersion</A>&nbsp;schemaVersion)</PRE>
<DL>
<DD>Set the XML schema version this message context will use.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>schemaVersion</CODE> - the new <code>SchemaVersion</code></DL>
</DD>
</DL>
<HR>

<A NAME="getSession()"><!-- --></A><H3>
getSession</H3>
<PRE>
public <A HREF="../../../org/apache/axis/session/Session.html" title="interface in org.apache.axis.session">Session</A> <B>getSession</B>()</PRE>
<DL>
<DD>Get the current session.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>Session</code> this message context is within</DL>
</DD>
</DL>
<HR>

<A NAME="setSession(org.apache.axis.session.Session)"><!-- --></A><H3>
setSession</H3>
<PRE>
public void <B>setSession</B>(<A HREF="../../../org/apache/axis/session/Session.html" title="interface in org.apache.axis.session">Session</A>&nbsp;session)</PRE>
<DL>
<DD>Set the current session.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>session</CODE> - the new <code>Session</code></DL>
</DD>
</DL>
<HR>

<A NAME="isEncoded()"><!-- --></A><H3>
isEncoded</H3>
<PRE>
public boolean <B>isEncoded</B>()</PRE>
<DL>
<DD>Indicates if the opration is encoded.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if it is encoded, <code>false</code> otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setMaintainSession(boolean)"><!-- --></A><H3>
setMaintainSession</H3>
<PRE>
public void <B>setMaintainSession</B>(boolean&nbsp;yesno)</PRE>
<DL>
<DD>Set whether we are maintaining session state.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>yesno</CODE> - flag to set to <code>true</code> to maintain sessions</DL>
</DD>
</DL>
<HR>

<A NAME="getMaintainSession()"><!-- --></A><H3>
getMaintainSession</H3>
<PRE>
public boolean <B>getMaintainSession</B>()</PRE>
<DL>
<DD>Discover if we are maintaining session state.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if we are maintaining state, <code>false</code>
              otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="getRequestMessage()"><!-- --></A><H3>
getRequestMessage</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A> <B>getRequestMessage</B>()</PRE>
<DL>
<DD>Get the request message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the request message (may be null).</DL>
</DD>
</DL>
<HR>

<A NAME="setRequestMessage(org.apache.axis.Message)"><!-- --></A><H3>
setRequestMessage</H3>
<PRE>
public void <B>setRequestMessage</B>(<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A>&nbsp;reqMsg)</PRE>
<DL>
<DD>Set the request message, and make sure that message is associated
 with this MessageContext.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>reqMsg</CODE> - the new request Message.</DL>
</DD>
</DL>
<HR>

<A NAME="getResponseMessage()"><!-- --></A><H3>
getResponseMessage</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A> <B>getResponseMessage</B>()</PRE>
<DL>
<DD>Get the response message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the response message (may be null).</DL>
</DD>
</DL>
<HR>

<A NAME="setResponseMessage(org.apache.axis.Message)"><!-- --></A><H3>
setResponseMessage</H3>
<PRE>
public void <B>setResponseMessage</B>(<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A>&nbsp;respMsg)</PRE>
<DL>
<DD>Set the response message, and make sure that message is associated
 with this MessageContext.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>respMsg</CODE> - the new response Message.</DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentMessage()"><!-- --></A><H3>
getCurrentMessage</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A> <B>getCurrentMessage</B>()</PRE>
<DL>
<DD>Return the current (i.e. request before the pivot, response after)
 message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the current <code>Message</code></DL>
</DD>
</DL>
<HR>

<A NAME="getMessage()"><!-- --></A><H3>
getMessage</H3>
<PRE>
public <A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A> <B>getMessage</B>()</PRE>
<DL>
<DD>Gets the SOAPMessage from this message context.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html#getMessage()">getMessage</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html" title="interface in javax.xml.rpc.handler.soap">SOAPMessageContext</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>SOAPMessage</code>, <code>null</code> if no request
          <code>SOAPMessage</code> is present in this
          <code>SOAPMessageContext</code></DL>
</DD>
</DL>
<HR>

<A NAME="setCurrentMessage(org.apache.axis.Message)"><!-- --></A><H3>
setCurrentMessage</H3>
<PRE>
public void <B>setCurrentMessage</B>(<A HREF="../../../org/apache/axis/Message.html" title="class in org.apache.axis">Message</A>&nbsp;curMsg)</PRE>
<DL>
<DD>Set the current message. This will set the request before the pivot,
 and the response afterwards, as guaged by the passedPivod property.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>curMsg</CODE> - the <code>Message</code> to assign</DL>
</DD>
</DL>
<HR>

<A NAME="setMessage(javax.xml.soap.SOAPMessage)"><!-- --></A><H3>
setMessage</H3>
<PRE>
public void <B>setMessage</B>(<A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A>&nbsp;message)</PRE>
<DL>
<DD>Sets the SOAPMessage for this message context.
 This is equivalent to casting <code>message</code> to
 <code>Message</code> and then passing it on to
 <code>setCurrentMessage()</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html#setMessage(javax.xml.soap.SOAPMessage)">setMessage</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html" title="interface in javax.xml.rpc.handler.soap">SOAPMessageContext</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - the <code>SOAPMessage</code> this context is for</DL>
</DD>
</DL>
<HR>

<A NAME="getPastPivot()"><!-- --></A><H3>
getPastPivot</H3>
<PRE>
public boolean <B>getPastPivot</B>()</PRE>
<DL>
<DD>Determine when we've passed the pivot.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if we have, <code>false</code> otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setPastPivot(boolean)"><!-- --></A><H3>
setPastPivot</H3>
<PRE>
public void <B>setPastPivot</B>(boolean&nbsp;pastPivot)</PRE>
<DL>
<DD>Indicate when we've passed the pivot.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pastPivot</CODE> - true if we are past the pivot point, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setTimeout(int)"><!-- --></A><H3>
setTimeout</H3>
<PRE>
public void <B>setTimeout</B>(int&nbsp;value)</PRE>
<DL>
<DD>Set timeout in our MessageContext.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the maximum amount of time, in milliseconds</DL>
</DD>
</DL>
<HR>

<A NAME="getTimeout()"><!-- --></A><H3>
getTimeout</H3>
<PRE>
public int <B>getTimeout</B>()</PRE>
<DL>
<DD>Get timeout from our MessageContext.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>value the maximum amount of time, in milliseconds</DL>
</DD>
</DL>
<HR>

<A NAME="getClassLoader()"><!-- --></A><H3>
getClassLoader</H3>
<PRE>
public java.lang.ClassLoader <B>getClassLoader</B>()</PRE>
<DL>
<DD>Get the classloader, implicitly binding to the thread context
 classloader if an override has not been supplied.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the class loader</DL>
</DD>
</DL>
<HR>

<A NAME="setClassLoader(java.lang.ClassLoader)"><!-- --></A><H3>
setClassLoader</H3>
<PRE>
public void <B>setClassLoader</B>(java.lang.ClassLoader&nbsp;cl)</PRE>
<DL>
<DD>Set a new classloader. Setting to null will result in getClassLoader()
 binding back to the thread context class loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>cl</CODE> - the new <code>ClassLoader</code> or <code>null</code></DL>
</DD>
</DL>
<HR>

<A NAME="getTargetService()"><!-- --></A><H3>
getTargetService</H3>
<PRE>
public java.lang.String <B>getTargetService</B>()</PRE>
<DL>
<DD>Get the name of the targed service for this message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the target service</DL>
</DD>
</DL>
<HR>

<A NAME="getAxisEngine()"><!-- --></A><H3>
getAxisEngine</H3>
<PRE>
public <A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A> <B>getAxisEngine</B>()</PRE>
<DL>
<DD>Get the axis engine. This will be <code>null</code> if the message was
 created outside an engine
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the current axis engine</DL>
</DD>
</DL>
<HR>

<A NAME="setTargetService(java.lang.String)"><!-- --></A><H3>
setTargetService</H3>
<PRE>
public void <B>setTargetService</B>(java.lang.String&nbsp;tServ)
                      throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Set the target service for this message.
 <p>
 This looks up the named service in the registry, and has
 the side effect of setting our TypeMappingRegistry to the
 service's.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>tServ</CODE> - the name of the target service
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if anything goes wrong in resolving or setting the
              service</DL>
</DD>
</DL>
<HR>

<A NAME="getService()"><!-- --></A><H3>
getService</H3>
<PRE>
public <A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A> <B>getService</B>()</PRE>
<DL>
<DD>Get the <code>SOAPService</code> used to handle services in this
 context.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the service handler</DL>
</DD>
</DL>
<HR>

<A NAME="setService(org.apache.axis.handlers.soap.SOAPService)"><!-- --></A><H3>
setService</H3>
<PRE>
public void <B>setService</B>(<A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A>&nbsp;sh)
                throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Set the <code>SOAPService</code> used to handle services in this
 context. This method configures a wide range of
 <code>MessageContext</code> properties to suit the handler.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sh</CODE> - the new service handler
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if the service could not be set</DL>
</DD>
</DL>
<HR>

<A NAME="isClient()"><!-- --></A><H3>
isClient</H3>
<PRE>
public boolean <B>isClient</B>()</PRE>
<DL>
<DD>Let us know whether this is the client or the server.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if we are a client</DL>
</DD>
</DL>
<HR>

<A NAME="getStrProp(java.lang.String)"><!-- --></A><H3>
getStrProp</H3>
<PRE>
public java.lang.String <B>getStrProp</B>(java.lang.String&nbsp;propName)</PRE>
<DL>
<DD>Get a <code>String</code> property by name.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>propName</CODE> - the name of the property to fetch
<DT><B>Returns:</B><DD>the value of the named property
<DT><B>Throws:</B>
<DD><CODE>java.lang.ClassCastException</CODE> - if the property named does not have a
              <code>String</code> value</DL>
</DD>
</DL>
<HR>

<A NAME="isPropertyTrue(java.lang.String)"><!-- --></A><H3>
isPropertyTrue</H3>
<PRE>
public boolean <B>isPropertyTrue</B>(java.lang.String&nbsp;propName)</PRE>
<DL>
<DD>Tests to see if the named property is set in the 'bag', returning
 <code>false</code> if it is not present at all.
 This is equivalent to <code>isPropertyTrue(propName, false)</code>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>propName</CODE> - the name of the property to check
<DT><B>Returns:</B><DD>true or false, depending on the value of the property</DL>
</DD>
</DL>
<HR>

<A NAME="isPropertyTrue(java.lang.String, boolean)"><!-- --></A><H3>
isPropertyTrue</H3>
<PRE>
public boolean <B>isPropertyTrue</B>(java.lang.String&nbsp;propName,
                              boolean&nbsp;defaultVal)</PRE>
<DL>
<DD>Test if a property is set to something we consider to be true in the
 'bag'.
 <ul>
 <li>If not there then <code>defaultVal</code> is returned.</li>
 <li>If there, then...<ul>
   <li>if its a <code>Boolean</code>, we'll return booleanValue()</li>
   <li>if its an <code>Integer</code>,  we'll return <code>false</code>
   if its <code>0</code> else <code>true</code></li>
   <li>if its a <code>String</code> we'll return <code>false</code> if its
   <code>"false"</code>" or <code>"0"</code> else <code>true</code></li>
   <li>All other types return <code>true</code></li>
 </ul></li>
 </ul>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>propName</CODE> - the name of the property to check<DD><CODE>defaultVal</CODE> - the default value
<DT><B>Returns:</B><DD>true or false, depending on the value of the property</DL>
</DD>
</DL>
<HR>

<A NAME="setProperty(java.lang.String, java.lang.Object)"><!-- --></A><H3>
setProperty</H3>
<PRE>
public void <B>setProperty</B>(java.lang.String&nbsp;name,
                        java.lang.Object&nbsp;value)</PRE>
<DL>
<DD>Allows you to set a named property to the passed in value.
 There are a few known properties (like username, password, etc)
 that are variables in Call.  The rest of the properties are
 stored in a Hashtable.  These common properties should be
 accessed via the accessors for speed/type safety, but they may
 still be obtained via this method.  It's up to one of the
 Handlers (or the Axis engine itself) to go looking for
 one of them.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html#setProperty(java.lang.String, java.lang.Object)">setProperty</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - Name of the property<DD><CODE>value</CODE> - Value of the property</DL>
</DD>
</DL>
<HR>

<A NAME="containsProperty(java.lang.String)"><!-- --></A><H3>
containsProperty</H3>
<PRE>
public boolean <B>containsProperty</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Returns true if the MessageContext contains a property with the specified name.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html#containsProperty(java.lang.String)">containsProperty</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - Name of the property whose presense is to be tested
<DT><B>Returns:</B><DD>Returns true if the MessageContext contains the
          property; otherwise false</DL>
</DD>
</DL>
<HR>

<A NAME="getPropertyNames()"><!-- --></A><H3>
getPropertyNames</H3>
<PRE>
public java.util.Iterator <B>getPropertyNames</B>()</PRE>
<DL>
<DD>Returns an <code>Iterator</code> view of the names of the properties in
 this <code>MessageContext</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html#getPropertyNames()">getPropertyNames</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an <code>Iterator</code> over all property names</DL>
</DD>
</DL>
<HR>

<A NAME="getAllPropertyNames()"><!-- --></A><H3>
getAllPropertyNames</H3>
<PRE>
public java.util.Iterator <B>getAllPropertyNames</B>()</PRE>
<DL>
<DD>Returns an Iterator view of the names of the properties 
  in this MessageContext and any parents of the LockableHashtable
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Iterator for the property names</DL>
</DD>
</DL>
<HR>

<A NAME="getProperty(java.lang.String)"><!-- --></A><H3>
getProperty</H3>
<PRE>
public java.lang.Object <B>getProperty</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Returns the value associated with the named property - or null if not
 defined/set.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html#getProperty(java.lang.String)">getProperty</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the property name
<DT><B>Returns:</B><DD>Object value of the property - or null</DL>
</DD>
</DL>
<HR>

<A NAME="setPropertyParent(java.util.Hashtable)"><!-- --></A><H3>
setPropertyParent</H3>
<PRE>
public void <B>setPropertyParent</B>(java.util.Hashtable&nbsp;parent)</PRE>
<DL>
<DD>Set the Hashtable that contains the default values for our
 properties.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parent</CODE> - </DL>
</DD>
</DL>
<HR>

<A NAME="setUsername(java.lang.String)"><!-- --></A><H3>
setUsername</H3>
<PRE>
public void <B>setUsername</B>(java.lang.String&nbsp;username)</PRE>
<DL>
<DD>Set the username.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>username</CODE> - the new user name</DL>
</DD>
</DL>
<HR>

<A NAME="getUsername()"><!-- --></A><H3>
getUsername</H3>
<PRE>
public java.lang.String <B>getUsername</B>()</PRE>
<DL>
<DD>Get the user name.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the user name as a <code>String</code></DL>
</DD>
</DL>
<HR>

<A NAME="setPassword(java.lang.String)"><!-- --></A><H3>
setPassword</H3>
<PRE>
public void <B>setPassword</B>(java.lang.String&nbsp;password)</PRE>
<DL>
<DD>Set the password.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>password</CODE> - a <code>String</code> containing the new password</DL>
</DD>
</DL>
<HR>

<A NAME="getPassword()"><!-- --></A><H3>
getPassword</H3>
<PRE>
public java.lang.String <B>getPassword</B>()</PRE>
<DL>
<DD>Get the password.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the current password <code>String</code></DL>
</DD>
</DL>
<HR>

<A NAME="getOperationStyle()"><!-- --></A><H3>
getOperationStyle</H3>
<PRE>
public <A HREF="../../../org/apache/axis/constants/Style.html" title="class in org.apache.axis.constants">Style</A> <B>getOperationStyle</B>()</PRE>
<DL>
<DD>Get the operation style. This is either the style of the current
 operation or if that is not set, the style of the service handler, or
 if that is not set, <code>Style.RPC</code>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>Style</code> of this message</DL>
</DD>
</DL>
<HR>

<A NAME="getOperationUse()"><!-- --></A><H3>
getOperationUse</H3>
<PRE>
public <A HREF="../../../org/apache/axis/constants/Use.html" title="class in org.apache.axis.constants">Use</A> <B>getOperationUse</B>()</PRE>
<DL>
<DD>Get the operation use.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the operation <code>Use</code></DL>
</DD>
</DL>
<HR>

<A NAME="setUseSOAPAction(boolean)"><!-- --></A><H3>
setUseSOAPAction</H3>
<PRE>
public void <B>setUseSOAPAction</B>(boolean&nbsp;useSOAPAction)</PRE>
<DL>
<DD>Enable or dissable the use of soap action information. When enabled,
 the message context will attempt to use the soap action URI
 information during binding of soap messages to service methods. When
 dissabled, it will make no such attempt.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>useSOAPAction</CODE> - <code>true</code> if soap action URI information
              should be used, <code>false</code> otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="useSOAPAction()"><!-- --></A><H3>
useSOAPAction</H3>
<PRE>
public boolean <B>useSOAPAction</B>()</PRE>
<DL>
<DD>Indicates wether the soap action URI is being used or not.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if it is, <code>false</code> otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setSOAPActionURI(java.lang.String)"><!-- --></A><H3>
setSOAPActionURI</H3>
<PRE>
public void <B>setSOAPActionURI</B>(java.lang.String&nbsp;SOAPActionURI)
                      throws java.lang.IllegalArgumentException</PRE>
<DL>
<DD>Set the soapAction URI.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>SOAPActionURI</CODE> - a <code>String</code> giving the new soap action
              URI
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if the URI is not liked</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPActionURI()"><!-- --></A><H3>
getSOAPActionURI</H3>
<PRE>
public java.lang.String <B>getSOAPActionURI</B>()</PRE>
<DL>
<DD>Get the soapAction URI.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the URI of this soap action</DL>
</DD>
</DL>
<HR>

<A NAME="setEncodingStyle(java.lang.String)"><!-- --></A><H3>
setEncodingStyle</H3>
<PRE>
public void <B>setEncodingStyle</B>(java.lang.String&nbsp;namespaceURI)</PRE>
<DL>
<DD>Sets the encoding style to the URI passed in.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespaceURI</CODE> - URI of the encoding to use.</DL>
</DD>
</DL>
<HR>

<A NAME="getEncodingStyle()"><!-- --></A><H3>
getEncodingStyle</H3>
<PRE>
public java.lang.String <B>getEncodingStyle</B>()</PRE>
<DL>
<DD>Returns the encoding style as a URI that should be used for the SOAP
 message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>String URI of the encoding style to use</DL>
</DD>
</DL>
<HR>

<A NAME="removeProperty(java.lang.String)"><!-- --></A><H3>
removeProperty</H3>
<PRE>
public void <B>removeProperty</B>(java.lang.String&nbsp;propName)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></B></DD>
<DD>Removes a property (name-value pair) from the
 <code>MessageContext</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html#removeProperty(java.lang.String)">removeProperty</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>propName</CODE> - the name of the property to be removed</DL>
</DD>
</DL>
<HR>

<A NAME="reset()"><!-- --></A><H3>
reset</H3>
<PRE>
public void <B>reset</B>()</PRE>
<DL>
<DD>Return this context to a clean state.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isHighFidelity()"><!-- --></A><H3>
isHighFidelity</H3>
<PRE>
public boolean <B>isHighFidelity</B>()</PRE>
<DL>
<DD>Read the high fidelity property.
 <p>
 Some behavior may be apropreate for high fidelity contexts that is not
 relevant for low fidelity ones or vica-versa.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if the context is high fidelity,
              <code>false</code> otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setHighFidelity(boolean)"><!-- --></A><H3>
setHighFidelity</H3>
<PRE>
public void <B>setHighFidelity</B>(boolean&nbsp;highFidelity)</PRE>
<DL>
<DD>Set the high fidelity propert.
 <p>
 Users of the context may be changing what they do based upon this flag.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>highFidelity</CODE> - the new value of the highFidelity property</DL>
</DD>
</DL>
<HR>

<A NAME="getRoles()"><!-- --></A><H3>
getRoles</H3>
<PRE>
public java.lang.String[] <B>getRoles</B>()</PRE>
<DL>
<DD>Gets the SOAP actor roles associated with an execution of the
 <code>HandlerChain</code> and its contained <code>Handler</code>
 instances.
 <p>
 <i>Not (yet) implemented method in the SOAPMessageContext interface</i>.
 <p>
 <b>Note:</b> SOAP actor roles apply to the SOAP node and are managed
 using <code>HandlerChain.setRoles()</code> and
 <code>HandlerChain.getRoles()</code>. Handler instances in the
 <code>HandlerChain</code> use this information about the SOAP actor roles
 to process the SOAP header blocks. Note that the SOAP actor roles are
 invariant during the processing of SOAP message through the
 <code>HandlerChain</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html#getRoles()">getRoles</A></CODE> in interface <CODE><A HREF="../../../javax/xml/rpc/handler/soap/SOAPMessageContext.html" title="interface in javax.xml.rpc.handler.soap">SOAPMessageContext</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an array of URIs for SOAP actor roles<DT><B>See Also:</B><DD><A HREF="../../../javax/xml/rpc/handler/HandlerChain.html#setRoles(java.lang.String[])"><CODE>HandlerChain.setRoles(java.lang.String[])</CODE></A>, 
<A HREF="../../../javax/xml/rpc/handler/HandlerChain.html#getRoles()"><CODE>HandlerChain.getRoles()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="setRoles(java.lang.String[])"><!-- --></A><H3>
setRoles</H3>
<PRE>
public void <B>setRoles</B>(java.lang.String[]&nbsp;roles)</PRE>
<DL>
<DD>Set the SOAP actor roles associated with an executioni of
 <code>CodeHandlerChain</code> and its contained <code>Handler</code>
 instances.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>roles</CODE> - an array of <code>String</code> instances, each representing
              the URI for a SOAP actor role</DL>
</DD>
</DL>
<HR>

<A NAME="dispose()"><!-- --></A><H3>
dispose</H3>
<PRE>
public void <B>dispose</B>()</PRE>
<DL>
<DD>if a message (or subclass) has any disposal needs, this method
 is where it goes. Subclasses *must* call super.dispose(), and
 be prepared to be called from the finalizer as well as earlier
<P>
<DD><DL>
</DL>
</DD>
<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/MessageContext.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/Message.html" title="class in org.apache.axis"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/axis/SimpleChain.html" title="class in org.apache.axis"><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="MessageContext.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>
