org.apache.james.core
Class MimeMessageWrapper

java.lang.Object
  |
  +--javax.mail.Message
        |
        +--javax.mail.internet.MimeMessage
              |
              +--org.apache.james.core.MimeMessageWrapper
All Implemented Interfaces:
javax.mail.internet.MimePart, javax.mail.Part

public class MimeMessageWrapper
extends javax.mail.internet.MimeMessage

This object wraps a MimeMessage, only loading the underlying MimeMessage object when needed. Also tracks if changes were made to reduce unnecessary saves.


Inner classes inherited from class javax.mail.internet.MimeMessage
javax.mail.internet.MimeMessage.RecipientType
 
Inner classes inherited from class javax.mail.Message
javax.mail.Message.RecipientType
 
Fields inherited from class javax.mail.internet.MimeMessage
content, contentStream, dh, flags, headers, modified, saved
 
Fields inherited from class javax.mail.Message
expunged, folder, msgnum, session
 
Fields inherited from interface javax.mail.Part
ATTACHMENT, INLINE
 
Constructor Summary
MimeMessageWrapper(MimeMessageSource source)
           
MimeMessageWrapper(javax.mail.Session session, MimeMessageSource source)
           
 
Method Summary
 void addFrom(javax.mail.Address[] addresses)
           
 void addHeader(java.lang.String name, java.lang.String value)
           
 void addHeaderLine(java.lang.String line)
           
 void addRecipients(javax.mail.Message.RecipientType type, javax.mail.Address[] addresses)
           
 void addRecipients(javax.mail.Message.RecipientType type, java.lang.String addresses)
           
 java.util.Enumeration getAllHeaderLines()
           
 java.util.Enumeration getAllHeaders()
           
 javax.mail.Address[] getAllRecipients()
           
 java.lang.Object getContent()
           
 java.lang.String getContentID()
           
 java.lang.String[] getContentLanguage()
           
 java.lang.String getContentMD5()
           
 java.lang.String getContentType()
           
 javax.activation.DataHandler getDataHandler()
           
 java.lang.String getDescription()
           
 java.lang.String getDisposition()
           
 java.lang.String getEncoding()
           
 java.lang.String getFileName()
           
 javax.mail.Flags getFlags()
           
 javax.mail.Address[] getFrom()
          Various reader methods
 java.lang.String[] getHeader(java.lang.String name)
           
 java.lang.String getHeader(java.lang.String name, java.lang.String delimiter)
           
 java.io.InputStream getInputStream()
           
 int getLineCount()
          Corrects JavaMail 1.1 version which always returns -1.
 java.util.Enumeration getMatchingHeaderLines(java.lang.String[] names)
           
 java.util.Enumeration getMatchingHeaders(java.lang.String[] names)
           
 java.lang.String getMessageID()
           
 long getMessageSize()
          Returns size of message, ie headers and content.
 java.util.Enumeration getNonMatchingHeaderLines(java.lang.String[] names)
           
 java.util.Enumeration getNonMatchingHeaders(java.lang.String[] names)
           
 java.io.InputStream getRawInputStream()
           
 java.util.Date getReceivedDate()
          We do not attempt to define the received date, although in theory this is the last most date in the Received: headers.
 javax.mail.Address[] getRecipients(javax.mail.Message.RecipientType type)
           
 javax.mail.Address[] getReplyTo()
           
 java.util.Date getSentDate()
           
 int getSize()
          This is the MimeMessage implementation - this should return ONLY the body, not the entire message (should not count headers).
 java.lang.String getSubject()
           
 boolean isMimeType(java.lang.String mimeType)
           
 boolean isModified()
          Special methods you can call
 boolean isSet(javax.mail.Flags.Flag flag)
           
 void removeHeader(java.lang.String name)
           
 javax.mail.Message reply(boolean replyToAll)
           
 void saveChanges()
           
 void setContent(javax.mail.Multipart mp)
           
 void setContent(java.lang.Object o, java.lang.String type)
           
 void setContentID(java.lang.String cid)
           
 void setContentLanguage(java.lang.String[] languages)
           
 void setContentMD5(java.lang.String md5)
           
 void setDataHandler(javax.activation.DataHandler dh)
           
 void setDescription(java.lang.String description)
           
 void setDescription(java.lang.String description, java.lang.String charset)
           
 void setDisposition(java.lang.String disposition)
           
 void setFileName(java.lang.String filename)
           
 void setFlags(javax.mail.Flags flag, boolean set)
           
 void setFrom()
           
 void setFrom(javax.mail.Address address)
           
 void setHeader(java.lang.String name, java.lang.String value)
           
 void setRecipients(javax.mail.Message.RecipientType type, javax.mail.Address[] addresses)
           
 void setRecipients(javax.mail.Message.RecipientType type, java.lang.String addresses)
           
 void setReplyTo(javax.mail.Address[] addresses)
           
 void setSentDate(java.util.Date d)
           
 void setSubject(java.lang.String subject)
           
 void setSubject(java.lang.String subject, java.lang.String charset)
           
 void setText(java.lang.String text)
           
 void setText(java.lang.String text, java.lang.String charset)
           
 void writeContentTo(java.io.OutputStream outs)
          Writes content only, ie not headers, to the specified outputstream.
