org.apache.activemq.command
Class ActiveMQMapMessage

java.lang.Object
  extended by org.apache.activemq.command.BaseCommand
      extended by org.apache.activemq.command.Message
          extended by org.apache.activemq.command.ActiveMQMessage
              extended by org.apache.activemq.command.ActiveMQMapMessage
All Implemented Interfaces:
MapMessage, Message, MessageReference, Command, DataStructure, MarshallAware, ScheduledMessage

public class ActiveMQMapMessage
extends ActiveMQMessage
implements MapMessage

A MapMessage object is used to send a set of name-value pairs. The names are String objects, and the values are primitive data types in the Java programming language. The names must have a value that is not null, and not an empty string. The entries can be accessed sequentially or randomly by name. The order of the entries is undefined. MapMessage inherits from the Message interface and adds a message body that contains a Map.

The primitive types can be read or written explicitly using methods for each type. They may also be read or written generically as objects. For instance, a call to MapMessage.setInt("foo", 6) is equivalent to MapMessage.setObject("foo", new Integer(6)). Both forms are provided, because the explicit form is convenient for static programming, and the object form is needed when types are not known at compile time.

When a client receives a MapMessage, it is in read-only mode. If a client attempts to write to the message at this point, a MessageNotWriteableException is thrown. If clearBody is called, the message can now be both read from and written to.

MapMessage objects support the following conversion table. The marked cases must be supported. The unmarked cases must throw a JMSException. The String -to-primitive conversions may throw a runtime exception if the primitive's valueOf() method does not accept it as a valid String representation of the primitive.

A value written as the row type can be read as the column type.

 | | boolean byte short char int long float double String byte[] |----------------------------------------------------------------------
 |boolean | X X |byte | X X X X X |short | X X X X |char | X X |int | X X X |long | X X |float | X X X |double | X X
 |String | X X X X X X X X |byte[] | X |----------------------------------------------------------------------
 <p/>
 

Attempting to read a null value as a primitive type must be treated as calling the primitive's corresponding valueOf(String) conversion method with a null value. Since char does not support a String conversion, attempting to read a null value as a char must throw a NullPointerException.

See Also:
Session.createMapMessage(), BytesMessage, Message, ObjectMessage, StreamMessage, TextMessage

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.activemq.command.Message
Message.MessageDestination
 
Field Summary
static byte DATA_STRUCTURE_TYPE
           
protected  Map<String,Object> map
           
 
Fields inherited from class org.apache.activemq.command.ActiveMQMessage
acknowledgeCallback, BROKER_PATH_PROPERTY, DLQ_DELIVERY_FAILURE_CAUSE_PROPERTY
 
Fields inherited from class org.apache.activemq.command.Message
arrival, brokerInTime, brokerOutTime, compressed, content, correlationId, dataStructure, DEFAULT_MINIMUM_MESSAGE_SIZE, destination, droppable, expiration, groupID, groupSequence, jmsXGroupFirstForConsumer, marshalledProperties, messageId, ORIGINAL_EXPIRATION, originalDestination, originalTransactionId, persistent, priority, producerId, properties, readOnlyBody, readOnlyProperties, recievedByDFBridge, redeliveryCounter, replyTo, size, targetConsumerId, timestamp, transactionId, type, userID
 
Fields inherited from class org.apache.activemq.command.BaseCommand
commandId, responseRequired
 
Fields inherited from interface javax.jms.Message
DEFAULT_DELIVERY_MODE, DEFAULT_PRIORITY, DEFAULT_TIME_TO_LIVE
 
Fields inherited from interface org.apache.activemq.ScheduledMessage
AMQ_SCHEDULED_CRON, AMQ_SCHEDULED_DELAY, AMQ_SCHEDULED_ID, AMQ_SCHEDULED_PERIOD, AMQ_SCHEDULED_REPEAT, AMQ_SCHEDULER_ACTION, AMQ_SCHEDULER_ACTION_BROWSE, AMQ_SCHEDULER_ACTION_END_TIME, AMQ_SCHEDULER_ACTION_REMOVE, AMQ_SCHEDULER_ACTION_REMOVEALL, AMQ_SCHEDULER_ACTION_START_TIME, AMQ_SCHEDULER_MANAGEMENT_DESTINATION
 
