public abstract class

Multipart

extends Object
java.lang.Object
   ↳ com.google.code.javax.mail.Multipart
Known Direct Subclasses

Class Overview

Multipart is a container that holds multiple body parts. Multipart provides methods to retrieve and set its subparts.

Multipart also acts as the base class for the content object returned by most Multipart DataContentHandlers. For example, invoking getContent() on a DataHandler whose source is a "multipart/signed" data source may return an appropriate subclass of Multipart.

Some messaging systems provide different subtypes of Multiparts. For example, MIME specifies a set of subtypes that include "alternative", "mixed", "related", "parallel", "signed", etc.

Multipart is an abstract class. Subclasses provide actual implementations.

Summary

Fields
protected String contentType This field specifies the content-type of this multipart object.
protected Part parent The Part containing this Multipart, if known.
protected Vector parts Vector of BodyPart objects.
Protected Constructors
Multipart()
Default constructor.
Public Methods
synchronized void addBodyPart(BodyPart part)
Adds a Part to the multipart.
synchronized void addBodyPart(BodyPart part, int index)
Adds a BodyPart at position index.
synchronized BodyPart getBodyPart(int index)
Get the specified Part.
String getContentType()
Return the content-type of this Multipart.
synchronized int getCount()
Return the number of enclosed BodyPart objects.
synchronized Part getParent()
Return the Part that contains this Multipart object, or null if not known.
synchronized boolean removeBodyPart(BodyPart part)
Remove the specified part from the multipart message.
synchronized void removeBodyPart(int index)
Remove the part at specified location (starting from 0).
synchronized void setParent(Part parent)
Set the parent of this Multipart to be the specified Part.
abstract void writeTo(OutputStream os)
Output an appropriately encoded bytestream to the given OutputStream.
Protected Methods
synchronized void setMultipartDataSource(MultipartDataSource mp)
Setup this Multipart object from the given MultipartDataSource.
[Expand]
Inherited Methods
From class java.lang.Object

Fields

protected String contentType

This field specifies the content-type of this multipart object. It defaults to "multipart/mixed".

protected Part parent

The Part containing this Multipart, if known.

protected Vector parts

Vector of BodyPart objects.

Protected Constructors

protected Multipart ()

Default constructor. An empty Multipart object is created.

Public Methods

public synchronized void addBodyPart (BodyPart part)

Adds a Part to the multipart. The BodyPart is appended to the list of existing Parts.

Parameters
part The Part to be appended
Throws
IllegalWriteException if the underlying implementation does not support modification of existing values
MessagingException

public synchronized void addBodyPart (BodyPart part, int index)

Adds a BodyPart at position index. If index is not the last one in the list, the subsequent parts are shifted up. If index is larger than the number of parts present, the BodyPart is appended to the end.

Parameters
part The BodyPart to be inserted
index Location where to insert the part
Throws
IllegalWriteException if the underlying implementation does not support modification of existing values
MessagingException

public synchronized BodyPart getBodyPart (int index)

Get the specified Part. Parts are numbered starting at 0.

Parameters
index The index of the desired Part
Returns
  • the Part
Throws
IndexOutOfBoundsException if the given index is out of range.
MessagingException

public String getContentType ()

Return the content-type of this Multipart.

This implementation just returns the value of the contentType field.

Returns
  • content-type
See Also

public synchronized int getCount ()

Return the number of enclosed BodyPart objects.

Returns
  • number of parts
See Also

public synchronized Part getParent ()

Return the Part that contains this Multipart object, or null if not known.

public synchronized boolean removeBodyPart (BodyPart part)

Remove the specified part from the multipart message. Shifts all the parts after the removed part down one.

Parameters
part The part to remove
Returns
  • true if part removed, false otherwise
Throws
MessagingException if no such Part exists
IllegalWriteException if the underlying implementation does not support modification of existing values

public synchronized void removeBodyPart (int index)

Remove the part at specified location (starting from 0). Shifts all the parts after the removed part down one.

Parameters
index Index of the part to remove
Throws
IndexOutOfBoundsException if the given index is out of range.
IllegalWriteException if the underlying implementation does not support modification of existing values
MessagingException

public synchronized void setParent (Part parent)

Set the parent of this Multipart to be the specified Part. Normally called by the Message or BodyPart setContent(Multipart) method. parent may be null if the Multipart is being removed from its containing Part.

Parameters
parent

public abstract void writeTo (OutputStream os)

Output an appropriately encoded bytestream to the given OutputStream. The implementation subclass decides the appropriate encoding algorithm to be used. The bytestream is typically used for sending.

Parameters
os
Throws
IOException if an IO related exception occurs
MessagingException

Protected Methods

protected synchronized void setMultipartDataSource (MultipartDataSource mp)

Setup this Multipart object from the given MultipartDataSource.

The method adds the MultipartDataSource's BodyPart objects into this Multipart. This Multipart's contentType is set to that of the MultipartDataSource.

This method is typically used in those cases where one has a multipart data source that has already been pre-parsed into the individual body parts (for example, an IMAP datasource), but needs to create an appropriate Multipart subclass that represents a specific multipart subtype.

Parameters
mp Multipart datasource