shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/jms_hdrs_props_test/Sender.java [260:444]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    protected Message createJMSMessage(String testValueType, String testValue) throws Exception, JMSException {
        if (testValueType.compareTo("none") != 0) {
            throw new Exception("Internal exception: Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        if (testValue.length() > 0) {
            throw new Exception("Internal exception: Unexpected JMS message value \"" + testValue + "\" for sub-type \"" + testValueType + "\"");
        }
        return _session.createMessage();
    }

    protected BytesMessage createJMSBytesMessage(String testValueType, String testValue) throws Exception, JMSException {
        BytesMessage message = _session.createBytesMessage();
        switch (testValueType) {
        case "boolean":
            message.writeBoolean(Boolean.parseBoolean(testValue));
            break;
        case "byte":
            message.writeByte(Byte.decode(testValue));
            break;
        case "bytes":
            message.writeBytes(Base64.getDecoder().decode(testValue));
            break;
        case "char":
            byte[] decodedValue = Base64.getDecoder().decode(testValue);
            if (decodedValue.length == 1) { // Char format: "X" or "\xNN"
                message.writeChar((char)decodedValue[0]);
            } else {
                throw new Exception("JmsSenderShim.createJMSBytesMessage() Malformed char string: \"" + decodedValue + "\" of length " + decodedValue.length);
            }
            break;
        case "double":
            Long l1 = Long.parseLong(testValue.substring(2, 3), 16) << 60;
            Long l2 = Long.parseLong(testValue.substring(3), 16);
            message.writeDouble(Double.longBitsToDouble(l1 | l2));
            break;
        case "float":
            Long i = Long.parseLong(testValue.substring(2), 16);
            message.writeFloat(Float.intBitsToFloat(i.intValue()));
            break;
        case "int":
            message.writeInt(Integer.decode(testValue));
            break;
        case "long":
            message.writeLong(Long.decode(testValue));
            break;
        case "object":
            Object obj = (Object)createObject(testValue);
            message.writeObject(obj);
            break;
        case "short":
            message.writeShort(Short.decode(testValue));
            break;
        case "string":
            message.writeUTF(testValue);
            break;
        default:
            throw new Exception("Internal exception: Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        return message;
    }
    
    protected MapMessage createJMSMapMessage(String testValueType, String testValue, int testValueNum) throws Exception, JMSException {
        MapMessage message = _session.createMapMessage();
        String name = String.format("%s%03d", testValueType, testValueNum);
        switch (testValueType) {
        case "boolean":
            message.setBoolean(name, Boolean.parseBoolean(testValue));
            break;
        case "byte":
            message.setByte(name, Byte.decode(testValue));
            break;
        case "bytes":
            message.setBytes(name, Base64.getDecoder().decode(testValue));
            break;
        case "char":
            byte[] decodedValue = Base64.getDecoder().decode(testValue);
            if (decodedValue.length == 1) { // Char format: "X" or "\xNN"
                message.setChar(name, (char)decodedValue[0]);
            } else if (decodedValue.length == 6) { // Char format: "\xNNNN"
                message.setChar(name, ByteBuffer.wrap(decodedValue).getChar());
            } else {
                throw new Exception("JmsSenderShim.createJMSMapMessage() Malformed char string: \"" + decodedValue + "\"");
            }
            break;
        case "double":
            Long l1 = Long.parseLong(testValue.substring(2, 3), 16) << 60;
            Long l2 = Long.parseLong(testValue.substring(3), 16);
            message.setDouble(name, Double.longBitsToDouble(l1 | l2));
            break;
        case "float":
            Long i = Long.parseLong(testValue.substring(2), 16);
            message.setFloat(name, Float.intBitsToFloat(i.intValue()));
            break;
        case "int":
            message.setInt(name, Integer.decode(testValue));
            break;
        case "long":
            message.setLong(name, Long.decode(testValue));
            break;
        case "object":
            Object obj = (Object)createObject(testValue);
            message.setObject(name, obj);
            break;
        case "short":
            message.setShort(name, Short.decode(testValue));
            break;
        case "string":
            message.setString(name, testValue);
            break;
        default:
            throw new Exception("Internal exception: Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        return message;
    }
    
    protected ObjectMessage createJMSObjectMessage(String className, String testValue) throws Exception, JMSException {
        Serializable obj = createJavaObject(className, testValue);
        if (obj == null) {
            // TODO: Handle error here
            System.out.println("JmsSenderShim.createJMSObjectMessage: obj == null");
            return null;
        }
        ObjectMessage message = _session.createObjectMessage();
        message.setObject(obj);
        return message;
    }
    
    protected StreamMessage createJMSStreamMessage(String testValueType, String testValue) throws Exception, JMSException {
        StreamMessage message = _session.createStreamMessage();
        switch (testValueType) {
        case "boolean":
            message.writeBoolean(Boolean.parseBoolean(testValue));
            break;
        case "byte":
            message.writeByte(Byte.decode(testValue));
            break;
        case "bytes":
            message.writeBytes(Base64.getDecoder().decode(testValue.getBytes()));
            break;
        case "char":
            byte[] decodedValue = Base64.getDecoder().decode(testValue);
            if (decodedValue.length == 1) { // Char format: "X"
                message.writeChar((char)decodedValue[0]);
            } else if (testValue.length() == 6) { // Char format: "\xNNNN"
                message.writeChar(ByteBuffer.wrap(decodedValue).getChar());
            } else {
                throw new Exception("JmsSenderShim.createJMSStreamMessage() Malformed char string: \"" + decodedValue + "\"");
            }
            break;
        case "double":
            Long l1 = Long.parseLong(testValue.substring(2, 3), 16) << 60;
            Long l2 = Long.parseLong(testValue.substring(3), 16);
            message.writeDouble(Double.longBitsToDouble(l1 | l2));
            break;
        case "float":
            Long i = Long.parseLong(testValue.substring(2), 16);
            message.writeFloat(Float.intBitsToFloat(i.intValue()));
            break;
        case "int":
            message.writeInt(Integer.decode(testValue));
            break;
        case "long":
            message.writeLong(Long.decode(testValue));
            break;
        case "object":
            Object obj = (Object)createObject(testValue);
            message.writeObject(obj);
            break;
        case "short":
            message.writeShort(Short.decode(testValue));
            break;
        case "string":
            message.writeString(testValue);
            break;
        default:
            throw new Exception("JmsSenderShim.createJMSStreamMessage(): Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        return message;
    }

    protected static Serializable createJavaObject(String className, String testValue) throws Exception {
        Serializable obj = null;
        try {
            Class<?> c = Class.forName(className);
            if (className.compareTo("java.lang.Character") == 0) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/jms_messages_test/Sender.java [157:341]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    protected Message createJMSMessage(String testValueType, String testValue) throws Exception, JMSException {
        if (testValueType.compareTo("none") != 0) {
            throw new Exception("Internal exception: Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        if (testValue.length() > 0) {
            throw new Exception("Internal exception: Unexpected JMS message value \"" + testValue + "\" for sub-type \"" + testValueType + "\"");
        }
        return _session.createMessage();
    }

    protected BytesMessage createJMSBytesMessage(String testValueType, String testValue) throws Exception, JMSException {
        BytesMessage message = _session.createBytesMessage();
        switch (testValueType) {
        case "boolean":
            message.writeBoolean(Boolean.parseBoolean(testValue));
            break;
        case "byte":
            message.writeByte(Byte.decode(testValue));
            break;
        case "bytes":
            message.writeBytes(Base64.getDecoder().decode(testValue));
            break;
        case "char":
            byte[] decodedValue = Base64.getDecoder().decode(testValue);
            if (decodedValue.length == 1) { // Char format: "X" or "\xNN"
                message.writeChar((char)decodedValue[0]);
            } else {
                throw new Exception("JmsSenderShim.createJMSBytesMessage() Malformed char string: \"" + decodedValue + "\" of length " + decodedValue.length);
            }
            break;
        case "double":
            Long l1 = Long.parseLong(testValue.substring(2, 3), 16) << 60;
            Long l2 = Long.parseLong(testValue.substring(3), 16);
            message.writeDouble(Double.longBitsToDouble(l1 | l2));
            break;
        case "float":
            Long i = Long.parseLong(testValue.substring(2), 16);
            message.writeFloat(Float.intBitsToFloat(i.intValue()));
            break;
        case "int":
            message.writeInt(Integer.decode(testValue));
            break;
        case "long":
            message.writeLong(Long.decode(testValue));
            break;
        case "object":
            Object obj = (Object)createObject(testValue);
            message.writeObject(obj);
            break;
        case "short":
            message.writeShort(Short.decode(testValue));
            break;
        case "string":
            message.writeUTF(testValue);
            break;
        default:
            throw new Exception("Internal exception: Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        return message;
    }
    
    protected MapMessage createJMSMapMessage(String testValueType, String testValue, int testValueNum) throws Exception, JMSException {
        MapMessage message = _session.createMapMessage();
        String name = String.format("%s%03d", testValueType, testValueNum);
        switch (testValueType) {
        case "boolean":
            message.setBoolean(name, Boolean.parseBoolean(testValue));
            break;
        case "byte":
            message.setByte(name, Byte.decode(testValue));
            break;
        case "bytes":
            message.setBytes(name, Base64.getDecoder().decode(testValue));
            break;
        case "char":
            byte[] decodedValue = Base64.getDecoder().decode(testValue);
            if (decodedValue.length == 1) { // Char format: "X" or "\xNN"
                message.setChar(name, (char)decodedValue[0]);
            } else if (decodedValue.length == 6) { // Char format: "\xNNNN"
                message.setChar(name, ByteBuffer.wrap(decodedValue).getChar());
            } else {
                throw new Exception("JmsSenderShim.createJMSMapMessage() Malformed char string: \"" + decodedValue + "\"");
            }
            break;
        case "double":
            Long l1 = Long.parseLong(testValue.substring(2, 3), 16) << 60;
            Long l2 = Long.parseLong(testValue.substring(3), 16);
            message.setDouble(name, Double.longBitsToDouble(l1 | l2));
            break;
        case "float":
            Long i = Long.parseLong(testValue.substring(2), 16);
            message.setFloat(name, Float.intBitsToFloat(i.intValue()));
            break;
        case "int":
            message.setInt(name, Integer.decode(testValue));
            break;
        case "long":
            message.setLong(name, Long.decode(testValue));
            break;
        case "object":
            Object obj = (Object)createObject(testValue);
            message.setObject(name, obj);
            break;
        case "short":
            message.setShort(name, Short.decode(testValue));
            break;
        case "string":
            message.setString(name, testValue);
            break;
        default:
            throw new Exception("Internal exception: Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        return message;
    }
    
    protected ObjectMessage createJMSObjectMessage(String className, String testValue) throws Exception, JMSException {
        Serializable obj = createJavaObject(className, testValue);
        if (obj == null) {
            // TODO: Handle error here
            System.out.println("JmsSenderShim.createJMSObjectMessage: obj == null");
            return null;
        }
        ObjectMessage message = _session.createObjectMessage();
        message.setObject(obj);
        return message;
    }
    
    protected StreamMessage createJMSStreamMessage(String testValueType, String testValue) throws Exception, JMSException {
        StreamMessage message = _session.createStreamMessage();
        switch (testValueType) {
        case "boolean":
            message.writeBoolean(Boolean.parseBoolean(testValue));
            break;
        case "byte":
            message.writeByte(Byte.decode(testValue));
            break;
        case "bytes":
            message.writeBytes(Base64.getDecoder().decode(testValue.getBytes()));
            break;
        case "char":
            byte[] decodedValue = Base64.getDecoder().decode(testValue);
            if (decodedValue.length == 1) { // Char format: "X"
                message.writeChar((char)decodedValue[0]);
            } else if (testValue.length() == 6) { // Char format: "\xNNNN"
                message.writeChar(ByteBuffer.wrap(decodedValue).getChar());
            } else {
                throw new Exception("JmsSenderShim.createJMSStreamMessage() Malformed char string: \"" + decodedValue + "\"");
            }
            break;
        case "double":
            Long l1 = Long.parseLong(testValue.substring(2, 3), 16) << 60;
            Long l2 = Long.parseLong(testValue.substring(3), 16);
            message.writeDouble(Double.longBitsToDouble(l1 | l2));
            break;
        case "float":
            Long i = Long.parseLong(testValue.substring(2), 16);
            message.writeFloat(Float.intBitsToFloat(i.intValue()));
            break;
        case "int":
            message.writeInt(Integer.decode(testValue));
            break;
        case "long":
            message.writeLong(Long.decode(testValue));
            break;
        case "object":
            Object obj = (Object)createObject(testValue);
            message.writeObject(obj);
            break;
        case "short":
            message.writeShort(Short.decode(testValue));
            break;
        case "string":
            message.writeString(testValue);
            break;
        default:
            throw new Exception("JmsSenderShim.createJMSStreamMessage(): Unexpected JMS message sub-type \"" + testValueType + "\"");
        }
        return message;
    }

    protected static Serializable createJavaObject(String className, String testValue) throws Exception {
        Serializable obj = null;
        try {
            Class<?> c = Class.forName(className);
            if (className.compareTo("java.lang.Character") == 0) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



