protected void addMessageHeaders()

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 + "\"");
            }
        }
    }