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

  Since:
    JMS 1.0
  See Also:
    `Session.createMapMessage()`, `BytesMessage`, `Message`, `ObjectMessage`, `StreamMessage`, `TextMessage`

- - ### Field Summary

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

      `DEFAULT_DELIVERY_DELAY, DEFAULT_DELIVERY_MODE, DEFAULT_PRIORITY, DEFAULT_TIME_TO_LIVE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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, getBody, getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDeliveryTime, getJMSDestination, getJMSExpiration, getJMSMessageID, getJMSPriority, getJMSRedelivered, getJMSReplyTo, getJMSTimestamp, getJMSType, getLongProperty, getObjectProperty, getPropertyNames, getShortProperty, getStringProperty, isBodyAssignableTo, propertyExists, setBooleanProperty, setByteProperty, setDoubleProperty, setFloatProperty, setIntProperty, setJMSCorrelationID, setJMSCorrelationIDAsBytes, setJMSDeliveryMode, setJMSDeliveryTime, 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.
        `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,
                      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.

Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.