Constructor Summary
ActiveMQMapMessage()
           
 
Method Summary
 void beforeMarshall(WireFormat wireFormat)
           
 void clearBody()
          Clears out the message body.
 void clearMarshalledState()
           
 void compress()
           
 Message copy()
           
 boolean getBoolean(String name)
          Returns the boolean value with the specified name.
 byte getByte(String name)
          Returns the byte value with the specified name.
 byte[] getBytes(String name)
          Returns the byte array value with the specified name.
 char getChar(String name)
          Returns the Unicode character value with the specified name.
 Map<String,Object> getContentMap()
           
 byte getDataStructureType()
           
 double getDouble(String name)
          Returns the double value with the specified name.
 float getFloat(String name)
          Returns the float value with the specified name.
 int getInt(String name)
          Returns the int value with the specified name.
 String getJMSXMimeType()
          Returns the MIME type of this mesage.
 long getLong(String name)
          Returns the long value with the specified name.
 Enumeration<String> getMapNames()
          Returns an Enumeration of all the names in the MapMessage object.
 Object getObject(String name)
          Returns the value of the object with the specified name.
 short getShort(String name)
          Returns the short value with the specified name.
 String getString(String name)
          Returns the String value with the specified name.
 boolean itemExists(String name)
          Indicates whether an item exists in this MapMessage object.
protected  void put(String name, Object value)
           
 void setBoolean(String name, boolean value)
          Sets a boolean value with the specified name into the Map.
 void setByte(String name, byte value)
          Sets a byte value with the specified name into the Map.
 void setBytes(String name, byte[] value)
          Sets a byte array value with the specified name into the Map.
 void setBytes(String name, byte[] value, int offset, int length)
          Sets a portion of the byte array value with the specified name into the Map.
 void setChar(String name, char value)
          Sets a Unicode character value with the specified name into the Map.
 void setDouble(String name, double value)
          Sets a double value with the specified name into the Map.
 void setFloat(String name, float value)
          Sets a float value with the specified name into the Map.
 void setInt(String name, int value)
          Sets an int value with the specified name into the Map.
 void setLong(String name, long value)
          Sets a long value with the specified name into the Map.
 void setObject(String name, Object value)
          Sets an object value with the specified name into the Map.
 void setShort(String name, short value)
          Sets a short value with the specified name into the Map.
 void setString(String name, String value)
          Sets a String value with the specified name into the Map.
 void storeContent()
           
 void storeContentAndClear()
           
 String toString()
           
 
Methods inherited from class org.apache.activemq.command.ActiveMQMessage
acknowledge, checkReadOnlyBody, checkValidObject, checkValidScheduled, clearProperties, convertScheduled, copy, decodeString, encodeString, equals, getAcknowledgeCallback, getAllPropertyNames, getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDestination, getJMSExpiration, getJMSMessageID, getJMSPriority, getJMSRedelivered, getJMSReplyTo, getJMSTimestamp, getJMSType, getLongProperty, getObjectProperty, getPropertyNames, getShortProperty, getStringProperty, hashCode, onSend, propertyExists, setAcknowledgeCallback, setBooleanProperty, setBooleanProperty, setByteProperty, setDoubleProperty, setFloatProperty, setIntProperty, setJMSCorrelationID, setJMSCorrelationIDAsBytes, setJMSDeliveryMode, setJMSDestination, setJMSExpiration, setJMSMessageID, setJMSMessageID, setJMSPriority, setJMSRedelivered, setJMSReplyTo, setJMSTimestamp, setJMSType, setLongProperty, setObjectProperty, setObjectProperty, setProperties, setShortProperty, setStringProperty, visit
 
