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

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

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

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

<P>
A complete SOAP (and/or XML-RPC, eventually) message.
 Includes both the root part (as a SOAPPart), and zero or
 more MIME attachments (as AttachmentParts).
 <p>
 Eventually should be refactored to generalize SOAPPart
 for multiple protocols (XML-RPC?).
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Rob Jellinghaus (robj@unrealities.com), Doug Davis (dug@us.ibm.com), Glen Daniels (gdaniels@allaire.com), Rick Rineholt, Heejune Ahn (cityboy@tmax.co.kr)</DD>
<DT><B>See Also:</B><DD><A HREF="../../../serialized-form.html#org.apache.axis.Message">Serialized Form</A></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/Message.html#CONTENT_TYPE_MTOM">CONTENT_TYPE_MTOM</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content Type for MTOM/XOP</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/Message.html#DEFAULT_ATTACHMNET_IMPL">DEFAULT_ATTACHMNET_IMPL</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default Attachments Implementation class.</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/Message.html#log">log</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The <code>Log</code> that this class uses 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/Message.html#MIME_APPLICATION_DIME">MIME_APPLICATION_DIME</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DIME parts defined for 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/Message.html#MIME_MULTIPART_RELATED">MIME_MULTIPART_RELATED</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MIME parts defined for 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/Message.html#MIME_UNKNOWN">MIME_UNKNOWN</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Look at the input stream to find the headers to decide the mime type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#REQUEST">REQUEST</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Message is a request.</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/Message.html#RESPONSE">RESPONSE</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Message is a a response.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_javax.xml.soap.SOAPMessage"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Fields inherited from class javax.xml.soap.<A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#CHARACTER_SET_ENCODING">CHARACTER_SET_ENCODING</A>, <A HREF="../../../javax/xml/soap/SOAPMessage.html#WRITE_XML_DECLARATION">WRITE_XML_DECLARATION</A></CODE></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/Message.html#Message(java.lang.Object)">Message</A></B>(java.lang.Object&nbsp;initialContents)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#Message(java.lang.Object, boolean)">Message</A></B>(java.lang.Object&nbsp;initialContents,
        boolean&nbsp;bodyInStream)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#Message(java.lang.Object, boolean, javax.xml.soap.MimeHeaders)">Message</A></B>(java.lang.Object&nbsp;initialContents,
        boolean&nbsp;bodyInStream,
        <A HREF="../../../javax/xml/soap/MimeHeaders.html" title="class in javax.xml.soap">MimeHeaders</A>&nbsp;headers)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#Message(java.lang.Object, boolean, java.lang.String, java.lang.String)">Message</A></B>(java.lang.Object&nbsp;initialContents,
        boolean&nbsp;bodyInStream,
        java.lang.String&nbsp;contentType,
        java.lang.String&nbsp;contentLocation)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#Message(java.lang.Object, org.apache.axis.message.MimeHeaders)">Message</A></B>(java.lang.Object&nbsp;initialContents,
        <A HREF="../../../org/apache/axis/message/MimeHeaders.html" title="class in org.apache.axis.message">MimeHeaders</A>&nbsp;headers)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.</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;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#addAttachmentPart(javax.xml.soap.AttachmentPart)">addAttachmentPart</A></B>(<A HREF="../../../javax/xml/soap/AttachmentPart.html" title="class in javax.xml.soap">AttachmentPart</A>&nbsp;attachmentpart)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the given <CODE>AttachmentPart</CODE> object to this
 <CODE>SOAPMessage</CODE> object.</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/Message.html#countAttachments()">countAttachments</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a count of the number of attachments in this
 message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/soap/AttachmentPart.html" title="class in javax.xml.soap">AttachmentPart</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#createAttachmentPart()">createAttachmentPart</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new empty <CODE>AttachmentPart</CODE> object.</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/Message.html#dispose()">dispose</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dispose of 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/Message.html#getAttachmentImplClassName()">getAttachmentImplClassName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of the class prividing Attachment Implementation.</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/Message.html#getAttachments()">getAttachments</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves all the <CODE>AttachmentPart</CODE> objects
 that are part of this <CODE>SOAPMessage</CODE> object.</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/Message.html#getAttachments(javax.xml.soap.MimeHeaders)">getAttachments</A></B>(<A HREF="../../../javax/xml/soap/MimeHeaders.html" title="class in javax.xml.soap">MimeHeaders</A>&nbsp;headers)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves all the <CODE>AttachmentPart</CODE> objects
 that have header entries that match the specified headers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getAttachmentsImpl()">getAttachmentsImpl</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the Attachments of this 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/Message.html#getContentDescription()">getContentDescription</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves a description of this <CODE>SOAPMessage</CODE>
 object's content.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;long</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getContentLength()">getContentLength</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the content length, including both soap and any attachments.</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/Message.html#getContentType(org.apache.axis.soap.SOAPConstants)">getContentType</A></B>(<A HREF="../../../org/apache/axis/soap/SOAPConstants.html" title="interface in org.apache.axis.soap">SOAPConstants</A>&nbsp;sc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the content type of the attachments.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&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/Message.html#getMessageContext()">getMessageContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the context associated with this 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/Message.html#getMessageType()">getMessageType</A></B>()</CODE>

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

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all the transport-specific MIME headers for this
 <CODE>SOAPMessage</CODE> object in a transport-independent
 fashion.</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/Message.html#getProperty(java.lang.String)">getProperty</A></B>(java.lang.String&nbsp;property)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves value of the specified property.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/soap/SOAPBody.html" title="interface in javax.xml.soap">SOAPBody</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getSOAPBody()">getSOAPBody</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the SOAP Body contained in this <code>SOAPMessage</code> object.</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/SOAPEnvelope.html" title="class in org.apache.axis.message">SOAPEnvelope</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getSOAPEnvelope()">getSOAPEnvelope</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get this message's SOAPPart as a SOAPEnvelope.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/soap/SOAPHeader.html" title="interface in javax.xml.soap">SOAPHeader</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getSOAPHeader()">getSOAPHeader</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the SOAP Header contained in this <code>SOAPMessage</code> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/soap/SOAPPart.html" title="class in javax.xml.soap">SOAPPart</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getSOAPPart()">getSOAPPart</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get this message's SOAPPart.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;byte[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/Message.html#getSOAPPartAsBytes()">getSOAPPartAsBytes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a byte array representation of this message's SOAPPart.</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/Message.html#getSOAPPartAsString()">getSOAPPartAsString</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a string representation of this message's SOAPPart.</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/Message.html#removeAllAttachments()">removeAllAttachments</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes all <CODE>AttachmentPart</CODE> objects that have
   been added to this <CODE>SOAPMessage</CODE> object.</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/Message.html#saveChanges()">saveChanges</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates this <CODE>SOAPMessage</CODE> object with all the
   changes that have been made to it.</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/Message.html#saveRequired()">saveRequired</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates whether this <CODE>SOAPMessage</CODE> object
 has had the method <CODE>saveChanges</CODE> called on
 it.</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/Message.html#setContentDescription(java.lang.String)">setContentDescription</A></B>(java.lang.String&nbsp;description)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the description of this <CODE>SOAPMessage</CODE>
 object's content with the given description.</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/Message.html#setMessageContext(org.apache.axis.MessageContext)">setMessageContext</A></B>(<A HREF="../../../org/apache/axis/MessageContext.html" title="class in org.apache.axis">MessageContext</A>&nbsp;msgContext)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the context associated with 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/Message.html#setMessageType(java.lang.String)">setMessageType</A></B>(java.lang.String&nbsp;messageType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the message 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/Message.html#setProperty(java.lang.String, java.lang.Object)">setProperty</A></B>(java.lang.String&nbsp;property,
            java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Associates the specified value with the specified property.</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/Message.html#writeTo(java.io.OutputStream)">writeTo</A></B>(java.io.OutputStream&nbsp;os)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes this <CODE>SOAPMessage</CODE> object to the given
   output stream.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_javax.xml.soap.SOAPMessage"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class javax.xml.soap.<A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#createAttachmentPart(javax.activation.DataHandler)">createAttachmentPart</A>, <A HREF="../../../javax/xml/soap/SOAPMessage.html#createAttachmentPart(java.lang.Object, java.lang.String)">createAttachmentPart</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

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

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

