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

<META NAME="keywords" CONTENT="javax.xml.soap.AttachmentPart class">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="AttachmentPart (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/AttachmentPart.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;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../javax/xml/soap/MessageFactory.html" title="class in javax.xml.soap"><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="AttachmentPart.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;FIELD&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;FIELD&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">
javax.xml.soap</FONT>
<BR>
Class AttachmentPart</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../resources/inherit.gif" ALT="extended by"><B>javax.xml.soap.AttachmentPart</B>
</PRE>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../org/apache/axis/attachments/AttachmentPart.html" title="class in org.apache.axis.attachments">AttachmentPart</A></DD>
</DL>
<HR>
<DL>
<DT>public abstract class <B>AttachmentPart</B><DT>extends java.lang.Object</DL>

<P>
<P>A single attachment to a <CODE>SOAPMessage</CODE> object. A
   <CODE>SOAPMessage</CODE> object may contain zero, one, or many
   <CODE>AttachmentPart</CODE> objects. Each <CODE>
   AttachmentPart</CODE> object consists of two parts,
   application-specific content and associated MIME headers. The
   MIME headers consists of name/value pairs that can be used to
   identify and describe the content.</P>

   <P>An <CODE>AttachmentPart</CODE> object must conform to
   certain standards.</P>

   <OL>
     <LI>It must conform to <A href=
     "http://www.ietf.org/rfc/rfc2045.txt">MIME [RFC2045]
     standards</A></LI>

     <LI>It MUST contain content</LI>

     <LI>
       The header portion MUST include the following header:

       <UL>
         <LI>
           <CODE>Content-Type</CODE><BR>
            This header identifies the type of data in the content
           of an <CODE>AttachmentPart</CODE> object and MUST
           conform to [RFC2045]. The following is an example of a
           Content-Type header:
 <PRE>
      Content-Type:  application/xml

 </PRE>
           The following line of code, in which <CODE>ap</CODE> is
           an <CODE>AttachmentPart</CODE> object, sets the header
           shown in the previous example.
 <PRE>
      ap.setMimeHeader("Content-Type", "application/xml");

 </PRE>

           <P></P>
         </LI>
       </UL>
     </LI>
   </OL>

   <P>There are no restrictions on the content portion of an
   <CODE>AttachmentPart</CODE> object. The content may be anything
   from a simple plain text object to a complex XML document or
   image file.</P>

   <P>An <CODE>AttachmentPart</CODE> object is created with the
   method <CODE>SOAPMessage.createAttachmentPart</CODE>. After
   setting its MIME headers, the <CODE>AttachmentPart</CODE>
   object is added to the message that created it with the method
   <CODE>SOAPMessage.addAttachmentPart</CODE>.</P>

   <P>The following code fragment, in which <CODE>m</CODE> is a
   <CODE>SOAPMessage</CODE> object and <CODE>contentStringl</CODE>
   is a <CODE>String</CODE>, creates an instance of <CODE>
   AttachmentPart</CODE>, sets the <CODE>AttachmentPart</CODE>
   object with some content and header information, and adds the
   <CODE>AttachmentPart</CODE> object to the <CODE>
   SOAPMessage</CODE> object.</P>
 <PRE>
    AttachmentPart ap1 = m.createAttachmentPart();
    ap1.setContent(contentString1, "text/plain");
    m.addAttachmentPart(ap1);
 </PRE>

   <P>The following code fragment creates and adds a second <CODE>
   AttachmentPart</CODE> instance to the same message. <CODE>
   jpegData</CODE> is a binary byte buffer representing the jpeg
   file.</P>
 <PRE>
    AttachmentPart ap2 = m.createAttachmentPart();
    byte[] jpegData =  ...;
    ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
    m.addAttachmentPart(ap2);
 </PRE>

   <P>The <CODE>getContent</CODE> method retrieves the contents
   and header from an <CODE>AttachmentPart</CODE> object.
   Depending on the <CODE>DataContentHandler</CODE> objects
   present, the returned <CODE>Object</CODE> can either be a typed
   Java object corresponding to the MIME type or an <CODE>
   InputStream</CODE> object that contains the content as
   bytes.</P>
 <PRE>
    String content1 = ap1.getContent();
    java.io.InputStream content2 = ap2.getContent();
 </PRE>
   The method <CODE>clearContent</CODE> removes all the content
   from an <CODE>AttachmentPart</CODE> object but does not affect
   its header information.
 <PRE>
    ap1.clearContent();
 </PRE>
