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

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

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

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

<P>
Implements the Attachment interface, via an actual Hashmap of actual
 AttachmentParts.
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#org.apache.axis.attachments.AttachmentsImpl">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>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#contentLocation">contentLocation</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is the content location as specified in SOAP with Attachments.</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/attachments/AttachmentsImpl.html#log">log</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/axis/attachments/MultiPartInputStream.html" title="class in org.apache.axis.attachments">MultiPartInputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#mpartStream">mpartStream</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The actual stream to manage the multi-related input stream.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#sendtype">sendtype</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The form of the attachments, whether MIME or DIME.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/axis/SOAPPart.html" title="class in org.apache.axis">SOAPPart</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#soapPart">soapPart</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field soapPart.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.axis.attachments.Attachments"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Fields inherited from interface org.apache.axis.attachments.<A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#CIDprefix">CIDprefix</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_DEFAULT">SEND_TYPE_DEFAULT</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_DIME">SEND_TYPE_DIME</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_MAX">SEND_TYPE_MAX</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_MIME">SEND_TYPE_MIME</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_MTOM">SEND_TYPE_MTOM</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_NONE">SEND_TYPE_NONE</A>, <A HREF="../../../../org/apache/axis/attachments/Attachments.html#SEND_TYPE_NOTSET">SEND_TYPE_NOTSET</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/attachments/AttachmentsImpl.html#AttachmentsImpl(java.lang.Object, java.lang.String, java.lang.String)">AttachmentsImpl</A></B>(java.lang.Object&nbsp;intialContents,
                java.lang.String&nbsp;contentType,
                java.lang.String&nbsp;contentLocation)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct one of these on a parent Message.</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;<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#addAttachmentPart(org.apache.axis.Part)">addAttachmentPart</A></B>(<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A>&nbsp;newPart)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an existing attachment to this list.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#createAttachmentPart()">createAttachmentPart</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new attachment Part in this 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/Part.html" title="interface in org.apache.axis">Part</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#createAttachmentPart(java.lang.Object)">createAttachmentPart</A></B>(java.lang.Object&nbsp;datahandler)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new attachment Part in this Message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/axis/attachments/DimeMultiPart.html" title="class in org.apache.axis.attachments">DimeMultiPart</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#createDimeMessage()">createDimeMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates the DIME 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/attachments/AttachmentsImpl.html#dispose()">dispose</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispose of the attachments and their files; do not use the object
 after making this call.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#getAttachmentByReference(java.lang.String)">getAttachmentByReference</A></B>(java.lang.String&nbsp;reference)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method should look at a refernce and determine if it is a CID: or
 url to look for attachment.</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/attachments/AttachmentsImpl.html#getAttachmentCount()">getAttachmentCount</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is the number of attachments.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#getAttachments()">getAttachments</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method will return all attachments as a collection.</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/attachments/AttachmentsImpl.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;long</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#getContentLength()">getContentLength</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the content length of the stream.</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/attachments/AttachmentsImpl.html#getContentType()">getContentType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the content type for the whole stream.</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/IncomingAttachmentStreams.html" title="class in org.apache.axis.attachments">IncomingAttachmentStreams</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#getIncomingAttachmentStreams()">getIncomingAttachmentStreams</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Once this method is called, attachments can only be accessed via the InputStreams.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#getRootPart()">getRootPart</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;From the complex stream return the root part.</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/attachments/AttachmentsImpl.html#getSendType()">getSendType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine if an object is to be treated as an attchment.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#getSendType(java.lang.String)">getSendType</A></B>(java.lang.String&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine how an object typically sent as attachments are to
 be represented.</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/attachments/AttachmentsImpl.html#getSendTypeString(int)">getSendTypeString</A></B>(int&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For a given sendType value, return a string representation.</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/attachments/AttachmentsImpl.html#isAttachment(java.lang.Object)">isAttachment</A></B>(java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine if an object is to be treated as an attchment.</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/attachments/AttachmentsImpl.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;<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/attachments/AttachmentsImpl.html#removeAttachmentPart(java.lang.String)">removeAttachmentPart</A></B>(java.lang.String&nbsp;reference)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method uses getAttacmentByReference() to look for attachment.</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/attachments/AttachmentsImpl.html#setAttachmentParts(java.util.Collection)">setAttachmentParts</A></B>(java.util.Collection&nbsp;parts)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the collection of parts.</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/attachments/AttachmentsImpl.html#setRootPart(org.apache.axis.Part)">setRootPart</A></B>(<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A>&nbsp;newRoot)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the root part of this multipart block</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/attachments/AttachmentsImpl.html#setSendType(int)">setSendType</A></B>(int&nbsp;sendtype)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the format for attachments.</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/attachments/AttachmentsImpl.html#writeContentToStream(java.io.OutputStream)">writeContentToStream</A></B>(java.io.OutputStream&nbsp;os)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write the content to the stream.</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>