static void writeTo(javax.mail.internet.MimeMessage message, java.io.OutputStream headerOs, java.io.OutputStream bodyOs)
          Convenience method to take any MimeMessage and write the headers and body to two different output streams
static void writeTo(javax.mail.internet.MimeMessage message, java.io.OutputStream headerOs, java.io.OutputStream bodyOs, java.lang.String[] ignoreList)
          Convenience method to take any MimeMessage and write the headers and body to two different output streams, with an ignore list
 void writeTo(java.io.OutputStream os)
          Rewritten for optimization purposes
 void writeTo(java.io.OutputStream headerOs, java.io.OutputStream bodyOs)
          Write
 void writeTo(java.io.OutputStream headerOs, java.io.OutputStream bodyOs, java.lang.String[] ignoreList)
           
 void writeTo(java.io.OutputStream os, java.lang.String[] ignoreList)
          Rewritten for optimization purposes
 
Methods inherited from class javax.mail.internet.MimeMessage
createInternetHeaders, getContentStream, parse, updateHeaders
 
Methods inherited from class javax.mail.Message
addRecipient, getFolder, getMessageNumber, isExpunged, match, setExpunged, setFlag, setMessageNumber, setRecipient
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MimeMessageWrapper

public MimeMessageWrapper(MimeMessageSource source)

MimeMessageWrapper

public MimeMessageWrapper(javax.mail.Session session,
                          MimeMessageSource source)
Method Detail

isModified

public boolean isModified()
Special methods you can call

writeTo

public void writeTo(java.io.OutputStream os)
             throws java.io.IOException,
                    javax.mail.MessagingException
Rewritten for optimization purposes
Overrides:
writeTo in class javax.mail.internet.MimeMessage

writeTo

public void writeTo(java.io.OutputStream os,
                    java.lang.String[] ignoreList)
             throws java.io.IOException,
                    javax.mail.MessagingException
Rewritten for optimization purposes
Overrides:
writeTo in class javax.mail.internet.MimeMessage

writeTo

public void writeTo(java.io.OutputStream headerOs,
                    java.io.OutputStream bodyOs)
             throws java.io.IOException,
                    javax.mail.MessagingException
Write

writeTo

public void writeTo(java.io.OutputStream headerOs,
                    java.io.OutputStream bodyOs,
                    java.lang.String[] ignoreList)
             throws java.io.IOException,
                    javax.mail.MessagingException

writeTo

public static void writeTo(javax.mail.internet.MimeMessage message,
                           java.io.OutputStream headerOs,
                           java.io.OutputStream bodyOs)
                    throws java.io.IOException,
                           javax.mail.MessagingException
Convenience method to take any MimeMessage and write the headers and body to two different output streams

writeTo

public static void writeTo(javax.mail.internet.MimeMessage message,
                           java.io.OutputStream headerOs,
                           java.io.OutputStream bodyOs,
                           java.lang.String[] ignoreList)
                    throws java.io.IOException,
                           javax.mail.MessagingException
Convenience method to take any MimeMessage and write the headers and body to two different output streams, with an ignore list