<P>

<P>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== 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="../../../javax/xml/soap/AttachmentPart.html#AttachmentPart()">AttachmentPart</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new AttachmentPart.</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>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#addMimeHeader(java.lang.String, java.lang.String)">addMimeHeader</A></B>(java.lang.String&nbsp;name,
              java.lang.String&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a MIME header with the specified name and value to
   this <CODE>AttachmentPart</CODE> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#clearContent()">clearContent</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears out the content of this <CODE>
 AttachmentPart</CODE> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getAllMimeHeaders()">getAllMimeHeaders</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves all the headers for this <CODE>
 AttachmentPart</CODE> object as an iterator over the <CODE>
 MimeHeader</CODE> objects.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getContent()">getContent</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the content of this <code>AttachmentPart</code> object as a Java
 object.</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="../../../javax/xml/soap/AttachmentPart.html#getContentId()">getContentId</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value of the MIME header whose name is
 "Content-Id".</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="../../../javax/xml/soap/AttachmentPart.html#getContentLocation()">getContentLocation</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value of the MIME header
 "Content-Location".</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="../../../javax/xml/soap/AttachmentPart.html#getContentType()">getContentType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value of the MIME header "Content-Type".</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;javax.activation.DataHandler</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getDataHandler()">getDataHandler</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the <CODE>DataHandler</CODE> object for this <CODE>
 AttachmentPart</CODE> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getMatchingMimeHeaders(java.lang.String[])">getMatchingMimeHeaders</A></B>(java.lang.String[]&nbsp;names)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves all <CODE>MimeHeader</CODE> objects that match
 a name in the given array.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;java.lang.String[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getMimeHeader(java.lang.String)">getMimeHeader</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets all the values of the header identified by the given
 <CODE>String</CODE>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getNonMatchingMimeHeaders(java.lang.String[])">getNonMatchingMimeHeaders</A></B>(java.lang.String[]&nbsp;names)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieves all <CODE>MimeHeader</CODE> objects whose name
 does not match a name in the given array.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#getSize()">getSize</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of bytes in this <CODE>
 AttachmentPart</CODE> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#removeAllMimeHeaders()">removeAllMimeHeaders</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes all the MIME header entries.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#removeMimeHeader(java.lang.String)">removeMimeHeader</A></B>(java.lang.String&nbsp;header)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes all MIME headers that match the given name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#setContent(java.lang.Object, java.lang.String)">setContent</A></B>(java.lang.Object&nbsp;object,
           java.lang.String&nbsp;contentType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the content of this attachment part to that of the
 given <CODE>Object</CODE> and sets the value of the <CODE>
 Content-Type</CODE> header to the given 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="../../../javax/xml/soap/AttachmentPart.html#setContentId(java.lang.String)">setContentId</A></B>(java.lang.String&nbsp;contentId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the MIME header "Content-Id" with the given
 value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#setContentLocation(java.lang.String)">setContentLocation</A></B>(java.lang.String&nbsp;contentLocation)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the MIME header "Content-Location" with the given
 value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#setContentType(java.lang.String)">setContentType</A></B>(java.lang.String&nbsp;contentType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the MIME header "Content-Type" with the given
 value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#setDataHandler(javax.activation.DataHandler)">setDataHandler</A></B>(javax.activation.DataHandler&nbsp;datahandler)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the given <CODE>DataHandler</CODE> object as the
 data handler for this <CODE>AttachmentPart</CODE> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/soap/AttachmentPart.html#setMimeHeader(java.lang.String, java.lang.String)">setMimeHeader</A></B>(java.lang.String&nbsp;name,
              java.lang.String&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changes the first header entry that matches the given name
   to the given value, adding a new header if no existing
   header matches.</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 =========== -->


<!-- ========= 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="AttachmentPart()"><!-- --></A><H3>
AttachmentPart</H3>
<PRE>
public <B>AttachmentPart</B>()</PRE>
<DL>
<DD>Create a new AttachmentPart.
<P>
</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="getSize()"><!-- --></A><H3>
getSize</H3>
<PRE>
public abstract int <B>getSize</B>()
                     throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD>Returns the number of bytes in this <CODE>
 AttachmentPart</CODE> object.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the size of this <CODE>AttachmentPart</CODE> object
     in bytes or -1 if the size cannot be determined
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if the content of this
     attachment is corrupted of if there was an exception
     while trying to determine the size.</DL>
</DD>
</DL>
<HR>

<A NAME="clearContent()"><!-- --></A><H3>
clearContent</H3>
<PRE>
public abstract void <B>clearContent</B>()</PRE>
<DL>
<DD>Clears out the content of this <CODE>
 AttachmentPart</CODE> object. The MIME header portion is left
 untouched.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getContent()"><!-- --></A><H3>
getContent</H3>
<PRE>
public abstract java.lang.Object <B>getContent</B>()
                                     throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD>Gets the content of this <code>AttachmentPart</code> object as a Java
 object. The type of the returned Java object depends on (1) the
 <code>DataContentHandler</code> object that is used to interpret the bytes
 and (2) the <code>Content-Type</code> given in the header.
 <p>
 For the MIME content types "text/plain", "text/html" and "text/xml", the
 <code>DataContentHandler</code> object does the conversions to and
 from the Java types corresponding to the MIME types.
 For other MIME types,the <code>DataContentHandler</code> object
 can return an <code>InputStream</code> object that contains the content data
 as raw bytes.
 <p>
 A JAXM-compliant implementation must, as a minimum, return a
 <code>java.lang.String</code> object corresponding to any content
 stream with a <code>Content-Type</code> value of
 <code>text/plain</code>, a
 <code>javax.xml.transform.StreamSource</code> object corresponding to a
 content stream with a <code>Content-Type</code> value of
 <code>text/xml</code>, a <code>java.awt.Image</code> object
 corresponding to a content stream with a
 <code>Content-Type</code> value of <code>image/gif</code> or
 <code>image/jpeg</code>.  For those content types that an
 installed <code>DataContentHandler</code> object does not understand, the
 <code>DataContentHandler</code> object is required to return a
 <code>java.io.InputStream</code> object with the raw bytes.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>a Java object with the content of this <CODE>
     AttachmentPart</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 there is no content set
     into this <CODE>AttachmentPart</CODE> object or if there
     was a data transformation error</DL>
</DD>
</DL>
<HR>

<A NAME="setContent(java.lang.Object, java.lang.String)"><!-- --></A><H3>
setContent</H3>
<PRE>
public abstract void <B>setContent</B>(java.lang.Object&nbsp;object,
                                java.lang.String&nbsp;contentType)</PRE>
<DL>
<DD>Sets the content of this attachment part to that of the
 given <CODE>Object</CODE> and sets the value of the <CODE>
 Content-Type</CODE> header to the given type. The type of the
 <CODE>Object</CODE> should correspond to the value given for
 the <CODE>Content-Type</CODE>. This depends on the particular
 set of <CODE>DataContentHandler</CODE> objects in use.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - the Java object that makes up
 the content for this attachment part<DD><CODE>contentType</CODE> - the MIME string that
 specifies the type of the content
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
     the contentType does not match the type of the content
     object, or if there was no <CODE>
     DataContentHandler</CODE> object for this content
     object<DT><B>See Also:</B><DD><A HREF="../../../javax/xml/soap/AttachmentPart.html#getContent()"><CODE>getContent()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getDataHandler()"><!-- --></A><H3>
getDataHandler</H3>
<PRE>
public abstract javax.activation.DataHandler <B>getDataHandler</B>()
                                                     throws <A HREF="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD>Gets the <CODE>DataHandler</CODE> object for this <CODE>
 AttachmentPart</CODE> object.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the <CODE>DataHandler</CODE> object associated with
     this <CODE>AttachmentPart</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 there is
     no data in this <CODE>AttachmentPart</CODE> object</DL>
</DD>
</DL>
<HR>

<A NAME="setDataHandler(javax.activation.DataHandler)"><!-- --></A><H3>
setDataHandler</H3>
<PRE>
public abstract void <B>setDataHandler</B>(javax.activation.DataHandler&nbsp;datahandler)</PRE>
<DL>
<DD>Sets the given <CODE>DataHandler</CODE> object as the
 data handler for this <CODE>AttachmentPart</CODE> object.
 Typically, on an incoming message, the data handler is
 automatically set. When a message is being created and
 populated with content, the <CODE>setDataHandler</CODE>
 method can be used to get data from various data sources into
 the message.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>datahandler</CODE> - <CODE>DataHandler</CODE> object to
     be set
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
     there was a problem with the specified <CODE>
     DataHandler</CODE> object</DL>
</DD>
</DL>
<HR>

<A NAME="getContentId()"><!-- --></A><H3>
getContentId</H3>
<PRE>
public java.lang.String <B>getContentId</B>()</PRE>
<DL>
<DD>Gets the value of the MIME header whose name is
 "Content-Id".
<P>
<DD><DL>

<DT><B>Returns:</B><DD>a <CODE>String</CODE> giving the value of the
     "Content-Id" header or <CODE>null</CODE> if there is
     none<DT><B>See Also:</B><DD><A HREF="../../../javax/xml/soap/AttachmentPart.html#setContentId(java.lang.String)"><CODE>setContentId(java.lang.String)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getContentLocation()"><!-- --></A><H3>
getContentLocation</H3>
<PRE>
public java.lang.String <B>getContentLocation</B>()</PRE>
<DL>
<DD>Gets the value of the MIME header
 "Content-Location".
<P>
<DD><DL>

<DT><B>Returns:</B><DD>a <CODE>String</CODE> giving the value of the
     "Content-Location" header or <CODE>null</CODE> if there
     is none</DL>
</DD>
</DL>
<HR>

<A NAME="getContentType()"><!-- --></A><H3>
getContentType</H3>
<PRE>
public java.lang.String <B>getContentType</B>()</PRE>
<DL>
<DD>Gets the value of the MIME header "Content-Type".
<P>
<DD><DL>

<DT><B>Returns:</B><DD>a <CODE>String</CODE> giving the value of the
     "Content-Type" header or <CODE>null</CODE> if there is
     none</DL>
</DD>
</DL>
<HR>

<A NAME="setContentId(java.lang.String)"><!-- --></A><H3>
setContentId</H3>
<PRE>
public void <B>setContentId</B>(java.lang.String&nbsp;contentId)</PRE>
<DL>
<DD>Sets the MIME header "Content-Id" with the given
 value.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>contentId</CODE> - a <CODE>String</CODE> giving
     the value of the "Content-Id" header
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
     there was a problem with the specified <CODE>
     contentId</CODE> value<DT><B>See Also:</B><DD><A HREF="../../../javax/xml/soap/AttachmentPart.html#getContentId()"><CODE>getContentId()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="setContentLocation(java.lang.String)"><!-- --></A><H3>
setContentLocation</H3>
<PRE>
public void <B>setContentLocation</B>(java.lang.String&nbsp;contentLocation)</PRE>
<DL>
<DD>Sets the MIME header "Content-Location" with the given
 value.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>contentLocation</CODE> - a <CODE>String</CODE>
     giving the value of the "Content-Location" header
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
     there was a problem with the specified content
     location</DL>
</DD>
</DL>
<HR>

<A NAME="setContentType(java.lang.String)"><!-- --></A><H3>
setContentType</H3>
<PRE>
public void <B>setContentType</B>(java.lang.String&nbsp;contentType)</PRE>
<DL>
<DD>Sets the MIME header "Content-Type" with the given
 value.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>contentType</CODE> - a <CODE>String</CODE>
     giving the value of the "Content-Type" header
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
 there was a problem with the specified content type</DL>
</DD>
</DL>
<HR>

<A NAME="removeMimeHeader(java.lang.String)"><!-- --></A><H3>
removeMimeHeader</H3>
<PRE>
public abstract void <B>removeMimeHeader</B>(java.lang.String&nbsp;header)</PRE>
<DL>
<DD>Removes all MIME headers that match the given name.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>header</CODE> - - the string name of the MIME
     header/s to be removed</DL>
</DD>
</DL>
<HR>

<A NAME="removeAllMimeHeaders()"><!-- --></A><H3>
removeAllMimeHeaders</H3>
<PRE>
public abstract void <B>removeAllMimeHeaders</B>()</PRE>
<DL>
<DD>Removes all the MIME header entries.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getMimeHeader(java.lang.String)"><!-- --></A><H3>
getMimeHeader</H3>
<PRE>
public abstract java.lang.String[] <B>getMimeHeader</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Gets all the values of the header identified by the given
 <CODE>String</CODE>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the header; example:
     "Content-Type"
<DT><B>Returns:</B><DD>a <CODE>String</CODE> array giving the value for the
     specified header<DT><B>See Also:</B><DD><A HREF="../../../javax/xml/soap/AttachmentPart.html#setMimeHeader(java.lang.String, java.lang.String)"><CODE>setMimeHeader(java.lang.String, java.lang.String)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="setMimeHeader(java.lang.String, java.lang.String)"><!-- --></A><H3>
setMimeHeader</H3>
<PRE>
public abstract void <B>setMimeHeader</B>(java.lang.String&nbsp;name,
                                   java.lang.String&nbsp;value)</PRE>
<DL>
<DD>Changes the first header entry that matches the given name
   to the given value, adding a new header if no existing
   header matches. This method also removes all matching
   headers but the first.

   <P>Note that RFC822 headers can only contain US-ASCII
   characters.</P>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - a <CODE>String</CODE> giving the
     name of the header for which to search<DD><CODE>value</CODE> - a <CODE>String</CODE> giving the
     value to be set for the header whose name matches the
     given name
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
     there was a problem with the specified mime header name
     or value</DL>
</DD>
</DL>
<HR>

<A NAME="addMimeHeader(java.lang.String, java.lang.String)"><!-- --></A><H3>
addMimeHeader</H3>
<PRE>
public abstract void <B>addMimeHeader</B>(java.lang.String&nbsp;name,
                                   java.lang.String&nbsp;value)</PRE>
<DL>
<DD>Adds a MIME header with the specified name and value to
   this <CODE>AttachmentPart</CODE> object.

   <P>Note that RFC822 headers can contain only US-ASCII
   characters.</P>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - a <CODE>String</CODE> giving the
     name of the header to be added<DD><CODE>value</CODE> - a <CODE>String</CODE> giving the
     value of the header to be added
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if
     there was a problem with the specified mime header name
     or value</DL>
</DD>
</DL>
<HR>

<A NAME="getAllMimeHeaders()"><!-- --></A><H3>
getAllMimeHeaders</H3>
<PRE>
public abstract java.util.Iterator <B>getAllMimeHeaders</B>()</PRE>
<DL>
<DD>Retrieves all the headers for this <CODE>
 AttachmentPart</CODE> object as an iterator over the <CODE>
 MimeHeader</CODE> objects.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>an <CODE>Iterator</CODE> object with all of the Mime
     headers for this <CODE>AttachmentPart</CODE> object</DL>
</DD>
</DL>
<HR>

<A NAME="getMatchingMimeHeaders(java.lang.String[])"><!-- --></A><H3>
getMatchingMimeHeaders</H3>
<PRE>
public abstract java.util.Iterator <B>getMatchingMimeHeaders</B>(java.lang.String[]&nbsp;names)</PRE>
<DL>
<DD>Retrieves all <CODE>MimeHeader</CODE> objects that match
 a name in the given array.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>names</CODE> - a <CODE>String</CODE> array with
     the name(s) of the MIME headers to be returned
<DT><B>Returns:</B><DD>all of the MIME headers that match one of the names
     in the given array as an <CODE>Iterator</CODE>
     object</DL>
</DD>
</DL>
<HR>

<A NAME="getNonMatchingMimeHeaders(java.lang.String[])"><!-- --></A><H3>
getNonMatchingMimeHeaders</H3>
<PRE>
public abstract java.util.Iterator <B>getNonMatchingMimeHeaders</B>(java.lang.String[]&nbsp;names)</PRE>
<DL>
<DD>Retrieves all <CODE>MimeHeader</CODE> objects whose name
 does not match a name in the given array.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>names</CODE> - a <CODE>String</CODE> array with
     the name(s) of the MIME headers not to be returned
<DT><B>Returns:</B><DD>all of the MIME headers in this <CODE>
     AttachmentPart</CODE> object except those that match one
     of the names in the given array. The nonmatching MIME
     headers are returned as an <CODE>Iterator</CODE>
     object.</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/AttachmentPart.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;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../javax/xml/soap/MessageFactory.html" title="class in javax.xml.soap"><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="AttachmentPart.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;FIELD&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;FIELD&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>
