in shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/jms_hdrs_props_test/Sender.java [171:217]
protected void addMessageHeaders(Message msg, JsonObject testHeadersMap) throws Exception, JMSException {
List<String> testHeadersKeyList = new ArrayList<String>(testHeadersMap.keySet());
for (String key: testHeadersKeyList) {
JsonObject subMap = testHeadersMap.getJsonObject(key);
List<String> subMapKeyList = new ArrayList<String>(subMap.keySet());
String subMapKey = subMapKeyList.get(0); // There is always only one entry in map
String subMapVal = subMap.getString(subMapKey);
switch (key) {
case "JMS_TYPE_HEADER":
if (subMapKey.compareTo("string") == 0) {
msg.setJMSType(subMapVal);
} else {
throw new Exception("Internal exception: Invalid message header type \"" + subMapKey + "\" for message header \"" + key + "\"");
}
break;
case "JMS_CORRELATIONID_HEADER":
if (subMapKey.compareTo("string") == 0) {
msg.setJMSCorrelationID(subMapVal);
} else if (subMapKey.compareTo("bytes") == 0) {
msg.setJMSCorrelationIDAsBytes(Base64.getDecoder().decode(subMapVal.getBytes()));
} else {
throw new Exception("Internal exception: Invalid message header type \"" + subMapKey + "\" for message header \"" + key + "\"");
}
break;
case "JMS_REPLYTO_HEADER":
switch (subMapKey) {
case "queue":
msg.setJMSReplyTo(_session.createQueue(subMapVal));
break;
case "temp_queue":
msg.setJMSReplyTo(_session.createTemporaryQueue());
break;
case "topic":
msg.setJMSReplyTo(_session.createTopic(subMapVal));
break;
case "temp_topic":
msg.setJMSReplyTo(_session.createTemporaryTopic());
break;
default:
throw new Exception("Internal exception: Invalid message header type \"" + subMapKey + "\" for message header \"" + key + "\"");
}
break;
default:
throw new Exception("Internal exception: Unknown or unsupported message header \"" + key + "\"");
}
}
}