/*
* $Id: AttachmentPart.java,v 1.11 2005/08/17 08:13:01 vj135062 Exp $
* $Revision: 1.11 $
* $Date: 2005/08/17 08:13:01 $
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.xml.soap;
import java.io.InputStream;
import java.io.Reader;
import java.util.Iterator;
import javax.activation.DataHandler;
/**
* 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>
* An <code>AttachmentPart</code> object must conform to certain standards.
* <OL>
* <LI>It must conform to <a href="http://www.ietf.org/rfc/rfc2045.txt">
* MIME [RFC2045] standards</a>
* <LI>It MUST contain content
* <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>
* </UL>
* </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>
* 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>
* 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.
* <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.
* <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.
* <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();
=1= |