<A NAME="log"><!-- --></A><H3>
log</H3>
<PRE>
protected static org.apache.commons.logging.Log <B>log</B></PRE>
<DL>
<DD>The <code>Log</code> that this class uses for logging all messages.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="REQUEST"><!-- --></A><H3>
REQUEST</H3>
<PRE>
public static final java.lang.String <B>REQUEST</B></PRE>
<DL>
<DD>Message is a request.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.REQUEST">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="RESPONSE"><!-- --></A><H3>
RESPONSE</H3>
<PRE>
public static final java.lang.String <B>RESPONSE</B></PRE>
<DL>
<DD>Message is a a response.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.RESPONSE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MIME_MULTIPART_RELATED"><!-- --></A><H3>
MIME_MULTIPART_RELATED</H3>
<PRE>
public static final java.lang.String <B>MIME_MULTIPART_RELATED</B></PRE>
<DL>
<DD>MIME parts defined for messages.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.MIME_MULTIPART_RELATED">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MIME_APPLICATION_DIME"><!-- --></A><H3>
MIME_APPLICATION_DIME</H3>
<PRE>
public static final java.lang.String <B>MIME_APPLICATION_DIME</B></PRE>
<DL>
<DD>DIME parts defined for messages.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.MIME_APPLICATION_DIME">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="CONTENT_TYPE_MTOM"><!-- --></A><H3>
CONTENT_TYPE_MTOM</H3>
<PRE>
public static final java.lang.String <B>CONTENT_TYPE_MTOM</B></PRE>
<DL>
<DD>Content Type for MTOM/XOP
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.CONTENT_TYPE_MTOM">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="DEFAULT_ATTACHMNET_IMPL"><!-- --></A><H3>
DEFAULT_ATTACHMNET_IMPL</H3>
<PRE>
public static final java.lang.String <B>DEFAULT_ATTACHMNET_IMPL</B></PRE>
<DL>
<DD>Default Attachments Implementation class.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.DEFAULT_ATTACHMNET_IMPL">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MIME_UNKNOWN"><!-- --></A><H3>
MIME_UNKNOWN</H3>
<PRE>
public static final java.lang.String <B>MIME_UNKNOWN</B></PRE>
<DL>
<DD>Look at the input stream to find the headers to decide the mime type.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.Message.MIME_UNKNOWN">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="Message(java.lang.Object, boolean)"><!-- --></A><H3>
Message</H3>
<PRE>
public <B>Message</B>(java.lang.Object&nbsp;initialContents,
               boolean&nbsp;bodyInStream)</PRE>