<DL>
</DL>
</DL>
<HR>

<A NAME="soapPart"><!-- --></A><H3>
soapPart</H3>
<PRE>
protected <A HREF="../../../../org/apache/axis/SOAPPart.html" title="class in org.apache.axis">SOAPPart</A> <B>soapPart</B></PRE>
<DL>
<DD>Field soapPart.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="mpartStream"><!-- --></A><H3>
mpartStream</H3>
<PRE>
protected <A HREF="../../../../org/apache/axis/attachments/MultiPartInputStream.html" title="class in org.apache.axis.attachments">MultiPartInputStream</A> <B>mpartStream</B></PRE>
<DL>
<DD>The actual stream to manage the multi-related input stream.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="sendtype"><!-- --></A><H3>
sendtype</H3>
<PRE>
protected int <B>sendtype</B></PRE>
<DL>
<DD>The form of the attachments, whether MIME or DIME.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="contentLocation"><!-- --></A><H3>
contentLocation</H3>
<PRE>
protected java.lang.String <B>contentLocation</B></PRE>
<DL>
<DD>This is the content location as specified in SOAP with Attachments.
 This maybe null if the message had no Content-Location specifed.
<P>
<DL>
</DL>
</DL>

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

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

<A NAME="AttachmentsImpl(java.lang.Object, java.lang.String, java.lang.String)"><!-- --></A><H3>
AttachmentsImpl</H3>
<PRE>
public <B>AttachmentsImpl</B>(java.lang.Object&nbsp;intialContents,
                       java.lang.String&nbsp;contentType,
                       java.lang.String&nbsp;contentLocation)
                throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Construct one of these on a parent Message.
 Should only ever be called by Message constructor!
<P>
<DT><B>Parameters:</B><DD><CODE>intialContents</CODE> - should be anything but today only a stream is
        supported.<DD><CODE>contentType</CODE> - The mime content type of the stream for transports
        that provide it.<DD><CODE>contentLocation</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>

<!-- ============ METHOD DETAIL ========== -->

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

<A NAME="removeAttachmentPart(java.lang.String)"><!-- --></A><H3>
removeAttachmentPart</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A> <B>removeAttachmentPart</B>(java.lang.String&nbsp;reference)
                          throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>This method uses getAttacmentByReference() to look for attachment.
     If attachment has been found, it will be removed from the list, and
     returned to the user.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#removeAttachmentPart(java.lang.String)">removeAttachmentPart</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>reference</CODE> - The reference that referers to an attachment.
<DT><B>Returns:</B><DD>The part associated with the removed attachment, 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="addAttachmentPart(org.apache.axis.Part)"><!-- --></A><H3>
addAttachmentPart</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A> <B>addAttachmentPart</B>(<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A>&nbsp;newPart)
                       throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Adds an existing attachment to this list.
 Note: Passed part will be bound to this message.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#addAttachmentPart(org.apache.axis.Part)">addAttachmentPart</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>newPart</CODE> - new part to add
