javax.jms

## Interface MapMessage

All Superinterfaces:
  Message

    public interface MapMessage
    extends Message

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
     |----------------------------------------------------------------------

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`

### Field Summary

### Fields inherited from interface javax.jms.Message

`DEFAULT_DELIVERY_MODE, DEFAULT_PRIORITY, DEFAULT_TIME_TO_LIVE`

### Method Summary

Methods
`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.
`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.
`long` `getLong(String name)` Returns the `long` value with the specified name.
`Enumeration` `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.
`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.

### Methods inherited from interface javax.jms.Message

`acknowledge, clearBody, 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`

### Method Detail

#### getBoolean

    boolean getBoolean(String name)
                       throws JMSException

Returns the `boolean` value with the specified name.

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

    byte getByte(String name)
                 throws JMSException

Returns the `byte` value with the specified name.

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

    short getShort(String name)
                   throws JMSException

Returns the `short` value with the specified name.

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

    char getChar(String name)
                 throws JMSException

Returns the Unicode character value with the specified name.

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

    int getInt(String name)
               throws JMSException

Returns the `int` value with the specified name.

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

    long getLong(String name)
                 throws JMSException

Returns the `long` value with the specified name.

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

    float getFloat(String name)
                   throws JMSException

Returns the `float` value with the specified name.

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

    double getDouble(String name)
                     throws JMSException

Returns the `double` value with the specified name.

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

    String getString(String name)
                     throws JMSException

Returns the `String` value with the specified name.

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

    byte[] getBytes(String name)
                    throws JMSException

Returns the byte array value with the specified name.

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

    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 `settype` method.

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

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

    Enumeration getMapNames()
                            throws JMSException

Returns an `Enumeration` of all the names in the `MapMessage` object.

Returns:
  an enumeration of all the names in this `MapMessage`
Throws:
  `JMSException` - if the JMS provider fails to read the message due to some internal error.

#### setBoolean

    void setBoolean(String name,
                  boolean value)
                    throws JMSException

Sets a `boolean` value with the specified name into the Map.

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

    void setByte(String name,
               byte value)
                 throws JMSException

Sets a `byte` value with the specified name into the Map.

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

    void setShort(String name,
                short value)
                  throws JMSException

Sets a `short` value with the specified name into the Map.

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

    void setChar(String name,
               char value)
                 throws JMSException

Sets a Unicode character value with the specified name into the Map.

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

    void setInt(String name,
              int value)
                throws JMSException

Sets an `int` value with the specified name into the Map.

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

    void setLong(String name,
               long value)
                 throws JMSException

Sets a `long` value with the specified name into the Map.

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

    void setFloat(String name,
                float value)
                  throws JMSException

Sets a `float` value with the specified name into the Map.

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

    void setDouble(String name,
                 double value)
                   throws JMSException

Sets a `double` value with the specified name into the Map.

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

    void setString(String name,
                 String value)
                   throws JMSException

Sets a `String` value with the specified name into the Map.

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

    void setBytes(String name,
                byte[] value)
                  throws JMSException

Sets a byte array value with the specified name into the Map.

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

    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.

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

    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.

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

    boolean itemExists(String name)
                       throws JMSException

Indicates whether an item exists in this `MapMessage` object.

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.