Methods inherited from class org.apache.activemq.command.Message
afterMarshall, afterUnmarshall, beforeUnmarshall, copy, decrementReferenceCount, doCompress, getArrival, getBrokerInTime, getBrokerOutTime, getBrokerPath, getCluster, getConnection, getContent, getCorrelationId, getDataStructure, getDestination, getExpiration, getGroupID, getGroupSequence, getMarshalledProperties, getMemoryUsage, getMessage, getMessageHardRef, getMessageId, getMinimumMessageSize, getOriginalDestination, getOriginalTransactionId, getPriority, getProducerId, getProperties, getProperty, getRedeliveryCounter, getReferenceCount, getRegionDestination, getReplyTo, getSize, getTargetConsumerId, getTimestamp, getTransactionId, getType, getUserID, incrementRedeliveryCounter, incrementReferenceCount, isAdvisory, isCompressed, isDroppable, isDropped, isExpired, isInTransaction, isJMSXGroupFirstForConsumer, isMarshallAware, isMessage, isPersistent, isReadOnlyBody, isReadOnlyProperties, isRecievedByDFBridge, isRedelivered, lazyCreateProperties, onMessageRolledBack, removeProperty, setArrival, setBrokerInTime, setBrokerOutTime, setBrokerPath, setCluster, setCompressed, setConnection, setContent, setCorrelationId, setDataStructure, setDestination, setDroppable, setExpiration, setGroupID, setGroupSequence, setJMSXGroupFirstForConsumer, setMarshalledProperties, setMemoryUsage, setMessageId, setOriginalDestination, setOriginalTransactionId, setPersistent, setPriority, setProducerId, setProperty, setReadOnlyBody, setReadOnlyProperties, setRecievedByDFBridge, setRedelivered, setRedeliveryCounter, setRegionDestination, setReplyTo, setTargetConsumerId, setTimestamp, setTransactionId, setType, setUserID, toString
 
Methods inherited from class org.apache.activemq.command.BaseCommand
copy, getCommandId, getFrom, getTo, isBrokerInfo, isConnectionControl, isMessageAck, isMessageDispatch, isMessageDispatchNotification, isResponse, isResponseRequired, isShutdownInfo, isWireFormatInfo, setCommandId, setFrom, setResponseRequired, setTo
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.jms.Message
acknowledge, clearProperties, getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDestination, getJMSExpiration, getJMSMessageID, getJMSPriority, getJMSRedelivered, getJMSReplyTo, getJMSTimestamp, getJMSType, getLongProperty, getObjectProperty, getPropertyNames, getShortProperty, getStringProperty, propertyExists, setBooleanProperty, setByteProperty, setDoubleProperty, setFloatProperty, setIntProperty, setJMSCorrelationID, setJMSCorrelationIDAsBytes, setJMSDeliveryMode, setJMSDestination, setJMSExpiration, setJMSMessageID, setJMSPriority, setJMSRedelivered, setJMSReplyTo, setJMSTimestamp, setJMSType, setLongProperty, setObjectProperty, setShortProperty, setStringProperty
 

Field Detail

DATA_STRUCTURE_TYPE

public static final byte DATA_STRUCTURE_TYPE
See Also:
Constant Field Values

map

protected transient Map<String,Object> map
Constructor Detail

ActiveMQMapMessage

public ActiveMQMapMessage()
Method Detail

copy

public Message copy()
Overrides:
copy in class ActiveMQMessage

beforeMarshall

public void beforeMarshall(WireFormat wireFormat)
                    throws IOException
Specified by:
beforeMarshall in interface MarshallAware
Overrides:
beforeMarshall in class Message
Throws:
IOException

clearMarshalledState

public void clearMarshalledState()
                          throws JMSException
Overrides:
clearMarshalledState in class Message
Throws:
JMSException

storeContentAndClear

public void storeContentAndClear()
Overrides:
storeContentAndClear in class ActiveMQMessage

storeContent

public void storeContent()
Overrides:
storeContent in class ActiveMQMessage

getDataStructureType

