protected void processMessageProperties()

in shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/jms_hdrs_props_test/Receiver.java [449:500]


    protected void processMessageProperties(Message message) throws Exception, JMSException {
        Enumeration<String> propertyNames = message.getPropertyNames(); 
        while (propertyNames.hasMoreElements()) {
            JsonObjectBuilder valueMap = Json.createObjectBuilder();
            String propertyName = propertyNames.nextElement();
            int underscoreIndex1 = propertyName.indexOf('_');
            int underscoreIndex2 = propertyName.indexOf('_', underscoreIndex1 + 1);
            if (underscoreIndex1 == 4 && underscoreIndex2 > 5) {
                String propType = propertyName.substring(underscoreIndex1 + 1, underscoreIndex2);
                switch (propType) {
                case "boolean":
                    valueMap.add(propType, message.getBooleanProperty(propertyName) ? "True" : "False");
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "byte":
                    valueMap.add(propType, formatByte(message.getByteProperty(propertyName)));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "double":
                    long l = Double.doubleToRawLongBits(message.getDoubleProperty(propertyName));
                    valueMap.add(propType, String.format("0x%16s", Long.toHexString(l)).replace(' ', '0'));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "float":
                    int i = Float.floatToRawIntBits(message.getFloatProperty(propertyName));
                    valueMap.add(propType, String.format("0x%8s", Integer.toHexString(i)).replace(' ', '0'));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "int":
                    valueMap.add(propType, formatInt(message.getIntProperty(propertyName)));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "long":
                    valueMap.add(propType, formatLong(message.getLongProperty(propertyName)));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "short":
                    valueMap.add(propType, formatShort(message.getShortProperty(propertyName)));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                case "string":
                    valueMap.add(propType, message.getStringProperty(propertyName));
                    _jsonMessagePropertiesMapBuilder.add(propertyName, valueMap);
                    break;
                default:
                    ; // Ignore any other property the broker may add
                }
            } else {
                // TODO: handle other non-test properties that might exist here
            }
        }
    }