org.apache.james.mime4j
Interface ContentHandler

All Known Implementing Classes:
AbstractContentHandler, SimpleContentHandler

public interface ContentHandler

Receives notifications of the content of a plain RFC822 or MIME message. Implement this interface and register an instance of that implementation with a MimeStreamParser instance using its MimeStreamParser.setContentHandler(ContentHandler) method. The parser uses the ContentHandler instance to report basic message-related events like the start and end of the body of a part in a multipart MIME entity.

Events will be generated in the order the corresponding elements occur in the message stream parsed by the parser. E.g.:

      startMessage()
          startHeader()
              field(...)
              field(...)
              ...
          endHeader()
          startMultipart()
              preamble(...)
              startBodyPart()
                  startHeader()
                      field(...)
                      field(...)
                      ...
                  endHeader()
                  body()
              endBodyPart()
              startBodyPart()
                  startHeader()
                      field(...)
                      field(...)
                      ...
                  endHeader()
                  body()
              endBodyPart()
              epilogue(...)
          endMultipart()
      endMessage()
 
The above shows an example of a MIME message consisting of a multipart body containing two body parts.

See MIME RFCs 2045-2049 for more information on the structure of MIME messages and RFC 822 and 2822 for the general structure of Internet mail messages.

Version:
$Id: ContentHandler.java,v 1.3 2004/10/02 12:41:10 ntherning Exp $

Method Summary
 void body(BodyDescriptor bd, java.io.InputStream is)
          Called when the body of a discrete (non-multipart) entity is about to be parsed.
 void endBodyPart()
          Called when a body part ends.
 void endHeader()
          Called when there are no more header fields in a message or body part.
 void endMessage()
          Called when a message ends.
 void endMultipart()
          Called when the body of an entity has been parsed.
 void epilogue(java.io.InputStream is)
          Called for the epilogue (whatever comes after the final body part) of a multipart/* entity.
 void field(java.lang.String fieldData)
          Called for each field of a header.
 void preamble(java.io.InputStream is)
          Called for the preamble (whatever comes before the first body part) of a multipart/* entity.
 void raw(java.io.InputStream is)
          Called when a new entity (message or body part) starts and the parser is in raw mode.
 void startBodyPart()
          Called when a new body part starts inside a multipart/* entity.
 void startHeader()
          Called when a header (of a message or body part) is about to be parsed.
 void startMessage()
          Called when a new message starts (a top level message or an embedded rfc822 message).
 void startMultipart(BodyDescriptor bd)
          Called when the body of a multipart entity is about to be parsed.
 

Method Detail

startMessage

void startMessage()
Called when a new message starts (a top level message or an embedded rfc822 message).


endMessage

void endMessage()
Called when a message ends.


startBodyPart

void startBodyPart()
Called when a new body part starts inside a multipart/* entity.


endBodyPart

void endBodyPart()
Called when a body part ends.


startHeader

void startHeader()
Called when a header (of a message or body part) is about to be parsed.


field

void field(java.lang.String fieldData)
Called for each field of a header.

Parameters:
fieldData - the raw contents of the field (Field-Name: field value). The value will not be unfolded.

endHeader

void endHeader()
Called when there are no more header fields in a message or body part.


preamble

void preamble(java.io.InputStream is)
              throws java.io.IOException
Called for the preamble (whatever comes before the first body part) of a multipart/* entity.

Parameters:
is - used to get the contents of the preamble.
Throws:
java.io.IOException - should be thrown on I/O errors.

epilogue

void epilogue(java.io.InputStream is)
              throws java.io.IOException
Called for the epilogue (whatever comes after the final body part) of a multipart/* entity.

Parameters:
is - used to get the contents of the epilogue.
Throws:
java.io.IOException - should be thrown on I/O errors.

startMultipart

void startMultipart(BodyDescriptor bd)
Called when the body of a multipart entity is about to be parsed.

Parameters:
bd - encapsulates the values (either read from the message stream or, if not present, determined implictly as described in the MIME rfc:s) of the Content-Type and Content-Transfer-Encoding header fields.

endMultipart

void endMultipart()
Called when the body of an entity has been parsed.


body

void body(BodyDescriptor bd,
          java.io.InputStream is)
          throws java.io.IOException
Called when the body of a discrete (non-multipart) entity is about to be parsed.

Parameters:
bd - see startMultipart(BodyDescriptor)
is - the contents of the body. NOTE: this is the raw body contents - it will not be decoded if encoded. The bd parameter should be used to determine how the stream data should be decoded.
Throws:
java.io.IOException - should be thrown on I/O errors.

raw

void raw(java.io.InputStream is)
         throws java.io.IOException
Called when a new entity (message or body part) starts and the parser is in raw mode.

Parameters:
is - the raw contents of the entity.
Throws:
java.io.IOException - should be thrown on I/O errors.
See Also:
MimeStreamParser.setRaw(boolean)


Copyright © 2004-2007 The Apache Software Foundation. All Rights Reserved.