net.sf.dropboxmq.messagetranscoders
Class DefaultMessageTranscoder
java.lang.Object
net.sf.dropboxmq.messagetranscoders.DefaultMessageTranscoder
- All Implemented Interfaces:
- MessageTranscoder
public class DefaultMessageTranscoder
- extends Object
- implements MessageTranscoder
Created: 02 Dec 2005
- Version:
- $Revision: 231 $, $Date: 2011-08-12 21:50:47 -0600 (Fri, 12 Aug 2011) $
- Author:
- Dwayne Schultz
Method Summary |
protected void |
appendProperty(String name,
Object value,
StringBuffer properties)
|
static MessageImpl |
createMessage(SessionImpl session,
String messageClass)
|
static String |
decode(String in)
|
Message |
decodeMetadata(SessionImpl session,
File messageFile,
String originalFilename,
boolean priorityAndSelectorOnly,
String messageSelector)
Decodes the provided metadata and creates a new emtpy message. |
protected void |
decodeProperties(String properties,
Message message)
|
protected void |
decodeProperty(String pair,
Message message)
|
static String |
encode(String in)
|
static String |
encodeMessageClass(Message message)
|
String |
encodeMetadata(Message message)
Encodes the metadata of a given message. |
protected String |
encodeProperties(Message message)
|
protected String |
getEncodedProperties(StringBuffer encodedProperties)
Allows subclasses to use the default property encoding mechanism with a post-encoding mechanism. |
(package private) static String |
getNextToken(String metadata,
int index)
|
(package private) static long |
parseNumber(String numberString,
long defaultNumber)
|
(package private) static void |
setProperty(String name,
char type,
String value,
Message message)
|
protected String |
toObjectString()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
MESSAGE_ID_PREFIX
public static final String MESSAGE_ID_PREFIX
- See Also:
- Constant Field Values
BOOLEAN_TYPE
public static final char BOOLEAN_TYPE
- See Also:
- Constant Field Values
BYTE_TYPE
public static final char BYTE_TYPE
- See Also:
- Constant Field Values
SHORT_TYPE
public static final char SHORT_TYPE
- See Also:
- Constant Field Values
INTEGER_TYPE
public static final char INTEGER_TYPE
- See Also:
- Constant Field Values
LONG_TYPE
public static final char LONG_TYPE
- See Also:
- Constant Field Values
FLOAT_TYPE
public static final char FLOAT_TYPE
- See Also:
- Constant Field Values
DOUBLE_TYPE
public static final char DOUBLE_TYPE
- See Also:
- Constant Field Values
STRING_TYPE
public static final char STRING_TYPE
- See Also:
- Constant Field Values
FIELD_SEPARATOR
public static final String FIELD_SEPARATOR
- See Also:
- Constant Field Values
PROPERTY_SEPARATOR
public static final String PROPERTY_SEPARATOR
- See Also:
- Constant Field Values
EQUALS_SEPARATOR
public static final String EQUALS_SEPARATOR
- See Also:
- Constant Field Values
MESSAGE_CLASS
public static final String MESSAGE_CLASS
- See Also:
- Constant Field Values
BYTES_MESSAGE_CLASS
public static final String BYTES_MESSAGE_CLASS
- See Also:
- Constant Field Values
MAP_MESSAGE_CLASS
public static final String MAP_MESSAGE_CLASS
- See Also:
- Constant Field Values
OBJECT_MESSAGE_CLASS
public static final String OBJECT_MESSAGE_CLASS
- See Also:
- Constant Field Values
STREAM_MESSAGE_CLASS
public static final String STREAM_MESSAGE_CLASS
- See Also:
- Constant Field Values
TEXT_MESSAGE_CLASS
public static final String TEXT_MESSAGE_CLASS
- See Also:
- Constant Field Values
QUEUE_DESTINATION_CLASS
public static final char QUEUE_DESTINATION_CLASS
- See Also:
- Constant Field Values
TOPIC_DESTINATION_CLASS
public static final char TOPIC_DESTINATION_CLASS
- See Also:
- Constant Field Values
DefaultMessageTranscoder
public DefaultMessageTranscoder(Configuration configuration)
encode
public static String encode(String in)
throws JMSException
- Throws:
JMSException
decode
public static String decode(String in)
throws JMSException
- Throws:
JMSException
encodeMetadata
public String encodeMetadata(Message message)
throws JMSException
- Description copied from interface:
MessageTranscoder
- Encodes the metadata of a given message. The metadata is used to name the message file.
- Specified by:
encodeMetadata
in interface MessageTranscoder
- Parameters:
message
- the message that is being sent
- Returns:
- a string representation of the messages metadata
- Throws:
JMSException
- if the transcoder fails to encode the metadata contained in the message. Such an exception
or any RuntimeException will cause the message to not be sent.
encodeMessageClass
public static String encodeMessageClass(Message message)
encodeProperties
protected String encodeProperties(Message message)
throws JMSException
- Throws:
JMSException
appendProperty
protected void appendProperty(String name,
Object value,
StringBuffer properties)
throws JMSException
- Throws:
JMSException
getEncodedProperties
protected String getEncodedProperties(StringBuffer encodedProperties)
throws JMSException
- Allows subclasses to use the default property encoding mechanism with a post-encoding mechanism. Subclasses can
override this method to implement such as post-encoding mechanism. The
DefaultMessageTranscoder
implementation simply calls encodedProperties.toString()
.
- Parameters:
encodedProperties
- a StringBuffer
version of the encoded properties
- Returns:
- a
String
version of the encoded properties
- Throws:
JMSException
- if for any reason the properties fail in the post-encoding mechanism. Will cause outgoing
messages to not be sent and incoming messages will not have properties.
decodeMetadata
public Message decodeMetadata(SessionImpl session,
File messageFile,
String originalFilename,
boolean priorityAndSelectorOnly,
String messageSelector)
throws IOException
- Description copied from interface:
MessageTranscoder
- Decodes the provided metadata and creates a new emtpy message.
- Specified by:
decodeMetadata
in interface MessageTranscoder
- Parameters:
session
- a session that should be used to create a new message that will contain the metadata after it
has been decodedmessageFile
- the message file containing metadata to be decodedoriginalFilename
- the original name of the file as it was produced. The name returned by
messageFile.getName() has been modified from the original. If a transcoder needs to decode metadata from the
message filename, this parameter should be used.priorityAndSelectorOnly
- decodeMetadata() is called twice, first for determining priority and applying
any message selectors, and second as a message is consumed; careful transcoders can apply some optimizations to
the first call when this value will be set to truemessageSelector
- the message selector to be applied to the message. May be used to further optimize the
decoding process. If priorityAndSelectorOnly is true and messageSelector is null, transcoders can safely decode
the JMS priority and JMS timestamp only. If priorityAndSelectorOnly is true, messageSelector does not contain
a specific selection and the decoding of metadata to support the specific selection is costly, transcoders can
safely skip the decoding of the specific selection. For instance perhaps decoding the JMS type (@see
javax.jms.Message#getJMSType()) requires parsing the message body. A transcoder may scan the message for
JMSType and if priorityAndSelectorOnly is true and messageSelector does not contain JMSType, the transcoder can
safely choose to not parse the message body.
- Returns:
- the newly created message
- Throws:
IOException
- if the transcoder encounters any problems reading the message file, the exception should be
passed up to the caller
getNextToken
static String getNextToken(String metadata,
int index)
createMessage
public static MessageImpl createMessage(SessionImpl session,
String messageClass)
throws JMSException
- Throws:
JMSException
parseNumber
static long parseNumber(String numberString,
long defaultNumber)
decodeProperties
protected void decodeProperties(String properties,
Message message)
throws JMSException
- Throws:
JMSException
decodeProperty
protected void decodeProperty(String pair,
Message message)
throws JMSException
- Throws:
JMSException
setProperty
static void setProperty(String name,
char type,
String value,
Message message)
throws JMSException
- Throws:
JMSException
toObjectString
protected final String toObjectString()