<DL>
<DD>Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.
 <p>
 Eventually, genericize this to
 return the RootPart instead, which will have some kind of
 EnvelopeFactory to enable support for things other than SOAP.
 But that all will come later, with lots of additional refactoring.
<P>
<DT><B>Parameters:</B><DD><CODE>initialContents</CODE> - may be String, byte[], InputStream, SOAPEnvelope,
                        or AxisFault.<DD><CODE>bodyInStream</CODE> - is true if initialContents is an InputStream
                     containing just the SOAP body (no SOAP-ENV).</DL>
<HR>

<A NAME="Message(java.lang.Object, boolean, javax.xml.soap.MimeHeaders)"><!-- --></A><H3>
Message</H3>
<PRE>
public <B>Message</B>(java.lang.Object&nbsp;initialContents,
               boolean&nbsp;bodyInStream,
               <A HREF="../../../javax/xml/soap/MimeHeaders.html" title="class in javax.xml.soap">MimeHeaders</A>&nbsp;headers)</PRE>
<DL>
<DD>Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.
 <p>
 Eventually, genericize this to
 return the RootPart instead, which will have some kind of
 EnvelopeFactory to enable support for things other than SOAP.
 But that all will come later, with lots of additional refactoring.
<P>
<DT><B>Parameters:</B><DD><CODE>initialContents</CODE> - may be String, byte[], InputStream, SOAPEnvelope,
                        or AxisFault.<DD><CODE>bodyInStream</CODE> - is true if initialContents is an InputStream
                     containing just the SOAP body (no SOAP-ENV).<DD><CODE>headers</CODE> - Mime Headers.</DL>