getFrom

public javax.mail.Address[] getFrom()
                             throws javax.mail.MessagingException
Various reader methods
Overrides:
getFrom in class javax.mail.internet.MimeMessage

getRecipients

public javax.mail.Address[] getRecipients(javax.mail.Message.RecipientType type)
                                   throws javax.mail.MessagingException
Overrides:
getRecipients in class javax.mail.internet.MimeMessage

getAllRecipients

public javax.mail.Address[] getAllRecipients()
                                      throws javax.mail.MessagingException
Overrides:
getAllRecipients in class javax.mail.internet.MimeMessage

getReplyTo

public javax.mail.Address[] getReplyTo()
                                throws javax.mail.MessagingException
Overrides:
getReplyTo in class javax.mail.internet.MimeMessage

getSubject

public java.lang.String getSubject()
                            throws javax.mail.MessagingException
Overrides:
getSubject in class javax.mail.internet.MimeMessage

getSentDate

public java.util.Date getSentDate()
                           throws javax.mail.MessagingException
Overrides:
getSentDate in class javax.mail.internet.MimeMessage

getReceivedDate

public java.util.Date getReceivedDate()
                               throws javax.mail.MessagingException
We do not attempt to define the received date, although in theory this is the last most date in the Received: headers. For now we return null, which means we are not implementing it.
Overrides:
getReceivedDate in class javax.mail.internet.MimeMessage

getSize

public int getSize()
            throws javax.mail.MessagingException
This is the MimeMessage implementation - this should return ONLY the body, not the entire message (should not count headers). Will have to parse the message.
Overrides:
getSize in class javax.mail.internet.MimeMessage

getLineCount

public int getLineCount()
                 throws javax.mail.MessagingException
Corrects JavaMail 1.1 version which always returns -1. Only corrected for content less than 5000 bytes, to avoid memory hogging.
Overrides:
getLineCount in class javax.mail.internet.MimeMessage

getMessageSize

public long getMessageSize()
                    throws javax.mail.MessagingException
Returns size of message, ie headers and content. Current implementation actually returns number of characters in headers plus number of bytes in the internal content byte array.

getContentType

public java.lang.String getContentType()
                                throws javax.mail.MessagingException
Overrides:
getContentType in class javax.mail.internet.MimeMessage

isMimeType

public boolean isMimeType(java.lang.String mimeType)
                   throws javax.mail.MessagingException
Overrides:
isMimeType in class javax.mail.internet.MimeMessage

getDisposition

public java.lang.String getDisposition()
                                throws javax.mail.MessagingException
Overrides:
getDisposition in class javax.mail.internet.MimeMessage

getEncoding

public java.lang.String getEncoding()
                             throws javax.mail.MessagingException
Overrides:
getEncoding in class javax.mail.internet.MimeMessage

getContentID

public java.lang.String getContentID()
                              throws javax.mail.MessagingException
Overrides:
getContentID in class javax.mail.internet.MimeMessage

getContentMD5

public java.lang.String getContentMD5()
                               throws javax.mail.MessagingException
Overrides:
getContentMD5 in class javax.mail.internet.MimeMessage

getDescription

public java.lang.String getDescription()
                                throws javax.mail.MessagingException
Overrides:
getDescription in class javax.mail.internet.MimeMessage

getContentLanguage

public java.lang.String[] getContentLanguage()
                                      throws javax.mail.MessagingException
Overrides:
getContentLanguage in class javax.mail.internet.MimeMessage

getMessageID

public java.lang.String getMessageID()
                              throws javax.mail.MessagingException
Overrides:
getMessageID in class javax.mail.internet.MimeMessage

getFileName

public java.lang.String getFileName()
                             throws javax.mail.MessagingException
Overrides:
getFileName in class javax.mail.internet.MimeMessage

getInputStream

public java.io.InputStream getInputStream()
                                   throws java.io.IOException,
                                          javax.mail.MessagingException
Overrides:
getInputStream in class javax.mail.internet.MimeMessage

getDataHandler

public javax.activation.DataHandler getDataHandler()
                                            throws javax.mail.MessagingException
