blob: 32bda63f44eadace6e7b587878780eaddf2a6c2a [file] [log] [blame]
<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">3.2.&#160;JMS MapMessage Types</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="JMS-Client-0-10-Miscellaneous.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;3.&#160;Miscellaneous</th><td align="right" width="20%">&#160;</td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="JMS-Client-0-10-Miscellaneous-MapMessages"></a>3.2.&#160;JMS MapMessage Types</h2></div></div></div><p>Qpid supports the JMS <code class="classname">MapMessage</code> interface, which provides support for maps in messages. The following code shows how to send a <code class="classname">MapMessage</code> in JMS.</p><div class="example"><a id="d0e2269"></a><p class="title"><strong>Example&#160;3.1.&#160;Sending a JMS MapMessage</strong></p><div class="example-contents"><pre class="programlisting">
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
import java.util.Arrays;
// !!! SNIP !!!
MessageProducer producer = session.createProducer(queue);
MapMessage m = session.createMapMessage();
m.setIntProperty("Id", 987654321);
m.setStringProperty("name", "Widget");
m.setDoubleProperty("price", 0.99);
List&lt;String&gt; colors = new ArrayList&lt;String&gt;();
colors.add("red");
colors.add("green");
colors.add("white");
m.setObject("colours", colors);
Map&lt;String,Double&gt; dimensions = new HashMap&lt;String,Double&gt;();
dimensions.put("length",10.2);
dimensions.put("width",5.1);
dimensions.put("depth",2.0);
m.setObject("dimensions",dimensions);
List&lt;List&lt;Integer&gt;&gt; parts = new ArrayList&lt;List&lt;Integer&gt;&gt;();
parts.add(Arrays.asList(new Integer[] {1,2,5}));
parts.add(Arrays.asList(new Integer[] {8,2,5}));
m.setObject("parts", parts);
Map&lt;String,Object&gt; specs = new HashMap&lt;String,Object&gt;();
specs.put("colours", colors);
specs.put("dimensions", dimensions);
specs.put("parts", parts);
m.setObject("specs",specs);
producer.send(m);
</pre></div></div><br class="example-break" /><p>The following table shows the datatypes that can be sent in a <code class="classname">MapMessage</code>, and the corresponding datatypes that will be received by clients in Python or C++.</p><div class="table"><a id="table-Java-Maps"></a><p class="title"><strong>Table&#160;3.2.&#160;Java Datatypes in Maps</strong></p><div class="table-contents"><table border="1" summary="Java Datatypes in Maps"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Java Datatype</th><th>Python</th><th>C++</th></tr></thead><tbody><tr><td>boolean</td><td>bool</td><td>bool</td></tr><tr><td>short</td><td>int | long</td><td>int16</td></tr><tr><td>int</td><td>int | long</td><td>int32</td></tr><tr><td>long</td><td>int | long</td><td>int64</td></tr><tr><td>float</td><td>float</td><td>float</td></tr><tr><td>double</td><td>float</td><td>double</td></tr><tr><td>java.lang.String</td><td>unicode</td><td>std::string</td></tr><tr><td>java.util.UUID</td><td>uuid</td><td>qpid::types::Uuid</td></tr><tr><td>java.util.Map<a class="footnote" href="#ftn.d0e2351" id="d0e2351"><sup class="footnote">[a]</sup></a></td><td>dict</td><td>Variant::Map</td></tr><tr><td>java.util.List</td><td>list</td><td>Variant::List</td></tr></tbody><tbody class="footnotes"><tr><td colspan="3"><div class="footnote" id="ftn.d0e2351"><p><a class="para" href="#d0e2351"><sup class="para">[a] </sup></a>In Qpid, maps can nest. This goes beyond the functionality required by the JMS specification.</p></div></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="JMS-Client-0-10-Miscellaneous.html">Prev</a>&#160;</td><td align="center" width="20%"><a accesskey="u" href="JMS-Client-0-10-Miscellaneous.html">Up</a></td><td align="right" width="40%">&#160;</td></tr><tr><td align="left" valign="top" width="40%">Chapter&#160;3.&#160;Miscellaneous&#160;</td><td align="center" width="20%"><a accesskey="h" href="JMS-Client-0-10-Book.html">Home</a></td><td align="right" valign="top" width="40%">&#160;</td></tr></table></div></div>