<HR>

<A NAME="Message(java.lang.Object, org.apache.axis.message.MimeHeaders)"><!-- --></A><H3>
Message</H3>
<PRE>
public <B>Message</B>(java.lang.Object&nbsp;initialContents,
               <A HREF="../../../org/apache/axis/message/MimeHeaders.html" title="class in org.apache.axis.message">MimeHeaders</A>&nbsp;headers)</PRE>
<DL>
<DD>Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.
 <p>
 Eventually, genericize this to
 return the RootPart instead, which will have some kind of
 EnvelopeFactory to enable support for things other than SOAP.
 But that all will come later, with lots of additional refactoring.
<P>
<DT><B>Parameters:</B><DD><CODE>initialContents</CODE> - may be String, byte[], InputStream, SOAPEnvelope,
                        or AxisFault.<DD><CODE>headers</CODE> - Mime Headers.</DL>
<HR>

<A NAME="Message(java.lang.Object, boolean, java.lang.String, java.lang.String)"><!-- --></A><H3>
Message</H3>
<PRE>
public <B>Message</B>(java.lang.Object&nbsp;initialContents,
               boolean&nbsp;bodyInStream,
               java.lang.String&nbsp;contentType,
               java.lang.String&nbsp;contentLocation)</PRE>
<DL>
<DD>Construct a Message, using the provided initialContents as the
 contents of the Message's SOAPPart.
 <p>
 Eventually, genericize this to
 return the RootPart instead, which will have some kind of
 EnvelopeFactory to enable support for things other than SOAP.
 But that all will come later, with lots of additional refactoring.
<P>
<DT><B>Parameters:</B><DD><CODE>initialContents</CODE> - may be String, byte[], InputStream, SOAPEnvelope,
                        or AxisFault<DD><CODE>bodyInStream</CODE> - is true if initialContents is an InputStream
                     containing just the SOAP body (no SOAP-ENV)<DD><CODE>contentType</CODE> - this if the contentType has been already determined
                   (as in the case of servlets)<DD><CODE>contentLocation</CODE> - the location of the content</DL>
<HR>

<A NAME="Message(java.lang.Object)"><!-- --></A><H3>
Message</H3>
<PRE>
public <B>Message</B>(java.lang.Object&nbsp;initialContents)</PRE>
<DL>
<DD>Construct a Message.  An overload of Message(Object, boolean),
 defaulting bodyInStream to false.
<P>
<DT><B>Parameters:</B><DD><CODE>initialContents</CODE> - may be String, byte[], InputStream, SOAPEnvelope,
                        or AxisFault</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="getAttachmentImplClassName()"><!-- --></A><H3>
getAttachmentImplClassName</H3>
<PRE>
public static java.lang.String <B>getAttachmentImplClassName</B>()</PRE>
<DL>
<DD>Returns the name of the class prividing Attachment Implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

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

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

<DT><B>Returns:</B><DD>the message type <code>String</code></DL>
</DD>
</DL>
<HR>