Overrides:
getDataHandler in class javax.mail.internet.MimeMessage

getContent

public java.lang.Object getContent()
                            throws java.io.IOException,
                                   javax.mail.MessagingException
Overrides:
getContent in class javax.mail.internet.MimeMessage

getHeader

public java.lang.String[] getHeader(java.lang.String name)
                             throws javax.mail.MessagingException
Overrides:
getHeader in class javax.mail.internet.MimeMessage

getHeader

public java.lang.String getHeader(java.lang.String name,
                                  java.lang.String delimiter)
                           throws javax.mail.MessagingException
Overrides:
getHeader in class javax.mail.internet.MimeMessage

getAllHeaders

public java.util.Enumeration getAllHeaders()
                                    throws javax.mail.MessagingException
Overrides:
getAllHeaders in class javax.mail.internet.MimeMessage

getMatchingHeaders

public java.util.Enumeration getMatchingHeaders(java.lang.String[] names)
                                         throws javax.mail.MessagingException
Overrides:
getMatchingHeaders in class javax.mail.internet.MimeMessage

getNonMatchingHeaders

public java.util.Enumeration getNonMatchingHeaders(java.lang.String[] names)
                                            throws javax.mail.MessagingException
Overrides:
getNonMatchingHeaders in class javax.mail.internet.MimeMessage

getAllHeaderLines

public java.util.Enumeration getAllHeaderLines()
                                        throws javax.mail.MessagingException
Overrides:
getAllHeaderLines in class javax.mail.internet.MimeMessage

getMatchingHeaderLines

public java.util.Enumeration getMatchingHeaderLines(java.lang.String[] names)
                                             throws javax.mail.MessagingException
Overrides:
getMatchingHeaderLines in class javax.mail.internet.MimeMessage

getNonMatchingHeaderLines

public java.util.Enumeration getNonMatchingHeaderLines(java.lang.String[] names)
                                                throws javax.mail.MessagingException
Overrides:
getNonMatchingHeaderLines in class javax.mail.internet.MimeMessage

getFlags

public javax.mail.Flags getFlags()
                          throws javax.mail.MessagingException
Overrides:
getFlags in class javax.mail.internet.MimeMessage

isSet

public boolean isSet(javax.mail.Flags.Flag flag)
              throws javax.mail.MessagingException
Overrides:
isSet in class javax.mail.internet.MimeMessage

writeContentTo

public void writeContentTo(java.io.OutputStream outs)
                    throws java.io.IOException,
                           javax.mail.MessagingException
Writes content only, ie not headers, to the specified outputstream.

setFrom

public void setFrom(javax.mail.Address address)
             throws javax.mail.MessagingException
Overrides:
setFrom in class javax.mail.internet.MimeMessage

setFrom

public void setFrom()
             throws javax.mail.MessagingException
Overrides:
setFrom in class javax.mail.internet.MimeMessage

addFrom

public void addFrom(javax.mail.Address[] addresses)
             throws javax.mail.MessagingException
Overrides:
addFrom in class javax.mail.internet.MimeMessage

setRecipients

public void setRecipients(javax.mail.Message.RecipientType type,
                          javax.mail.Address[] addresses)
                   throws javax.mail.MessagingException
Overrides:
setRecipients in class javax.mail.internet.MimeMessage

addRecipients

public void addRecipients(javax.mail.Message.RecipientType type,
                          javax.mail.Address[] addresses)
                   throws javax.mail.MessagingException
Overrides:
addRecipients in class javax.mail.internet.MimeMessage

setReplyTo

public void setReplyTo(javax.mail.Address[] addresses)
                throws javax.mail.MessagingException
Overrides:
setReplyTo in class javax.mail.internet.MimeMessage

setSubject

public void setSubject(java.lang.String subject)
                throws javax.mail.MessagingException
Overrides:
setSubject in class javax.mail.internet.MimeMessage

setSubject

public void setSubject(java.lang.String subject,
                       java.lang.String charset)
                throws javax.mail.MessagingException
Overrides:
setSubject in class javax.mail.internet.MimeMessage

setSentDate

public void setSentDate(java.util.Date d)
                 throws javax.mail.MessagingException
