protected void addMessageProperties()

in shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/jms_hdrs_props_test/Sender.java [219:258]


    protected void addMessageProperties(Message msg, JsonObject testPropertiesMap) throws Exception, JMSException {
        List<String> testPropertiesKeyList = new ArrayList<String>(testPropertiesMap.keySet());
        for (String key: testPropertiesKeyList) {
            JsonObject subMap = testPropertiesMap.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 (subMapKey) {
            case "boolean":
                msg.setBooleanProperty(key, Boolean.parseBoolean(subMapVal));
                break;
            case "byte":
                msg.setByteProperty(key, Byte.decode(subMapVal));
                break;
            case "double":
                Long l1 = Long.parseLong(subMapVal.substring(2, 3), 16) << 60;
                Long l2 = Long.parseLong(subMapVal.substring(3), 16);
                msg.setDoubleProperty(key, Double.longBitsToDouble(l1 | l2));
                break;
            case "float":
                Long i = Long.parseLong(subMapVal.substring(2), 16);
                msg.setFloatProperty(key, Float.intBitsToFloat(i.intValue()));
                break;
            case "int":
                msg.setIntProperty(key, Integer.decode(subMapVal));
                break;
            case "long":
                msg.setLongProperty(key, Long.decode(subMapVal));
                break;
            case "short":
                msg.setShortProperty(key, Short.decode(subMapVal));
                break;
            case "string":
                msg.setStringProperty(key, subMapVal);
                break;
            default:
                throw new Exception("Internal exception: Unknown or unsupported message property type \"" + subMapKey + "\"");
            }
        }
    }