<A NAME="setMessageType(java.lang.String)"><!-- --></A><H3>
setMessageType</H3>
<PRE>
public void <B>setMessageType</B>(java.lang.String&nbsp;messageType)</PRE>
<DL>
<DD>Set the message type.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>messageType</CODE> - the message type <code>String</code></DL>
</DD>
</DL>
<HR>

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

<DT><B>Returns:</B><DD>the message context for this message</DL>
</DD>
</DL>
<HR>

<A NAME="setMessageContext(org.apache.axis.MessageContext)"><!-- --></A><H3>
setMessageContext</H3>
<PRE>
public void <B>setMessageContext</B>(<A HREF="../../../org/apache/axis/MessageContext.html" title="class in org.apache.axis">MessageContext</A>&nbsp;msgContext)</PRE>
<DL>
<DD>Set the context associated with this message.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>msgContext</CODE> - the message context for this message</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPPart()"><!-- --></A><H3>
getSOAPPart</H3>
<PRE>
public <A HREF="../../../javax/xml/soap/SOAPPart.html" title="class in javax.xml.soap">SOAPPart</A> <B>getSOAPPart</B>()</PRE>
<DL>
<DD>Get this message's SOAPPart.
 <p>
 Eventually, this should be generalized beyond just SOAP,
 but it's hard to know how to do that without necessitating
 a lot of casts in client code.  Refactoring keeps getting
 easier anyhow.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getSOAPPart()">getSOAPPart</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the soap part of this message</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPPartAsString()"><!-- --></A><H3>
getSOAPPartAsString</H3>
<PRE>
public java.lang.String <B>getSOAPPartAsString</B>()
                                     throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Get a string representation of this message's SOAPPart.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the soap part of this message as a <code>String</code>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if the stringification failed</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPPartAsBytes()"><!-- --></A><H3>
getSOAPPartAsBytes</H3>
<PRE>
public byte[] <B>getSOAPPartAsBytes</B>()
                          throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Get a byte array representation of this message's SOAPPart.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the soap part of this message as a <code>byte[]</code>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if creating the byte[] failed</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPEnvelope()"><!-- --></A><H3>
getSOAPEnvelope</H3>
<PRE>
public <A HREF="../../../org/apache/axis/message/SOAPEnvelope.html" title="class in org.apache.axis.message">SOAPEnvelope</A> <B>getSOAPEnvelope</B>()
                             throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Get this message's SOAPPart as a SOAPEnvelope.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a SOAPEnvelope containing this message's SOAPPart
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if this failed</DL>
</DD>
</DL>
<HR>

<A NAME="getAttachmentsImpl()"><!-- --></A><H3>
getAttachmentsImpl</H3>
<PRE>
public <A HREF="../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A> <B>getAttachmentsImpl</B>()</PRE>
<DL>
<DD>Get the Attachments of this Message.
 <p>
 If this returns null, then NO ATTACHMENT SUPPORT EXISTS in this
 configuration of Axis, and no attachment operations may be
 performed.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>Attachments</code> if attachments are supported, null
              otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="getContentType(org.apache.axis.soap.SOAPConstants)"><!-- --></A><H3>
getContentType</H3>
<PRE>
public java.lang.String <B>getContentType</B>(<A HREF="../../../org/apache/axis/soap/SOAPConstants.html" title="interface in org.apache.axis.soap">SOAPConstants</A>&nbsp;sc)
                                throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Get the content type of the attachments.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sc</CODE> - provides the default content type
<DT><B>Returns:</B><DD>a <code>String</code> giving the content type of the
              attachment
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if there was an error deducing the content type from
              this message</DL>
</DD>
</DL>
<HR>

<A NAME="getContentLength()"><!-- --></A><H3>
getContentLength</H3>
<PRE>
public long <B>getContentLength</B>()
                      throws <A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Get the content length, including both soap and any attachments.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the total length of this message in bytes
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if there was a problem that prevented
              the length being calculated</DL>
</DD>
</DL>
<HR>