public byte getDataStructureType()
Specified by:
getDataStructureType in interface DataStructure
Overrides:
getDataStructureType in class ActiveMQMessage
Returns:
The type of the data structure

getJMSXMimeType

public String getJMSXMimeType()
Description copied from interface: Message
Returns the MIME type of this mesage. This can be used in selectors to filter on the MIME types of the different JMS messages, or in the case of BlobMessage it allows you to create a selector on the MIME type of the BLOB body

Overrides:
getJMSXMimeType in class ActiveMQMessage

clearBody

public void clearBody()
               throws JMSException
Clears out the message body. Clearing a message's body does not clear its header values or property entries.

If this message body was read-only, calling this method leaves the message body in the same state as an empty body in a newly created message.

Specified by:
clearBody in interface Message
Overrides:
clearBody in class ActiveMQMessage
Throws:
JMSException

getBoolean

public boolean getBoolean(String name)
                   throws JMSException
Returns the boolean value with the specified name.

Specified by:
getBoolean in interface MapMessage
Parameters:
name - the name of the boolean
Returns:
the boolean value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getByte

public byte getByte(String name)
             throws JMSException
Returns the byte value with the specified name.

Specified by:
getByte in interface MapMessage
Parameters:
name - the name of the byte
Returns:
the byte value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getShort

public short getShort(String name)
               throws JMSException
Returns the short value with the specified name.

Specified by:
getShort in interface MapMessage
Parameters:
name - the name of the short
Returns:
the short value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getChar

public char getChar(String name)
             throws JMSException
Returns the Unicode character value with the specified name.

Specified by:
getChar in interface MapMessage
Parameters:
name - the name of the Unicode character
Returns:
the Unicode character value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getInt

public int getInt(String name)
           throws JMSException
Returns the int value with the specified name.

Specified by:
getInt in interface MapMessage
Parameters:
name - the name of the int
Returns:
the int value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getLong

public long getLong(String name)
             throws JMSException
Returns the long value with the specified name.

Specified by:
getLong in interface MapMessage
Parameters:
name - the name of the long
Returns:
the long value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getFloat

public float getFloat(String name)
               throws JMSException
Returns the float value with the specified name.

Specified by:
getFloat in interface MapMessage
Parameters:
name - the name of the float
Returns:
the float value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getDouble

public double getDouble(String name)
                 throws JMSException
Returns the double value with the specified name.

Specified by:
getDouble in interface MapMessage
Parameters:
name - the name of the double
Returns:
the double value with the specified name
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getString

public String getString(String name)
                 throws JMSException
Returns the String value with the specified name.

Specified by:
getString in interface MapMessage
Parameters:
name - the name of the String
Returns:
the String value with the specified name; if there is no item by this name, a null value is returned
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getBytes

public byte[] getBytes(String name)
                throws JMSException
Returns the byte array value with the specified name.

Specified by:
getBytes in interface MapMessage
Parameters:
name - the name of the byte array
Returns:
a copy of the byte array value with the specified name; if there is no item by this name, a null value is returned.
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.
MessageFormatException - if this type conversion is invalid.

getObject

public Object getObject(String name)
                 throws JMSException
Returns the value of the object with the specified name.

This method can be used to return, in objectified format, an object in the Java programming language ("Java object") that had been stored in the Map with the equivalent setObject method call, or its equivalent primitive set type method.

Note that byte values are returned as byte[], not Byte[].

Specified by:
getObject in interface MapMessage
Parameters:
name - the name of the Java object
Returns:
a copy of the Java object value with the specified name, in objectified format (for example, if the object was set as an int, an Integer is returned); if there is no item by this name, a null value is returned
Throws:
JMSException - if the JMS provider fails to read the message due to some internal error.

getMapNames

public Enumeration<String> getMapNames()
                                throws JMSException
Returns an Enumeration of all the names in the MapMessage object.

Specified by:
getMapNames in interface MapMessage
Returns:
an enumeration of all the names in this MapMessage
Throws:
JMSException

put

