Class MIMEPart

java.lang.Object
org.jvnet.mimepull.MIMEPart
All Implemented Interfaces:
Closeable, AutoCloseable

public class MIMEPart extends Object implements Closeable
Represents an attachment part in a MIME message. MIME message parsing is done lazily using a pull parser, so the part may not have all the data. read() and readOnce() may trigger the actual parsing the message. In fact, parsing of an attachment part may be triggered by calling read() methods on some other attachment parts. All this happens behind the scenes so the application developer need not worry about these details.
  • Field Details

    • LOGGER

      private static final Logger LOGGER
    • closed

      private volatile boolean closed
    • headers

      private volatile InternetHeaders headers
    • contentId

      private volatile String contentId
    • contentType

      private String contentType
    • contentTransferEncoding

      private String contentTransferEncoding
    • parsed

      volatile boolean parsed
    • msg

      final MIMEMessage msg
    • dataHead

      private final DataHead dataHead
    • lock

      private final Object lock
  • Constructor Details

  • Method Details

    • read

      public InputStream read()
      Can get the attachment part's content multiple times. That means the full content needs to be there in memory or on the file system. Calling this method would trigger parsing for the part's data. So do not call this unless it is required(otherwise, just wrap MIMEPart into a object that returns InputStream for e.g DataHandler)
      Returns:
      data for the part's content
    • close

      public void close()
      Cleans up any resources that are held by this part (for e.g. deletes the temp file that is used to serve this part's content). After calling this, one shouldn't call read() or readOnce()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • readOnce

      public InputStream readOnce()
      Can get the attachment part's content only once. The content will be lost after the method. Content data is not be stored on the file system or is not kept in the memory for the following case: - Attachement parts contents are accessed sequentially In general, take advantage of this when the data is used only once.
      Returns:
      data for the part's content
    • moveTo

      public void moveTo(File f)
      Send the content to the File
      Parameters:
      f - file to store the content
    • getContentId

      public String getContentId()
      Returns Content-ID MIME header for this attachment part
      Returns:
      Content-ID of the part
    • getContentTransferEncoding

      public String getContentTransferEncoding()
      Returns Content-Transfer-Encoding MIME header for this attachment part
      Returns:
      Content-Transfer-Encoding of the part
    • getContentType

      public String getContentType()
      Returns Content-Type MIME header for this attachment part
      Returns:
      Content-Type of the part
    • getHeaders

      private void getHeaders()
    • getHeader

      public List<String> getHeader(String name)
      Return all the values for the specified header. Returns null if no headers with the specified name exist.
      Parameters:
      name - header name
      Returns:
      list of header values, or null if none
    • getAllHeaders

      public List<? extends Header> getAllHeaders()
      Return all the headers
      Returns:
      list of Header objects
    • setHeaders

      void setHeaders(InternetHeaders headers)
      Callback to set headers
      Parameters:
      headers - MIME headers for the part
    • addBody

      void addBody(ByteBuffer buf)
      Callback to notify that there is a partial content for the part
      Parameters:
      buf - content data for the part
    • doneParsing

      void doneParsing()
      Callback to indicate that parsing is done for this part (no more update events for this part)
    • setContentId

      void setContentId(String cid)
      Callback to set Content-ID for this part
      Parameters:
      cid - Content-ID of the part
    • setContentTransferEncoding

      void setContentTransferEncoding(String cte)
      Callback to set Content-Transfer-Encoding for this part
      Parameters:
      cte - Content-Transfer-Encoding of the part
    • isClosed

      public boolean isClosed()
      Return true if this part has already been closed, false otherwise.
      Returns:
      true if this part has already been closed, false otherwise.
    • toString

      public String toString()
      Overrides:
      toString in class Object