<A NAME="writeTo(java.io.OutputStream)"><!-- --></A><H3>
writeTo</H3>
<PRE>
public void <B>writeTo</B>(java.io.OutputStream&nbsp;os)
             throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A>,
                    java.io.IOException</PRE>
<DL>
<DD>Writes this <CODE>SOAPMessage</CODE> object to the given
   output stream. The externalization format is as defined by
   the SOAP 1.1 with Attachments specification.

   <P>If there are no attachments, just an XML stream is
   written out. For those messages that have attachments,
   <CODE>writeTo</CODE> writes a MIME-encoded byte stream.</P>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#writeTo(java.io.OutputStream)">writeTo</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>os</CODE> - the <CODE>OutputStream</CODE>
     object to which this <CODE>SOAPMessage</CODE> object will
     be written
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if there was a problem in
     externalizing this SOAP message
<DD><CODE>java.io.IOException</CODE> - if an I/O error
     occurs</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPBody()"><!-- --></A><H3>
getSOAPBody</H3>
<PRE>
public <A HREF="../../../javax/xml/soap/SOAPBody.html" title="interface in javax.xml.soap">SOAPBody</A> <B>getSOAPBody</B>()
                     throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></B></DD>
<DD>Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getSOAPBody()">getSOAPBody</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>SOAPBody</code> object contained by this
              <code>SOAPMessage</code> object
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if the SOAP Body does not exist or cannot be
              retrieved</DL>
</DD>
</DL>
<HR>

<A NAME="getSOAPHeader()"><!-- --></A><H3>
getSOAPHeader</H3>
<PRE>
public <A HREF="../../../javax/xml/soap/SOAPHeader.html" title="interface in javax.xml.soap">SOAPHeader</A> <B>getSOAPHeader</B>()
                         throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></B></DD>
<DD>Gets the SOAP Header contained in this <code>SOAPMessage</code> object.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getSOAPHeader()">getSOAPHeader</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>SOAPHeader</code> object contained by this
              <code>SOAPMessage</code> object
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if the SOAP Header does not exist or cannot be
              retrieved</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;property,
                        java.lang.Object&nbsp;value)
                 throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></B></DD>
<DD>Associates the specified value with the specified property. If there was
 already a value associated with this property, the old value is replaced.
 <p>
 The valid property names include <code>WRITE_XML_DECLARATION</code> and
 <code>CHARACTER_SET_ENCODING</code>. All of these standard SAAJ
 properties are prefixed by "javax.xml.soap". Vendors may also add
 implementation specific properties. These properties must be prefixed
 with package names that are unique to the vendor.
 <p>
 Setting the property <code>WRITE_XML_DECLARATION</code> to
 <code>"true"</code> will cause an XML Declaration to be written out at
 the start of the SOAP message. The default value of "false" suppresses
 this declaration.
 <p>
 The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
 <code>"utf-8"</code> which causes the SOAP message to be encoded using
 UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to
 <code>"utf-16"</code> causes the SOAP message to be encoded using UTF-16.
 <p>
 Some implementations may allow encodings in addition to UTF-8 and UTF-16.
 Refer to your vendor's documentation for details.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#setProperty(java.lang.String, java.lang.Object)">setProperty</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>property</CODE> - the property with which the specified value is to be
              associated<DD><CODE>value</CODE> - the value to be associated with the specified property
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if the property name is not recognized</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;property)
                             throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></B></DD>
<DD>Retrieves value of the specified property.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getProperty(java.lang.String)">getProperty</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>property</CODE> - the name of the property to retrieve
<DT><B>Returns:</B><DD>the value of the property or <code>null</code> if no such
              property exists
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if the property name is not recognized</DL>
</DD>
</DL>
<HR>