<DT><B>Returns:</B><DD>Part old attachment with the same Content-ID, 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="createAttachmentPart(java.lang.Object)"><!-- --></A><H3>
createAttachmentPart</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A> <B>createAttachmentPart</B>(java.lang.Object&nbsp;datahandler)
                          throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></B></DD>
<DD>Create a new attachment Part in this Message.
 Will actually, and always, return an AttachmentPart.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#createAttachmentPart(java.lang.Object)">createAttachmentPart</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>datahandler</CODE> - The part that is referenced
<DT><B>Returns:</B><DD>a new attachment part
<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="setAttachmentParts(java.util.Collection)"><!-- --></A><H3>
setAttachmentParts</H3>
<PRE>
public void <B>setAttachmentParts</B>(java.util.Collection&nbsp;parts)
                        throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Add the collection of parts.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#setAttachmentParts(java.util.Collection)">setAttachmentParts</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parts</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getAttachmentByReference(java.lang.String)"><!-- --></A><H3>
getAttachmentByReference</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A> <B>getAttachmentByReference</B>(java.lang.String&nbsp;reference)
                              throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>This method should look at a refernce and determine if it is a CID: or
 url to look for attachment.
     <br>
     Note: if Content-Id or Content-Location headers have changed by outside
     code, lookup will not return proper values. In order to change these
     values attachment should be removed, then added again.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getAttachmentByReference(java.lang.String)">getAttachmentByReference</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>reference</CODE> - The reference in the xml that referers to an attachment.
<DT><B>Returns:</B><DD>The part associated with the attachment.
<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="getAttachments()"><!-- --></A><H3>
getAttachments</H3>
<PRE>
public java.util.Collection <B>getAttachments</B>()
                                    throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>This method will return all attachments as a collection.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getAttachments()">getAttachments</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>A collection of attachments.
<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="getRootPart()"><!-- --></A><H3>
getRootPart</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A> <B>getRootPart</B>()</PRE>
<DL>
<DD>From the complex stream return the root part.
 Today this is SOAP.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getRootPart()">getRootPart</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the root <code>Part</code></DL>
</DD>
</DL>
<HR>

<A NAME="setRootPart(org.apache.axis.Part)"><!-- --></A><H3>
setRootPart</H3>
<PRE>
public void <B>setRootPart</B>(<A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A>&nbsp;newRoot)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></B></DD>
<DD>Sets the root part of this multipart block
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#setRootPart(org.apache.axis.Part)">setRootPart</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>newRoot</CODE> - the new root <code>Part</code></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 of the stream.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getContentLength()">getContentLength</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the content length of the stream
<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="createDimeMessage()"><!-- --></A><H3>
createDimeMessage</H3>
<PRE>
protected <A HREF="../../../../org/apache/axis/attachments/DimeMultiPart.html" title="class in org.apache.axis.attachments">DimeMultiPart</A> <B>createDimeMessage</B>()
                                   throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Creates the DIME message
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a DIME part
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE> - if the part could not be built</DL>
</DD>
</DL>
<HR>

<A NAME="writeContentToStream(java.io.OutputStream)"><!-- --></A><H3>
writeContentToStream</H3>
<PRE>
public void <B>writeContentToStream</B>(java.io.OutputStream&nbsp;os)
                          throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Write the content to the stream.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#writeContentToStream(java.io.OutputStream)">writeContentToStream</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>os</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getContentType()"><!-- --></A><H3>
getContentType</H3>
<PRE>
public java.lang.String <B>getContentType</B>()
                                throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Gets the content type for the whole stream.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getContentType()">getContentType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the content type for the whole stream
<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="getAttachmentCount()"><!-- --></A><H3>
getAttachmentCount</H3>
<PRE>
public int <B>getAttachmentCount</B>()</PRE>
<DL>
<DD>This is the number of attachments.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getAttachmentCount()">getAttachmentCount</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the number of attachments</DL>
</DD>
</DL>
<HR>

<A NAME="isAttachment(java.lang.Object)"><!-- --></A><H3>
isAttachment</H3>
<PRE>
public boolean <B>isAttachment</B>(java.lang.Object&nbsp;value)</PRE>
<DL>
<DD>Determine if an object is to be treated as an attchment.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#isAttachment(java.lang.Object)">isAttachment</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the value that is to be determined if
 its an attachment.
