Class AttachmentPart

A single attachment to a SOAPMessage object. A SOAPMessage
object may contain zero, one, or many AttachmentPart objects.
Each AttachmentPart 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.

Content-Type
This header identifies the type of data in the content of an
AttachmentPart object and MUST conform to [RFC2045].
The following is an example of a Content-Type header:

Content-Type: application/xml

The following line of code, in which ap is an
AttachmentPart object, sets the header shown in
the previous example.

ap.setMimeHeader("Content-Type", "application/xml");

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

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

The following code fragment, in which m is a
SOAPMessage object and contentStringl is a
String, creates an instance of AttachmentPart,
sets the AttachmentPart object with some content and
header information, and adds the AttachmentPart object to
the SOAPMessage object.

The getContent method retrieves the contents and header from
an AttachmentPart object. Depending on the
DataContentHandler objects present, the returned
Object can either be a typed Java object corresponding
to the MIME type or an InputStream object that contains the
content as bytes.

Sets the content of this attachment part from the Base64 source
InputStream and sets the value of the
Content-Type header to the value contained in
contentType, This method would first decode the base64
input and write the resulting raw bytes to the attachment.

clearContent

getContent

Gets the content of this AttachmentPart object as a Java
object. The type of the returned Java object depends on (1) the
DataContentHandler object that is used to interpret the bytes
and (2) the Content-Type given in the header.

For the MIME content types "text/plain", "text/html" and "text/xml", the
DataContentHandler object does the conversions to and
from the Java types corresponding to the MIME types.
For other MIME types,the DataContentHandler object
can return an InputStream object that contains the content data
as raw bytes.

A SAAJ-compliant implementation must, as a minimum, return a
java.lang.String object corresponding to any content
stream with a Content-Type value of
text/plain, a
javax.xml.transform.stream.StreamSource object corresponding to a
content stream with a Content-Type value of
text/xml, a java.awt.Image object
corresponding to a content stream with a
Content-Type value of image/gif or
image/jpeg. For those content types that an
installed DataContentHandler object does not understand, the
DataContentHandler object is required to return a
java.io.InputStream object with the raw bytes.

Returns:

a Java object with the content of this AttachmentPart
object

Throws:

SOAPException - if there is no content set into this
AttachmentPart object or if there was a data
transformation error

getRawContent

Gets the content of this AttachmentPart object as an
InputStream as if a call had been made to getContent and no
DataContentHandler had been registered for the
content-type of this AttachmentPart.

Note that reading from the returned InputStream would result in consuming
the data in the stream. It is the responsibility of the caller to reset
the InputStream appropriately before calling a Subsequent API. If a copy
of the raw attachment content is required then the getRawContentBytes() API
should be used instead.

Returns:

an InputStream from which the raw data contained by
the AttachmentPart can be accessed.

Throws:

SOAPException - if there is no content set into this
AttachmentPart object or if there was a data
transformation error.

setContent

Sets the content of this attachment part to that of the given
Object and sets the value of the Content-Type
header to the given type. The type of the
Object should correspond to the value given for the
Content-Type. This depends on the particular
set of DataContentHandler objects in use.

Parameters:

object - the Java object that makes up the content for
this attachment part

contentType - the MIME string that specifies the type of
the content

Throws:

IllegalArgumentException - may be thrown if the contentType
does not match the type of the content object, or if there
was no DataContentHandler object for this
content object

setBase64Content

Sets the content of this attachment part from the Base64 source
InputStream and sets the value of the
Content-Type header to the value contained in
contentType, This method would first decode the base64
input and write the resulting raw bytes to the attachment.

A subsequent call to getSize() may not be an exact measure
of the content size.

setDataHandler

Sets the given DataHandler object as the data handler
for this AttachmentPart object. Typically, on an incoming
message, the data handler is automatically set. When
a message is being created and populated with content, the
setDataHandler method can be used to get data from
various data sources into the message.