<A NAME="getContentDescription()"><!-- --></A><H3>
getContentDescription</H3>
<PRE>
public java.lang.String <B>getContentDescription</B>()</PRE>
<DL>
<DD>Retrieves a description of this <CODE>SOAPMessage</CODE>
 object's content.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getContentDescription()">getContentDescription</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a <CODE>String</CODE> describing the content of this
     message or <CODE>null</CODE> if no description has been
     set<DT><B>See Also:</B><DD><A HREF="../../../org/apache/axis/Message.html#setContentDescription(java.lang.String)"><CODE>setContentDescription(java.lang.String)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="setContentDescription(java.lang.String)"><!-- --></A><H3>
setContentDescription</H3>
<PRE>
public void <B>setContentDescription</B>(java.lang.String&nbsp;description)</PRE>
<DL>
<DD>Sets the description of this <CODE>SOAPMessage</CODE>
 object's content with the given description.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#setContentDescription(java.lang.String)">setContentDescription</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>description</CODE> - a <CODE>String</CODE>
     describing the content of this message<DT><B>See Also:</B><DD><A HREF="../../../org/apache/axis/Message.html#getContentDescription()"><CODE>getContentDescription()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="saveChanges()"><!-- --></A><H3>
saveChanges</H3>
<PRE>
public void <B>saveChanges</B>()
                 throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD>Updates this <CODE>SOAPMessage</CODE> object with all the
   changes that have been made to it. This method is called
   automatically when a message is sent or written to by the
   methods <CODE>ProviderConnection.send</CODE>, <CODE>
   SOAPConnection.call</CODE>, or <CODE>
   SOAPMessage.writeTo</CODE>. However, if changes are made to
   a message that was received or to one that has already been
   sent, the method <CODE>saveChanges</CODE> needs to be
   called explicitly in order to save the changes. The method
   <CODE>saveChanges</CODE> also generates any changes that
   can be read back (for example, a MessageId in profiles that
   support a message id). All MIME headers in a message that
   is created for sending purposes are guaranteed to have
   valid values only after <CODE>saveChanges</CODE> has been
   called.

   <P>In addition, this method marks the point at which the
   data from all constituent <CODE>AttachmentPart</CODE>
   objects are pulled into the message.</P>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#saveChanges()">saveChanges</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if there
     was a problem saving changes to this message.</DL>
</DD>
</DL>
<HR>

<A NAME="saveRequired()"><!-- --></A><H3>
saveRequired</H3>
<PRE>
public boolean <B>saveRequired</B>()</PRE>
<DL>
<DD>Indicates whether this <CODE>SOAPMessage</CODE> object
 has had the method <CODE>saveChanges</CODE> called on
 it.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#saveRequired()">saveRequired</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><CODE>true</CODE> if <CODE>saveChanges</CODE> has
     been called on this message at least once; <CODE>
     false</CODE> otherwise.</DL>
</DD>
</DL>
<HR>

<A NAME="getMimeHeaders()"><!-- --></A><H3>
getMimeHeaders</H3>
<PRE>
public <A HREF="../../../javax/xml/soap/MimeHeaders.html" title="class in javax.xml.soap">MimeHeaders</A> <B>getMimeHeaders</B>()</PRE>
<DL>
<DD>Returns all the transport-specific MIME headers for this
 <CODE>SOAPMessage</CODE> object in a transport-independent
 fashion.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getMimeHeaders()">getMimeHeaders</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a <CODE>MimeHeaders</CODE> object containing the
     <CODE>MimeHeader</CODE> objects</DL>
</DD>
</DL>
<HR>

<A NAME="removeAllAttachments()"><!-- --></A><H3>
removeAllAttachments</H3>
<PRE>
public void <B>removeAllAttachments</B>()</PRE>
<DL>
<DD>Removes all <CODE>AttachmentPart</CODE> objects that have
   been added to this <CODE>SOAPMessage</CODE> object.

   <P>This method does not touch the SOAP part.</P>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#removeAllAttachments()">removeAllAttachments</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="countAttachments()"><!-- --></A><H3>