<DT><B>Returns:</B><DD>True if value should be treated as an attchment.</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="../../../../org/apache/axis/attachments/Attachments.html#removeAllAttachments()">removeAllAttachments</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
</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="../../../../org/apache/axis/attachments/Attachments.html#getAttachments(javax.xml.soap.MimeHeaders)">getAttachments</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</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="createAttachmentPart()"><!-- --></A><H3>
createAttachmentPart</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/Part.html" title="interface in org.apache.axis">Part</A> <B>createAttachmentPart</B>()
                          throws <A HREF="../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>Create a new attachment Part in this Message.
 Will actually, and always, return an AttachmentPart.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#createAttachmentPart()">createAttachmentPart</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a new attachment Part
<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="setSendType(int)"><!-- --></A><H3>
setSendType</H3>
<PRE>
public void <B>setSendType</B>(int&nbsp;sendtype)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></B></DD>
<DD>Set the format for attachments.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#setSendType(int)">setSendType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sendtype</CODE> - the format to send.
      SEND_TYPE_MIME for Multipart Releated Mail type attachments.
      SEND_TYPE_DIME for DIME type attachments.</DL>
</DD>
</DL>
<HR>

<A NAME="getSendType()"><!-- --></A><H3>
getSendType</H3>
<PRE>
public int <B>getSendType</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></B></DD>
<DD>Determine if an object is to be treated as an attchment.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getSendType()">getSendType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>SEND_TYPE_MIME, SEND_TYPE_DIME,  SEND_TYPE_NOTSET</DL>
</DD>
</DL>
<HR>

<A NAME="dispose()"><!-- --></A><H3>
dispose</H3>
<PRE>
public void <B>dispose</B>()</PRE>
<DL>
<DD>dispose of the attachments and their files; do not use the object
 after making this call.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#dispose()">dispose</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getSendType(java.lang.String)"><!-- --></A><H3>
getSendType</H3>
<PRE>
public static int <B>getSendType</B>(java.lang.String&nbsp;value)</PRE>
<DL>
<DD>Determine how an object typically sent as attachments are to
 be represented. Currently, MIME DIME and NONE are reccognised.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - a String representing a sending type, treated in a
              case-insensetive manner
<DT><B>Returns:</B><DD>an <code>int</code> send type code</DL>
</DD>
</DL>
<HR>

<A NAME="getSendTypeString(int)"><!-- --></A><H3>
getSendTypeString</H3>
<PRE>
public static java.lang.String <B>getSendTypeString</B>(int&nbsp;value)</PRE>
<DL>
<DD>For a given sendType value, return a string representation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - a type code integer
<DT><B>Returns:</B><DD>a <code>String</code> representation of <code>value</code></DL>
</DD>
</DL>
<HR>

<A NAME="getIncomingAttachmentStreams()"><!-- --></A><H3>
getIncomingAttachmentStreams</H3>
<PRE>
public <A HREF="../../../../org/apache/axis/attachments/IncomingAttachmentStreams.html" title="class in org.apache.axis.attachments">IncomingAttachmentStreams</A> <B>getIncomingAttachmentStreams</B>()</PRE>
<DL>
<DD>Once this method is called, attachments can only be accessed via the InputStreams.
 Any other access to the attachments collection (e.g. via getAttachments()) is
 prohibited and will cause a IllegalStateException to be thrown.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html#getIncomingAttachmentStreams()">getIncomingAttachmentStreams</A></CODE> in interface <CODE><A HREF="../../../../org/apache/axis/attachments/Attachments.html" title="interface in org.apache.axis.attachments">Attachments</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>All of the attachment streams.</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/AttachmentsImpl.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/attachments/AttachmentPart.html" title="class in org.apache.axis.attachments"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/attachments/AttachmentUtils.html" title="class in org.apache.axis.attachments"><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="AttachmentsImpl.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>
