org.mule.transport.email
Class SimpleMailMessageAdapter

java.lang.Object
  extended by org.mule.transport.AbstractMessageAdapter
      extended by org.mule.transport.email.SimpleMailMessageAdapter
All Implemented Interfaces:
Serializable, ThreadSafeAccess, MessageAdapter
Direct Known Subclasses:
MailMessageAdapter

public class SimpleMailMessageAdapter
extends AbstractMessageAdapter

SimpleMailMessageAdapter is an adapter for mail messages. Unlike MailMessageAdapter this preserves the message intact in its original form.

Header values are stored in two formats. First, as historically used by MailMessageAdapter, a single String value is stored for each distinct header name (if a header is repeated only one value is stored). Secondly, a list of values for each distinct header is stored in a property name prefixed by HEADER_LIST_PREFIX (which produces an invalid header name according to RFC 822 and so (i) avoids conflict with the first property type and (ii) will cause current applications that wrongly assume all properties are simple header values to fail fast). The utility methods isListHeader(String), toHeader(String) and toListHeader(String) identify and convert between property and header names as required.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.mule.api.ThreadSafeAccess
ThreadSafeAccess.AccessControl
 
Field Summary
static String HEADER_LIST_PREFIX
           
 
Fields inherited from class org.mule.transport.AbstractMessageAdapter
attachments, exceptionPayload, id, logger, properties
 
Fields inherited from interface org.mule.api.ThreadSafeAccess
READ, WRITE
 
Constructor Summary
  SimpleMailMessageAdapter(Object object)
           
protected SimpleMailMessageAdapter(SimpleMailMessageAdapter template)
           
 
Method Summary
 Object getPayload()
           
 byte[] getPayloadAsBytes()
           
 String getPayloadAsString(String encoding)
           
protected  void handleMessage(Message message)
          By default, this simply stores the entire message as a single message.
static boolean isListHeader(String name)
          Check whether a property name has the format associated with a list of header values
 ThreadSafeAccess newThreadCopy()
          
protected  void setMessage(Part message)
           
static String toHeader(String name)
          Convert a property name associated with a list of header values to the relevant header name (ie drop the prefix)
static String toListHeader(String header)
          Convert a header name to the property name associated with a list of header values (ie prepend the prefix)
 
Methods inherited from class org.mule.transport.AbstractMessageAdapter
addAttachment, addInboundProperties, addProperties, addProperties, assertAccess, clearProperties, getAttachment, getAttachmentNames, getBooleanProperty, getCorrelationGroupSize, getCorrelationId, getCorrelationSequence, getDoubleProperty, getEncoding, getExceptionPayload, getIntProperty, getLongProperty, getProperty, getProperty, getProperty, getPropertyNames, getPropertyNames, getReplyTo, getStringProperty, getUniqueId, isDisabled, newException, release, removeAttachment, removeProperty, resetAccessControl, setBooleanProperty, setCorrelationGroupSize, setCorrelationId, setCorrelationSequence, setDoubleProperty, setEncoding, setExceptionPayload, setIntProperty, setLongProperty, setProperty, setProperty, setReplyTo, setStringProperty, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

HEADER_LIST_PREFIX

public static final String HEADER_LIST_PREFIX
See Also:
Constant Field Values
Constructor Detail

SimpleMailMessageAdapter

public SimpleMailMessageAdapter(Object object)
                         throws MessagingException
Throws:
MessagingException

SimpleMailMessageAdapter

protected SimpleMailMessageAdapter(SimpleMailMessageAdapter template)
Method Detail

handleMessage

protected void handleMessage(Message message)
                      throws Exception
By default, this simply stores the entire message as a single message. Sub-classes may override with more complex processing.

Throws:
Exception

setMessage

protected void setMessage(Part message)

getPayload

public Object getPayload()
Returns:
the current message

getPayloadAsBytes

public byte[] getPayloadAsBytes()
                         throws Exception
Throws:
Exception

getPayloadAsString

public String getPayloadAsString(String encoding)
                          throws Exception
Throws:
Exception

isListHeader

public static boolean isListHeader(String name)
Check whether a property name has the format associated with a list of header values

Parameters:
name - A property name
Returns:
true if the name is associated with a list of header values (more exactly, if it starts with HEADER_LIST_PREFIX, which gives an invalid header name according to RFC822).

toHeader

public static String toHeader(String name)
Convert a property name associated with a list of header values to the relevant header name (ie drop the prefix)

Parameters:
name - A property name
Returns:
The associated header name (ie with HEADER_LIST_PREFIX removed)

toListHeader

public static String toListHeader(String header)
Convert a header name to the property name associated with a list of header values (ie prepend the prefix)

Parameters:
header - A header name
Returns:
The associated list property name (ie with HEADER_LIST_PREFIX prepended)

newThreadCopy

public ThreadSafeAccess newThreadCopy()
Description copied from class: AbstractMessageAdapter

Specified by:
newThreadCopy in interface ThreadSafeAccess
Overrides:
newThreadCopy in class AbstractMessageAdapter
Returns:
A new instance of the implementing class, unbound to any thread and mutable.


Copyright © 2003-2009 MuleSource, Inc.. All Rights Reserved.