Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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.

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()
                      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(java.lang.String fieldData)
               throws MimeException

  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.
  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)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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