Overrides:
setSentDate in class javax.mail.internet.MimeMessage

setDisposition

public void setDisposition(java.lang.String disposition)
                    throws javax.mail.MessagingException
Overrides:
setDisposition in class javax.mail.internet.MimeMessage

setContentID

public void setContentID(java.lang.String cid)
                  throws javax.mail.MessagingException
Overrides:
setContentID in class javax.mail.internet.MimeMessage

setContentMD5

public void setContentMD5(java.lang.String md5)
                   throws javax.mail.MessagingException
Overrides:
setContentMD5 in class javax.mail.internet.MimeMessage

setDescription

public void setDescription(java.lang.String description)
                    throws javax.mail.MessagingException
Overrides:
setDescription in class javax.mail.internet.MimeMessage

setDescription

public void setDescription(java.lang.String description,
                           java.lang.String charset)
                    throws javax.mail.MessagingException
Overrides:
setDescription in class javax.mail.internet.MimeMessage

setContentLanguage

public void setContentLanguage(java.lang.String[] languages)
                        throws javax.mail.MessagingException
Overrides:
setContentLanguage in class javax.mail.internet.MimeMessage

setFileName

public void setFileName(java.lang.String filename)
                 throws javax.mail.MessagingException
Overrides:
setFileName in class javax.mail.internet.MimeMessage

setDataHandler

public void setDataHandler(javax.activation.DataHandler dh)
                    throws javax.mail.MessagingException
Overrides:
setDataHandler in class javax.mail.internet.MimeMessage

setContent

public void setContent(java.lang.Object o,
                       java.lang.String type)
                throws javax.mail.MessagingException
Overrides:
setContent in class javax.mail.internet.MimeMessage

setText

public void setText(java.lang.String text)
             throws javax.mail.MessagingException
Overrides:
setText in class javax.mail.internet.MimeMessage

setText

public void setText(java.lang.String text,
                    java.lang.String charset)
             throws javax.mail.MessagingException
Overrides:
setText in class javax.mail.internet.MimeMessage

setContent

public void setContent(javax.mail.Multipart mp)
                throws javax.mail.MessagingException
Overrides:
setContent in class javax.mail.internet.MimeMessage

reply

public javax.mail.Message reply(boolean replyToAll)
                         throws javax.mail.MessagingException
Overrides:
reply in class javax.mail.internet.MimeMessage

setHeader

public void setHeader(java.lang.String name,
                      java.lang.String value)
               throws javax.mail.MessagingException
Overrides:
setHeader in class javax.mail.internet.MimeMessage

addHeader

public void addHeader(java.lang.String name,
                      java.lang.String value)
               throws javax.mail.MessagingException
Overrides:
addHeader in class javax.mail.internet.MimeMessage

removeHeader

public void removeHeader(java.lang.String name)
                  throws javax.mail.MessagingException
Overrides:
removeHeader in class javax.mail.internet.MimeMessage

addHeaderLine

public void addHeaderLine(java.lang.String line)
                   throws javax.mail.MessagingException
Overrides:
addHeaderLine in class javax.mail.internet.MimeMessage

setFlags

public void setFlags(javax.mail.Flags flag,
                     boolean set)
              throws javax.mail.MessagingException
Overrides:
setFlags in class javax.mail.internet.MimeMessage

saveChanges

public void saveChanges()
                 throws javax.mail.MessagingException
Overrides:
saveChanges in class javax.mail.internet.MimeMessage

getRawInputStream

public java.io.InputStream getRawInputStream()
                                      throws javax.mail.MessagingException
Overrides:
getRawInputStream in class javax.mail.internet.MimeMessage

addRecipients

public void addRecipients(javax.mail.Message.RecipientType type,
                          java.lang.String addresses)
                   throws javax.mail.MessagingException
Overrides:
addRecipients in class javax.mail.internet.MimeMessage

setRecipients

public void setRecipients(javax.mail.Message.RecipientType type,
                          java.lang.String addresses)
                   throws javax.mail.MessagingException
Overrides:
setRecipients in class javax.mail.internet.MimeMessage


"Copyright © 2001 Apache Jakarta Project. All Rights Reserved."