Class ActiveMQMapMessage
- All Implemented Interfaces:
jakarta.jms.MapMessage
,jakarta.jms.Message
,MessageReference
,Command
,DataStructure
,MarshallAware
,Message
,ScheduledMessage
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
Modifier and TypeFieldDescriptionstatic final byte
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, deliveryTime, 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 jakarta.jms.Message
DEFAULT_DELIVERY_DELAY, 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
beforeMarshall
(WireFormat wireFormat) void
Clears out the message body.void
void
compress()
copy()
protected <T> T
boolean
getBoolean
(String name) Returns theboolean
value with the specified name.byte
Returns thebyte
value with the specified name.byte[]
Returns the byte array value with the specified name.char
Returns the Unicode character value with the specified name.byte
double
Returns thedouble
value with the specified name.float
Returns thefloat
value with the specified name.int
Returns theint
value with the specified name.Returns the MIME type of this mesage.long
Returns thelong
value with the specified name.Returns anEnumeration
of all the names in theMapMessage
object.Returns the value of the object with the specified name.short
Returns theshort
value with the specified name.Returns theString
value with the specified name.boolean
boolean
boolean
itemExists
(String name) Indicates whether an item exists in thisMapMessage
object.protected void
protected Object
Initialize the transient fields at deserialization to get a normal state.void
setBoolean
(String name, boolean value) Sets aboolean
value with the specified name into the Map.void
Sets abyte
value with the specified name into the Map.void
Sets a byte array value with the specified name into the Map.void
Sets a portion of the byte array value with the specified name into the Map.void
Sets a Unicode character value with the specified name into the Map.void
Sets adouble
value with the specified name into the Map.void
Sets afloat
value with the specified name into the Map.void
Sets anint
value with the specified name into the Map.void
Sets along
value with the specified name into the Map.void
Sets an object value with the specified name into the Map.void
Sets ashort
value with the specified name into the Map.void
Sets aString
value with the specified name into the Map.void
void
toString()
Methods inherited from class org.apache.activemq.command.ActiveMQMessage
acknowledge, checkReadOnlyBody, checkReadOnlyProperties, checkValidObject, clearProperties, convertScheduled, copy, decodeString, encodeString, equals, getAcknowledgeCallback, getAllPropertyNames, getBody, getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDeliveryTime, 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, setJMSDeliveryTime, 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, canProcessAsExpired, 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, isMarshalled, isMessage, isPersistent, isPropertiesMarshalled, 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, isConsumerControl, 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 jakarta.jms.Message
acknowledge, clearProperties, getBody, getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDeliveryTime, getJMSDestination, getJMSExpiration, getJMSMessageID, getJMSPriority, getJMSRedelivered, getJMSReplyTo, getJMSTimestamp, getJMSType, getLongProperty, getObjectProperty, getPropertyNames, getShortProperty, getStringProperty, propertyExists, setBooleanProperty, setByteProperty, setDoubleProperty, setFloatProperty, setIntProperty, setJMSCorrelationID, setJMSCorrelationIDAsBytes, setJMSDeliveryMode, setJMSDeliveryTime, setJMSDestination, setJMSExpiration, setJMSMessageID, setJMSPriority, setJMSRedelivered, setJMSReplyTo, setJMSTimestamp, setJMSType, setLongProperty, setObjectProperty, setShortProperty, setStringProperty
-
Field Details
-
DATA_STRUCTURE_TYPE
public static final byte DATA_STRUCTURE_TYPE- See Also:
-
map
-
-
Constructor Details
-
ActiveMQMapMessage
public ActiveMQMapMessage()
-
-
Method Details
-
readResolve
Description copied from class:Message
Initialize the transient fields at deserialization to get a normal state.- Overrides:
readResolve
in classMessage
- Throws:
ObjectStreamException
- See Also:
-
copy
- Overrides:
copy
in classActiveMQMessage
-
beforeMarshall
- Specified by:
beforeMarshall
in interfaceMarshallAware
- Overrides:
beforeMarshall
in classMessage
- Throws:
IOException
-
clearUnMarshalledState
public void clearUnMarshalledState() throws jakarta.jms.JMSException- Overrides:
clearUnMarshalledState
in classMessage
- Throws:
jakarta.jms.JMSException
-
storeContentAndClear
public void storeContentAndClear()- Overrides:
storeContentAndClear
in classActiveMQMessage
-
storeContent
public void storeContent()- Overrides:
storeContent
in classActiveMQMessage
-
isContentMarshalled
public boolean isContentMarshalled()- Overrides:
isContentMarshalled
in classActiveMQMessage
-
getDataStructureType
public byte getDataStructureType()- Specified by:
getDataStructureType
in interfaceDataStructure
- Overrides:
getDataStructureType
in classActiveMQMessage
- Returns:
- The type of the data structure
-
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 ofBlobMessage
it allows you to create a selector on the MIME type of the BLOB body- Specified by:
getJMSXMimeType
in interfaceMessage
- Overrides:
getJMSXMimeType
in classActiveMQMessage
-
clearBody
public void clearBody() throws jakarta.jms.JMSExceptionClears 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 interfacejakarta.jms.Message
- Overrides:
clearBody
in classActiveMQMessage
- Throws:
jakarta.jms.JMSException
-
getBoolean
Returns theboolean
value with the specified name.- Specified by:
getBoolean
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theboolean
- Returns:
- the
boolean
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getByte
Returns thebyte
value with the specified name.- Specified by:
getByte
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thebyte
- Returns:
- the
byte
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getShort
Returns theshort
value with the specified name.- Specified by:
getShort
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theshort
- Returns:
- the
short
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getChar
Returns the Unicode character value with the specified name.- Specified by:
getChar
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of the Unicode character- Returns:
- the Unicode character value with the specified name
- Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getInt
Returns theint
value with the specified name.- Specified by:
getInt
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theint
- Returns:
- the
int
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getLong
Returns thelong
value with the specified name.- Specified by:
getLong
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thelong
- Returns:
- the
long
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getFloat
Returns thefloat
value with the specified name.- Specified by:
getFloat
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thefloat
- Returns:
- the
float
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getDouble
Returns thedouble
value with the specified name.- Specified by:
getDouble
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thedouble
- Returns:
- the
double
value with the specified name - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getString
Returns theString
value with the specified name.- Specified by:
getString
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theString
- Returns:
- the
String
value with the specified name; if there is no item by this name, a null value is returned - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getBytes
Returns the byte array value with the specified name.- Specified by:
getBytes
in interfacejakarta.jms.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:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.jakarta.jms.MessageFormatException
- if this type conversion is invalid.
-
getObject
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 primitiveset type
method.Note that byte values are returned as
byte[]
, notByte[]
.- Specified by:
getObject
in interfacejakarta.jms.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
, anInteger
is returned); if there is no item by this name, a null value is returned - Throws:
jakarta.jms.JMSException
- if the JMS provider fails to read the message due to some internal error.
-
getMapNames
Returns anEnumeration
of all the names in theMapMessage
object.- Specified by:
getMapNames
in interfacejakarta.jms.MapMessage
- Returns:
- an enumeration of all the names in this
MapMessage
- Throws:
jakarta.jms.JMSException
-
put
- Throws:
jakarta.jms.JMSException
-
setBoolean
Sets aboolean
value with the specified name into the Map.- Specified by:
setBoolean
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theboolean
value
- theboolean
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setByte
Sets abyte
value with the specified name into the Map.- Specified by:
setByte
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thebyte
value
- thebyte
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setShort
Sets ashort
value with the specified name into the Map.- Specified by:
setShort
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theshort
value
- theshort
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setChar
Sets a Unicode character value with the specified name into the Map.- Specified by:
setChar
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of the Unicode charactervalue
- the Unicode character value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setInt
Sets anint
value with the specified name into the Map.- Specified by:
setInt
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theint
value
- theint
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setLong
Sets along
value with the specified name into the Map.- Specified by:
setLong
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thelong
value
- thelong
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setFloat
Sets afloat
value with the specified name into the Map.- Specified by:
setFloat
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thefloat
value
- thefloat
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setDouble
Sets adouble
value with the specified name into the Map.- Specified by:
setDouble
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of thedouble
value
- thedouble
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setString
Sets aString
value with the specified name into the Map.- Specified by:
setString
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of theString
value
- theString
value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setBytes
Sets a byte array value with the specified name into the Map.- Specified by:
setBytes
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of the byte arrayvalue
- the byte array value to set in the Map; the array is copied so that the value forname
will not be altered by future modifications- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setBytes
public void setBytes(String name, byte[] value, int offset, int length) throws jakarta.jms.JMSException Sets a portion of the byte array value with the specified name into the Map.- Specified by:
setBytes
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of the byte arrayvalue
- the byte array value to set in the Mapoffset
- the initial offset within the byte arraylength
- the number of bytes to use- Throws:
jakarta.jms.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.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
setObject
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 interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of the Java objectvalue
- the Java object value to set in the Map- Throws:
jakarta.jms.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.jakarta.jms.MessageFormatException
- if the object is invalid.jakarta.jms.MessageNotWriteableException
- if the message is in read-only mode.
-
itemExists
Indicates whether an item exists in thisMapMessage
object.- Specified by:
itemExists
in interfacejakarta.jms.MapMessage
- Parameters:
name
- the name of the item to test- Returns:
- true if the item exists
- Throws:
jakarta.jms.JMSException
- if the JMS provider fails to determine if the item exists due to some internal error.
-
compress
- Overrides:
compress
in classMessage
- Throws:
IOException
-
toString
-
getContentMap
- Throws:
jakarta.jms.JMSException
-
isBodyAssignableTo
- Specified by:
isBodyAssignableTo
in interfacejakarta.jms.Message
- Overrides:
isBodyAssignableTo
in classActiveMQMessage
- Throws:
jakarta.jms.JMSException
-
doGetBody
- Overrides:
doGetBody
in classActiveMQMessage
- Throws:
jakarta.jms.JMSException
-