countAttachments</H3>
<PRE>
public int <B>countAttachments</B>()</PRE>
<DL>
<DD>Gets a count of the number of attachments in this
 message. This count does not include the SOAP part.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#countAttachments()">countAttachments</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the number of <CODE>AttachmentPart</CODE> objects
     that are part of this <CODE>SOAPMessage</CODE>
     object</DL>
</DD>
</DL>
<HR>

<A NAME="getAttachments()"><!-- --></A><H3>
getAttachments</H3>
<PRE>
public java.util.Iterator <B>getAttachments</B>()</PRE>
<DL>
<DD>Retrieves all the <CODE>AttachmentPart</CODE> objects
 that are part of this <CODE>SOAPMessage</CODE> object.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getAttachments()">getAttachments</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an iterator over all the attachments in this
     message</DL>
</DD>
</DL>
<HR>

<A NAME="getAttachments(javax.xml.soap.MimeHeaders)"><!-- --></A><H3>
getAttachments</H3>
<PRE>
public java.util.Iterator <B>getAttachments</B>(<A HREF="../../../javax/xml/soap/MimeHeaders.html" title="class in javax.xml.soap">MimeHeaders</A>&nbsp;headers)</PRE>
<DL>
<DD>Retrieves all the <CODE>AttachmentPart</CODE> objects
 that have header entries that match the specified headers.
 Note that a returned attachment could have headers in
 addition to those specified.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#getAttachments(javax.xml.soap.MimeHeaders)">getAttachments</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>headers</CODE> - a <CODE>MimeHeaders</CODE>
     object containing the MIME headers for which to
     search
<DT><B>Returns:</B><DD>an iterator over all attachments that have a header
     that matches one of the given headers</DL>
</DD>
</DL>
<HR>

<A NAME="addAttachmentPart(javax.xml.soap.AttachmentPart)"><!-- --></A><H3>
addAttachmentPart</H3>
<PRE>
public void <B>addAttachmentPart</B>(<A HREF="../../../javax/xml/soap/AttachmentPart.html" title="class in javax.xml.soap">AttachmentPart</A>&nbsp;attachmentpart)</PRE>
<DL>
<DD>Adds the given <CODE>AttachmentPart</CODE> object to this
 <CODE>SOAPMessage</CODE> object. An <CODE>
 AttachmentPart</CODE> object must be created before it can be
 added to a message.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#addAttachmentPart(javax.xml.soap.AttachmentPart)">addAttachmentPart</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>attachmentpart</CODE> - an <CODE>
     AttachmentPart</CODE> object that is to become part of
     this <CODE>SOAPMessage</CODE> object
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="createAttachmentPart()"><!-- --></A><H3>
createAttachmentPart</H3>
<PRE>
public <A HREF="../../../javax/xml/soap/AttachmentPart.html" title="class in javax.xml.soap">AttachmentPart</A> <B>createAttachmentPart</B>()</PRE>
<DL>
<DD>Creates a new empty <CODE>AttachmentPart</CODE> object.
 Note that the method <CODE>addAttachmentPart</CODE> must be
 called with this new <CODE>AttachmentPart</CODE> object as
 the parameter in order for it to become an attachment to this
 <CODE>SOAPMessage</CODE> object.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html#createAttachmentPart()">createAttachmentPart</A></CODE> in class <CODE><A HREF="../../../javax/xml/soap/SOAPMessage.html" title="class in javax.xml.soap">SOAPMessage</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a new <CODE>AttachmentPart</CODE> object that can be
     populated and added to this <CODE>SOAPMessage</CODE>
     object</DL>
</DD>
</DL>
<HR>

<A NAME="dispose()"><!-- --></A><H3>
dispose</H3>
<PRE>
public void <B>dispose</B>()</PRE>
<DL>
<DD>Dispose of attachments.
<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/Message.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/FaultableHandler.html" title="class in org.apache.axis"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/axis/MessageContext.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="Message.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>