protected void put(String name,
                   Object value)
            throws JMSException
Throws:
JMSException

setBoolean

public void setBoolean(String name,
                       boolean value)
                throws JMSException
Sets a boolean value with the specified name into the Map.

Specified by:
setBoolean in interface MapMessage
Parameters:
name - the name of the boolean
value - the boolean value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setByte

public void setByte(String name,
                    byte value)
             throws JMSException
Sets a byte value with the specified name into the Map.

Specified by:
setByte in interface MapMessage
Parameters:
name - the name of the byte
value - the byte value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setShort

public void setShort(String name,
                     short value)
              throws JMSException
Sets a short value with the specified name into the Map.

Specified by:
setShort in interface MapMessage
Parameters:
name - the name of the short
value - the short value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setChar

public void setChar(String name,
                    char value)
             throws JMSException
Sets a Unicode character value with the specified name into the Map.

Specified by:
setChar in interface MapMessage
Parameters:
name - the name of the Unicode character
value - the Unicode character value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setInt

public void setInt(String name,
                   int value)
            throws JMSException
Sets an int value with the specified name into the Map.

Specified by:
setInt in interface MapMessage
Parameters:
name - the name of the int
value - the int value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setLong

public void setLong(String name,
                    long value)
             throws JMSException
Sets a long value with the specified name into the Map.

Specified by:
setLong in interface MapMessage
Parameters:
name - the name of the long
value - the long value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setFloat

public void setFloat(String name,
                     float value)
              throws JMSException
Sets a float value with the specified name into the Map.

Specified by:
setFloat in interface MapMessage
Parameters:
name - the name of the float
value - the float value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setDouble

public void setDouble(String name,
                      double value)
               throws JMSException
Sets a double value with the specified name into the Map.

Specified by:
setDouble in interface MapMessage
Parameters:
name - the name of the double
value - the double value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setString

public void setString(String name,
                      String value)
               throws JMSException
Sets a String value with the specified name into the Map.

Specified by:
setString in interface MapMessage
Parameters:
name - the name of the String
value - the String value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setBytes

public void setBytes(String name,
                     byte[] value)
              throws JMSException
Sets a byte array value with the specified name into the Map.

Specified by:
setBytes in interface MapMessage
Parameters:
name - the name of the byte array
value - the byte array value to set in the Map; the array is copied so that the value for name will not be altered by future modifications
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
NullPointerException - if the name is null, or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setBytes

public void setBytes(String name,
                     byte[] value,
                     int offset,
                     int length)
              throws JMSException
Sets a portion of the byte array value with the specified name into the Map.

Specified by:
setBytes in interface MapMessage
Parameters:
name - the name of the byte array
value - the byte array value to set in the Map
offset - the initial offset within the byte array
length - the number of bytes to use
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageNotWriteableException - if the message is in read-only mode.

setObject

public void setObject(String name,
                      Object value)
               throws JMSException
Sets an object value with the specified name into the Map.

This method works only for the objectified primitive object types (Integer,Double, Long  ...), String objects, and byte arrays.

Specified by:
setObject in interface MapMessage
Parameters:
name - the name of the Java object
value - the Java object value to set in the Map
Throws:
JMSException - if the JMS provider fails to write the message due to some internal error.
IllegalArgumentException - if the name is null or if the name is an empty string.
MessageFormatException - if the object is invalid.
MessageNotWriteableException - if the message is in read-only mode.

itemExists

public boolean itemExists(String name)
                   throws JMSException
Indicates whether an item exists in this MapMessage object.

Specified by:
itemExists in interface MapMessage
Parameters:
name - the name of the item to test
Returns:
true if the item exists
Throws:
JMSException - if the JMS provider fails to determine if the item exists due to some internal error.

compress

public void compress()
              throws IOException
Overrides:
compress in class Message
Throws:
IOException

toString

public String toString()
Overrides:
toString in class Message

getContentMap

public Map<String,Object> getContentMap()
                                 throws JMSException
Throws:
JMSException


Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.