org.apache.james.mime4j.parser
Interface ContentHandler

All Known Implementing Classes:
AbstractContentHandler, MessageBuilder, 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.

Throwing an exception from an event method will terminate the message processing, i.e. no new events will be generated for that message.

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.


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(Field field)
          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()
                  throws MimeException
Called when a new message starts (a top level message or an embedded rfc822 message).

Throws:
MimeException - on processing errors

endMessage

void endMessage()
                throws MimeException
Called when a message ends.

Throws:
MimeException - on processing errors

startBodyPart

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

Throws:
MimeException - on processing errors

endBodyPart

void endBodyPart()
                 throws MimeException
Called when a body part ends.

Throws:
MimeException - on processing errors

startHeader

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

Throws:
MimeException - on processing errors

field

void field(Field field)
           throws MimeException
Called for each field of a header.

Parameters:
field - the MIME field.
Throws:
MimeException - on processing errors

endHeader

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

Throws:
MimeException - on processing errors

preamble

void preamble(java.io.InputStream is)
              throws MimeException,
                     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:
MimeException - on processing errors
java.io.IOException - should be thrown on I/O errors.

epilogue

void epilogue(java.io.InputStream is)
              throws MimeException,
                     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:
MimeException - on processing errors
java.io.IOException - should be thrown on I/O errors.

startMultipart

void startMultipart(BodyDescriptor bd)
                    throws MimeException
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.
Throws:
MimeException - on processing errors

endMultipart

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

Throws:
MimeException - on processing errors

body

void body(BodyDescriptor bd,
          java.io.InputStream is)
          throws MimeException,
                 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:
MimeException - on processing errors
java.io.IOException - should be thrown on I/O errors.

raw

void raw(java.io.InputStream is)
         throws MimeException,
                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:
MimeException - on processing errors
java.io.IOException - should be thrown on I/O errors.
See Also:
MimeStreamParser.setRaw(boolean)


Copyright © 2004-2011. All Rights Reserved.