NO_JIRA: Fixed whitespace issues in code: removed tabs, fixed indentation, 
removed trailing whitespace


Project: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/commit/4e6f4f29
Tree: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/tree/4e6f4f29
Diff: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/diff/4e6f4f29

Branch: refs/heads/master
Commit: 4e6f4f29102bf645ca0e155bf60666d3696c426f
Parents: f4b87a1
Author: Kim van der Riet <[email protected]>
Authored: Wed May 4 13:31:04 2016 -0400
Committer: Kim van der Riet <[email protected]>
Committed: Wed May 4 13:31:04 2016 -0400

----------------------------------------------------------------------
 .../qpid_interop_test/shim/AmqpReceiver.java    | 358 ++++++-------
 .../qpid/qpid_interop_test/shim/AmqpSender.java | 354 ++++++-------
 .../qpid_interop_test/shim/JmsReceiverShim.java | 486 ++++++++---------
 .../qpid_interop_test/shim/JmsSenderShim.java   | 519 +++++++++----------
 4 files changed, 858 insertions(+), 859 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/4e6f4f29/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpReceiver.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpReceiver.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpReceiver.java
index cf3ad81..6e96c4d 100644
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpReceiver.java
+++ 
b/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpReceiver.java
@@ -41,44 +41,44 @@ public class AmqpReceiver {
     private static final String PASSWORD = "guest";
     private static final int TIMEOUT = 1000;
     private static final String[] SUPPORTED_AMQP_TYPES = {"null",
-                                                                               
                              "boolean",
-                                                                               
                              "ubyte",
-                                                                               
                              "ushort",
-                                                                               
                              "uint",
-                                                                               
                              "ulong",
-                                                                               
                              "byte",
-                                                                               
                              "short",
-                                                                               
                              "int",
-                                                                               
                              "long",
-                                                                               
                              "float",
-                                                                               
                              "double",
-                                                                               
                              "decimal32",
-                                                                               
                              "decimal64",
-                                                                               
                              "decimal128",
-                                                                               
                              "char",
-                                                                               
                              "timestamp",
-                                                                               
                              "uuid",
-                                                                               
                              "binary",
-                                                                               
                              "string",
-                                                                               
                              "symbol",
-                                                                               
                              "list",
-                                                                               
                              "map",
-                                                                               
                              "array"};
+                                                          "boolean",
+                                                          "ubyte",
+                                                          "ushort",
+                                                          "uint",
+                                                          "ulong",
+                                                          "byte",
+                                                          "short",
+                                                          "int",
+                                                          "long",
+                                                          "float",
+                                                          "double",
+                                                          "decimal32",
+                                                          "decimal64",
+                                                          "decimal128",
+                                                          "char",
+                                                          "timestamp",
+                                                          "uuid",
+                                                          "binary",
+                                                          "string",
+                                                          "symbol",
+                                                          "list",
+                                                          "map",
+                                                          "array"};
 
     public static void main(String[] args) throws Exception {
-       if (args.length < 4) {
-               System.out.println("AmqpReceiver: Insufficient number of 
arguments");
-               System.out.println("AmqpReceiver: Expected arguments: 
broker_address, queue_name, amqp_type, num_test_values");
-               System.exit(1);
-       }
-       String brokerAddress = "amqp://" + args[0];
-       String queueName = args[1];
-       String amqpType = args[2];
-       int numTestValues = Integer.parseInt(args[3]);
-       Connection connection = null;
+        if (args.length < 4) {
+            System.out.println("AmqpReceiver: Insufficient number of 
arguments");
+            System.out.println("AmqpReceiver: Expected arguments: 
broker_address, queue_name, amqp_type, num_test_values");
+            System.exit(1);
+        }
+        String brokerAddress = "amqp://" + args[0];
+        String queueName = args[1];
+        String amqpType = args[2];
+        int numTestValues = Integer.parseInt(args[3]);
+        Connection connection = null;
 
         try {
-               ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
+            ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
 
             connection = factory.createConnection(USER, PASSWORD);
             connection.setExceptionListener(new MyExceptionListener());
@@ -96,156 +96,156 @@ public class AmqpReceiver {
                 int actualCount = 0;
                 Message message = null;
                 for (int i = 1; i <= numTestValues; i++, actualCount++) {
-                               message = messageConsumer.receive(TIMEOUT);
-                               if (message == null)
-                                       break;
-                       switch (amqpType) {
-                       case "null":
-                               long bodyLength = 
((BytesMessage)message).getBodyLength();
-                               if (bodyLength == 0L) {
-                                       outList.add("None");
-                               } else {
-                                       throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Expected 0 bytes, read " + bodyLength);
-                               }
-                               break;
-                       case "boolean":
-                               String bs = 
String.valueOf(((BytesMessage)message).readBoolean());
-                               outList.add(Character.toUpperCase(bs.charAt(0)) 
+ bs.substring(1));
-                               break;
-                       case "ubyte":
-                               byte byteValue = 
((BytesMessage)message).readByte();
-                               short ubyteValue = (short)(byteValue & 0xff);
-                               outList.add(String.valueOf(ubyteValue));
-                               break;
-                       case "ushort":
-                       {
-                               byte[] byteArray = new byte[2];
-                               int numBytes = 
((BytesMessage)message).readBytes(byteArray);
-                               if (numBytes != 2) {
-                                       // TODO: numBytes == -1 means no more 
bytes in stream - add error message for this case?
-                                       throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Exptected 2 bytes, read " + numBytes);
-                               }
-                               int ushortValue = 0;
-                               for (int j=0; j<byteArray.length; j++) {
-                                       ushortValue = (ushortValue << 8) + 
(byteArray[j] & 0xff);
-                               }
-                               outList.add(String.valueOf(ushortValue));
-                               break;
-                       }
-                       case "uint":
-                       {
-                               byte[] byteArray = new byte[4];
-                               int numBytes = 
((BytesMessage)message).readBytes(byteArray);
-                               if (numBytes != 4) {
-                                       // TODO: numBytes == -1 means no more 
bytes in stream - add error message for this case?
-                                       throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Exptected 4 bytes, read " + numBytes);
-                               }
-                               long uintValue = 0;
-                               for (int j=0; j<byteArray.length; j++) {
-                                       uintValue = (uintValue << 8) + 
(byteArray[j] & 0xff);
-                               }
-                               outList.add(String.valueOf(uintValue));
-                               break;
-                       }
-                       case "ulong":
-                       case "timestamp":
-                       {
-                               // TODO: Tidy this ugliness up - perhaps use of 
vector<byte>?
-                               byte[] byteArray = new byte[8];
-                               int numBytes = 
((BytesMessage)message).readBytes(byteArray);
-                               if (numBytes != 8) {
-                                       // TODO: numBytes == -1 means no more 
bytes in stream - add error message for this case?
-                                       throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Exptected 8 bytes, read " + numBytes);
-                               }
-                               // TODO: shortcut in use here - this byte array 
should go through a Java type that can represent this as a number - such as 
BigInteger.
-                               
outList.add(String.format("0x%02x%02x%02x%02x%02x%02x%02x%02x", byteArray[0], 
byteArray[1],
-                                               byteArray[2], byteArray[3], 
byteArray[4], byteArray[5], byteArray[6], byteArray[7]));
-                               break;
-                       }
-                       case "byte":
-                               
outList.add(String.valueOf(((BytesMessage)message).readByte()));
-                               break;
-                       case "short":
-                               
outList.add(String.valueOf(((BytesMessage)message).readShort()));
-                               break;
-                       case "int":
-                               
outList.add(String.valueOf(((BytesMessage)message).readInt()));
-                               break;
-                       case "long":
-                               
outList.add(String.valueOf(((BytesMessage)message).readLong()));
-                               break;
-                       case "float":
-                               float f = ((BytesMessage)message).readFloat();
-                               int i0 = Float.floatToRawIntBits(f);
-                               outList.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
-                               break;
-                       case "double":
-                               double d = ((BytesMessage)message).readDouble();
-                               long l = Double.doubleToRawLongBits(d);
-                               outList.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
-                               break;
-                       case "decimal32":
-                               BigDecimal bd32 = 
(BigDecimal)((ObjectMessage)message).getObject();
-                               outList.add(bd32.toString());
-                               break;
-                       case "decimal64":
-                               BigDecimal bd64 = 
(BigDecimal)((ObjectMessage)message).getObject();
-                               outList.add(bd64.toString());
-                               break;
-                       case "decimal128":
-                               BigDecimal bd128 = 
(BigDecimal)((ObjectMessage)message).getObject();
-                               outList.add(bd128.toString());
-                               break;
-                       case "char":
-                               outList.add(String.format("%c", 
((BytesMessage)message).readChar()));
-                               break;
-                       case "uuid":
-                               UUID uuid = 
(UUID)((ObjectMessage)message).getObject();
-                               outList.add(uuid.toString());
-                               break;
-                       case "binary":
-                               BytesMessage bm = (BytesMessage)message;
-                               int msgLen = (int)bm.getBodyLength();
-                               byte[] ba = new byte[msgLen];
-                               if (bm.readBytes(ba) == msgLen) {
-                                       outList.add(new String(ba));
-                               } else {
-                                       // TODO: Raise exception or error here: 
size mismatch
-                               }
-                               break;
-                       case "string":
-                               outList.add(((TextMessage)message).getText());
-                               break;
-                       case "symbol":
-                               outList.add(((BytesMessage)message).readUTF());
-                               break;
-                       case "list":
-                               break;
-                       case "map":
-                               break;
-                       case "array":
-                               break;
-                       default:
-                               // Internal error, should never happen if 
SUPPORTED_AMQP_TYPES matches this case stmt
-                               connection.close();
-                               throw new Exception("AmqpReceiver: Internal 
error: unsupported AMQP type \"" + amqpType + "\"");
-                       }
+                    message = messageConsumer.receive(TIMEOUT);
+                    if (message == null)
+                        break;
+                    switch (amqpType) {
+                    case "null":
+                        long bodyLength = 
((BytesMessage)message).getBodyLength();
+                        if (bodyLength == 0L) {
+                            outList.add("None");
+                        } else {
+                            throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Expected 0 bytes, read " + bodyLength);
+                        }
+                        break;
+                    case "boolean":
+                        String bs = 
String.valueOf(((BytesMessage)message).readBoolean());
+                        outList.add(Character.toUpperCase(bs.charAt(0)) + 
bs.substring(1));
+                        break;
+                    case "ubyte":
+                        byte byteValue = ((BytesMessage)message).readByte();
+                        short ubyteValue = (short)(byteValue & 0xff);
+                        outList.add(String.valueOf(ubyteValue));
+                        break;
+                    case "ushort":
+                    {
+                        byte[] byteArray = new byte[2];
+                        int numBytes = 
((BytesMessage)message).readBytes(byteArray);
+                        if (numBytes != 2) {
+                            // TODO: numBytes == -1 means no more bytes in 
stream - add error message for this case?
+                            throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Exptected 2 bytes, read " + numBytes);
+                        }
+                        int ushortValue = 0;
+                        for (int j=0; j<byteArray.length; j++) {
+                            ushortValue = (ushortValue << 8) + (byteArray[j] & 
0xff);
+                        }
+                        outList.add(String.valueOf(ushortValue));
+                        break;
+                    }
+                    case "uint":
+                    {
+                        byte[] byteArray = new byte[4];
+                        int numBytes = 
((BytesMessage)message).readBytes(byteArray);
+                        if (numBytes != 4) {
+                            // TODO: numBytes == -1 means no more bytes in 
stream - add error message for this case?
+                            throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Exptected 4 bytes, read " + numBytes);
+                        }
+                        long uintValue = 0;
+                        for (int j=0; j<byteArray.length; j++) {
+                            uintValue = (uintValue << 8) + (byteArray[j] & 
0xff);
+                        }
+                        outList.add(String.valueOf(uintValue));
+                        break;
+                    }
+                    case "ulong":
+                    case "timestamp":
+                    {
+                        // TODO: Tidy this ugliness up - perhaps use of 
vector<byte>?
+                        byte[] byteArray = new byte[8];
+                        int numBytes = 
((BytesMessage)message).readBytes(byteArray);
+                        if (numBytes != 8) {
+                            // TODO: numBytes == -1 means no more bytes in 
stream - add error message for this case?
+                            throw new Exception("AmqpReceiver: JMS 
BytesMessage size error: Exptected 8 bytes, read " + numBytes);
+                        }
+                        // TODO: shortcut in use here - this byte array should 
go through a Java type that can represent this as a number - such as BigInteger.
+                        
outList.add(String.format("0x%02x%02x%02x%02x%02x%02x%02x%02x", byteArray[0], 
byteArray[1],
+                                byteArray[2], byteArray[3], byteArray[4], 
byteArray[5], byteArray[6], byteArray[7]));
+                        break;
+                    }
+                    case "byte":
+                        
outList.add(String.valueOf(((BytesMessage)message).readByte()));
+                        break;
+                    case "short":
+                        
outList.add(String.valueOf(((BytesMessage)message).readShort()));
+                        break;
+                    case "int":
+                        
outList.add(String.valueOf(((BytesMessage)message).readInt()));
+                        break;
+                    case "long":
+                        
outList.add(String.valueOf(((BytesMessage)message).readLong()));
+                        break;
+                    case "float":
+                        float f = ((BytesMessage)message).readFloat();
+                        int i0 = Float.floatToRawIntBits(f);
+                        outList.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
+                        break;
+                    case "double":
+                        double d = ((BytesMessage)message).readDouble();
+                        long l = Double.doubleToRawLongBits(d);
+                        outList.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
+                        break;
+                    case "decimal32":
+                        BigDecimal bd32 = 
(BigDecimal)((ObjectMessage)message).getObject();
+                        outList.add(bd32.toString());
+                        break;
+                    case "decimal64":
+                        BigDecimal bd64 = 
(BigDecimal)((ObjectMessage)message).getObject();
+                        outList.add(bd64.toString());
+                        break;
+                    case "decimal128":
+                        BigDecimal bd128 = 
(BigDecimal)((ObjectMessage)message).getObject();
+                        outList.add(bd128.toString());
+                        break;
+                    case "char":
+                        outList.add(String.format("%c", 
((BytesMessage)message).readChar()));
+                        break;
+                    case "uuid":
+                        UUID uuid = (UUID)((ObjectMessage)message).getObject();
+                        outList.add(uuid.toString());
+                        break;
+                    case "binary":
+                        BytesMessage bm = (BytesMessage)message;
+                        int msgLen = (int)bm.getBodyLength();
+                        byte[] ba = new byte[msgLen];
+                        if (bm.readBytes(ba) == msgLen) {
+                            outList.add(new String(ba));
+                        } else {
+                            // TODO: Raise exception or error here: size 
mismatch
+                        }
+                        break;
+                    case "string":
+                        outList.add(((TextMessage)message).getText());
+                        break;
+                    case "symbol":
+                        outList.add(((BytesMessage)message).readUTF());
+                        break;
+                    case "list":
+                        break;
+                    case "map":
+                        break;
+                    case "array":
+                        break;
+                    default:
+                        // Internal error, should never happen if 
SUPPORTED_AMQP_TYPES matches this case stmt
+                        connection.close();
+                        throw new Exception("AmqpReceiver: Internal error: 
unsupported AMQP type \"" + amqpType + "\"");
+                    }
                 }
             } else {
-               System.out.println("ERROR: AmqpReceiver: AMQP type \"" + 
amqpType + "\" is not supported");
-               connection.close();
-               System.exit(1);
+                System.out.println("ERROR: AmqpReceiver: AMQP type \"" + 
amqpType + "\" is not supported");
+                connection.close();
+                System.exit(1);
             }
 
             connection.close();
 
             // No exception, print results
             for (int i=0; i<outList.size(); i++) {
-               System.out.println(outList.get(i));
+                System.out.println(outList.get(i));
             }
         } catch (Exception exp) {
-               if (connection != null)
-                       connection.close();
+            if (connection != null)
+                connection.close();
             System.out.println("Caught exception, exiting.");
             exp.printStackTrace(System.out);
             System.exit(1);
@@ -253,11 +253,11 @@ public class AmqpReceiver {
     }
     
     protected static boolean isSupportedAmqpType(String amqpType) {
-       for (String supportedAmqpType: SUPPORTED_AMQP_TYPES) {
-               if (amqpType.equals(supportedAmqpType))
-                       return true;
-       }
-       return false;
+        for (String supportedAmqpType: SUPPORTED_AMQP_TYPES) {
+            if (amqpType.equals(supportedAmqpType))
+                return true;
+        }
+        return false;
     }
 
     private static class MyExceptionListener implements ExceptionListener {

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/4e6f4f29/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpSender.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpSender.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpSender.java
index 3fc5a90..9c761d7 100644
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpSender.java
+++ 
b/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/AmqpSender.java
@@ -43,43 +43,43 @@ public class AmqpSender {
     private static final String USER = "guest";
     private static final String PASSWORD = "guest";
     private static final String[] SUPPORTED_AMQP_TYPES = {"null",
-                                                         "boolean",
-                                                         "ubyte",
-                                                         "ushort",
-                                                         "uint",
-                                                         "ulong",
-                                                         "byte",
-                                                         "short",
-                                                         "int",
-                                                         "long",
-                                                         "float",
-                                                         "double",
-                                                         "decimal32",
-                                                         "decimal64",
-                                                         "decimal128",
-                                                         "char",
-                                                         "timestamp",
-                                                         "uuid",
-                                                         "binary",
-                                                         "string",
-                                                         "symbol",
-                                                         "list",
-                                                         "map",
-                                                         "array"};
+                                                          "boolean",
+                                                          "ubyte",
+                                                          "ushort",
+                                                          "uint",
+                                                          "ulong",
+                                                          "byte",
+                                                          "short",
+                                                          "int",
+                                                          "long",
+                                                          "float",
+                                                          "double",
+                                                          "decimal32",
+                                                          "decimal64",
+                                                          "decimal128",
+                                                          "char",
+                                                          "timestamp",
+                                                          "uuid",
+                                                          "binary",
+                                                          "string",
+                                                          "symbol",
+                                                          "list",
+                                                          "map",
+                                                          "array"};
 
     public static void main(String[] args) throws Exception {
-       if (args.length < 4) {
-               System.out.println("AmqpSender: Insufficient number of 
arguments");
-               System.out.println("AmqpSender: Expected arguments: 
broker_address, queue_name, amqp_type, test_val, test_val, ...");
-               System.exit(1);
-       }
-       String brokerAddress = "amqp://" + args[0];
-       String queueName = args[1];
-       String amqpType = args[2];
-       String[] testValueList = Arrays.copyOfRange(args, 3, args.length); // 
Use remaining args as test values
-       
+        if (args.length < 4) {
+            System.out.println("AmqpSender: Insufficient number of arguments");
+            System.out.println("AmqpSender: Expected arguments: 
broker_address, queue_name, amqp_type, test_val, test_val, ...");
+            System.exit(1);
+        }
+        String brokerAddress = "amqp://" + args[0];
+        String queueName = args[1];
+        String amqpType = args[2];
+        String[] testValueList = Arrays.copyOfRange(args, 3, args.length); // 
Use remaining args as test values
+
         try {
-               ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
+            ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
 
             Connection connection = factory.createConnection();
             connection.setExceptionListener(new MyExceptionListener());
@@ -92,145 +92,145 @@ public class AmqpSender {
             MessageProducer messageProducer = session.createProducer(queue);
 
             if (isSupportedAmqpType(amqpType)) {
-               Message message = null;
-               for (String testValueStr : testValueList) {
-                       switch (amqpType) {
-                       case "null":
-                               message = session.createBytesMessage();
-                               break;
-                       case "boolean":
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeBoolean(Boolean.parseBoolean(testValueStr));
-                               break;
-                       case "ubyte":
-                       {
-                               byte testValue = 
(byte)Short.parseShort(testValueStr);
-                               message = session.createBytesMessage();
-                               ((BytesMessage)message).writeByte(testValue);
-                               break;
-                       }
-                       case "ushort":
-                       {
-                               int testValue = Integer.parseInt(testValueStr);
-                               byte[] byteArray = new byte[2];
-                               byteArray[0] = (byte)(testValue >> 8);
-                               byteArray[1] = (byte)(testValue);
-                               message = session.createBytesMessage();
-                               ((BytesMessage)message).writeBytes(byteArray);
-                               break;
-                       }
-                       case "uint":
-                       {
-                               long testValue = Long.parseLong(testValueStr);
-                               byte[] byteArray = new byte[4];
-                               byteArray[0] = (byte)(testValue >> 24);
-                               byteArray[1] = (byte)(testValue >> 16);
-                               byteArray[2] = (byte)(testValue >> 8);
-                               byteArray[3] = (byte)(testValue);
-                               message = session.createBytesMessage();
-                               ((BytesMessage)message).writeBytes(byteArray);
-                               break;
-                       }
-                       case "ulong":
-                       {
-                               // TODO: Tidy this ugliness up - perhaps use of 
vector<byte>?
-                               BigInteger testValue = new 
BigInteger(testValueStr);
-                               byte[] bigIntArray =  testValue.toByteArray(); 
// may be 1 to 9 bytes depending on number
-                               byte[] byteArray = {0, 0, 0, 0, 0, 0, 0, 0};
-                               int effectiveBigIntArrayLen = 
bigIntArray.length > 8 ? 8 : bigIntArray.length; // Cap length at 8
-                               int bigIntArrayOffs = bigIntArray.length > 8 ? 
bigIntArray.length - 8 : 0; // Offset when length > 8
-                               for (int i=0; i<bigIntArray.length && i < 8; 
i++)
-                                       byteArray[8 - effectiveBigIntArrayLen + 
i] = bigIntArray[bigIntArrayOffs + i];
-                               message = session.createBytesMessage();
-                               ((BytesMessage)message).writeBytes(byteArray);
-                               break;
-                       }
-                       case "byte":
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeByte(Byte.parseByte(testValueStr));
-                               break;
-                       case "short":
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeShort(Short.parseShort(testValueStr));
-                               break;
-                       case "int":
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeInt(Integer.parseInt(testValueStr));
-                               break;
-                       case "long":
-                       case "timestamp":
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeLong(Long.parseLong(testValueStr));
-                               break;
-                       case "float":
-                               Long i = 
Long.parseLong(testValueStr.substring(2), 16);
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeFloat(Float.intBitsToFloat(i.intValue()));
-                               break;
-                       case "double":
-                               Long l1 = 
Long.parseLong(testValueStr.substring(2, 3), 16) << 60;
-                               Long l2 = 
Long.parseLong(testValueStr.substring(3), 16);
-                               message = session.createBytesMessage();
-                               
((BytesMessage)message).writeDouble(Double.longBitsToDouble(l1 | l2));
-                               break;
-                       case "decimal32":
-                               BigDecimal bd32 = new BigDecimal(testValueStr, 
MathContext.DECIMAL32);
-                               message = session.createObjectMessage();
-                               ((ObjectMessage)message).setObject(bd32);
-                               break;
-                       case "decimal64":
-                               BigDecimal bd64 = new BigDecimal(testValueStr, 
MathContext.DECIMAL64);
-                               message = session.createObjectMessage();
-                               ((ObjectMessage)message).setObject(bd64);
-                               break;
-                       case "decimal128":
-                               BigDecimal bd128 = new BigDecimal(testValueStr, 
MathContext.DECIMAL128);
-                               message = session.createObjectMessage();
-                               ((ObjectMessage)message).setObject(bd128);
-                               break;
-                       case "char":
-                               char c = 0;
-                               if (testValueStr.length() == 1) // Single char
-                                       c = testValueStr.charAt(0);
-                               else if (testValueStr.length() == 6) // unicode 
format
-                                       c = 
(char)Integer.parseInt(testValueStr, 16);
-                               message = session.createBytesMessage();
-                               ((BytesMessage)message).writeChar(c);
-                               break;
-                       case "uuid":
-                               UUID uuid = UUID.fromString(testValueStr);
-                               message = session.createObjectMessage();
-                               ((ObjectMessage)message).setObject(uuid);
-                               break;
-                       case "binary":
-                               message = session.createBytesMessage();
-                               byte[] byteArray = testValueStr.getBytes();
-                               ((BytesMessage)message).writeBytes(byteArray, 
0, byteArray.length);
-                               break;
-                       case "string":
-                               message = 
session.createTextMessage(testValueStr);
-                               break;
-                       case "symbol":
-                               message = session.createBytesMessage();
-                               ((BytesMessage)message).writeUTF(testValueStr);
-                               break;
-                       case "list":
-                               break;
-                       case "map":
-                               break;
-                       case "array":
-                               break;
-                       default:
-                               // Internal error, should never happen if 
SUPPORTED_AMQP_TYPES matches this case stmt
-                               connection.close();
-                               throw new Exception("AmqpSender: Internal 
error: unsupported AMQP type \"" + amqpType + "\"");
-                       }
-                       messageProducer.send(message, 
DeliveryMode.NON_PERSISTENT, Message.DEFAULT_PRIORITY, 
Message.DEFAULT_TIME_TO_LIVE);
-               }
+                Message message = null;
+                for (String testValueStr : testValueList) {
+                    switch (amqpType) {
+                    case "null":
+                        message = session.createBytesMessage();
+                        break;
+                    case "boolean":
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeBoolean(Boolean.parseBoolean(testValueStr));
+                        break;
+                    case "ubyte":
+                    {
+                        byte testValue = (byte)Short.parseShort(testValueStr);
+                        message = session.createBytesMessage();
+                        ((BytesMessage)message).writeByte(testValue);
+                        break;
+                    }
+                    case "ushort":
+                    {
+                        int testValue = Integer.parseInt(testValueStr);
+                        byte[] byteArray = new byte[2];
+                        byteArray[0] = (byte)(testValue >> 8);
+                        byteArray[1] = (byte)(testValue);
+                        message = session.createBytesMessage();
+                        ((BytesMessage)message).writeBytes(byteArray);
+                        break;
+                    }
+                    case "uint":
+                    {
+                        long testValue = Long.parseLong(testValueStr);
+                        byte[] byteArray = new byte[4];
+                        byteArray[0] = (byte)(testValue >> 24);
+                        byteArray[1] = (byte)(testValue >> 16);
+                        byteArray[2] = (byte)(testValue >> 8);
+                        byteArray[3] = (byte)(testValue);
+                        message = session.createBytesMessage();
+                        ((BytesMessage)message).writeBytes(byteArray);
+                        break;
+                    }
+                    case "ulong":
+                    {
+                        // TODO: Tidy this ugliness up - perhaps use of 
vector<byte>?
+                        BigInteger testValue = new BigInteger(testValueStr);
+                        byte[] bigIntArray =  testValue.toByteArray(); // may 
be 1 to 9 bytes depending on number
+                        byte[] byteArray = {0, 0, 0, 0, 0, 0, 0, 0};
+                        int effectiveBigIntArrayLen = bigIntArray.length > 8 ? 
8 : bigIntArray.length; // Cap length at 8
+                        int bigIntArrayOffs = bigIntArray.length > 8 ? 
bigIntArray.length - 8 : 0; // Offset when length > 8
+                        for (int i=0; i<bigIntArray.length && i < 8; i++)
+                            byteArray[8 - effectiveBigIntArrayLen + i] = 
bigIntArray[bigIntArrayOffs + i];
+                        message = session.createBytesMessage();
+                        ((BytesMessage)message).writeBytes(byteArray);
+                        break;
+                    }
+                    case "byte":
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeByte(Byte.parseByte(testValueStr));
+                        break;
+                    case "short":
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeShort(Short.parseShort(testValueStr));
+                        break;
+                    case "int":
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeInt(Integer.parseInt(testValueStr));
+                        break;
+                    case "long":
+                    case "timestamp":
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeLong(Long.parseLong(testValueStr));
+                        break;
+                    case "float":
+                        Long i = Long.parseLong(testValueStr.substring(2), 16);
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeFloat(Float.intBitsToFloat(i.intValue()));
+                        break;
+                    case "double":
+                        Long l1 = Long.parseLong(testValueStr.substring(2, 3), 
16) << 60;
+                        Long l2 = Long.parseLong(testValueStr.substring(3), 
16);
+                        message = session.createBytesMessage();
+                        
((BytesMessage)message).writeDouble(Double.longBitsToDouble(l1 | l2));
+                        break;
+                    case "decimal32":
+                        BigDecimal bd32 = new BigDecimal(testValueStr, 
MathContext.DECIMAL32);
+                        message = session.createObjectMessage();
+                        ((ObjectMessage)message).setObject(bd32);
+                        break;
+                    case "decimal64":
+                        BigDecimal bd64 = new BigDecimal(testValueStr, 
MathContext.DECIMAL64);
+                        message = session.createObjectMessage();
+                        ((ObjectMessage)message).setObject(bd64);
+                        break;
+                    case "decimal128":
+                        BigDecimal bd128 = new BigDecimal(testValueStr, 
MathContext.DECIMAL128);
+                        message = session.createObjectMessage();
+                        ((ObjectMessage)message).setObject(bd128);
+                        break;
+                    case "char":
+                        char c = 0;
+                        if (testValueStr.length() == 1) // Single char
+                            c = testValueStr.charAt(0);
+                        else if (testValueStr.length() == 6) // unicode format
+                            c = (char)Integer.parseInt(testValueStr, 16);
+                        message = session.createBytesMessage();
+                        ((BytesMessage)message).writeChar(c);
+                        break;
+                    case "uuid":
+                        UUID uuid = UUID.fromString(testValueStr);
+                        message = session.createObjectMessage();
+                        ((ObjectMessage)message).setObject(uuid);
+                        break;
+                    case "binary":
+                        message = session.createBytesMessage();
+                        byte[] byteArray = testValueStr.getBytes();
+                        ((BytesMessage)message).writeBytes(byteArray, 0, 
byteArray.length);
+                        break;
+                    case "string":
+                        message = session.createTextMessage(testValueStr);
+                        break;
+                    case "symbol":
+                        message = session.createBytesMessage();
+                        ((BytesMessage)message).writeUTF(testValueStr);
+                        break;
+                    case "list":
+                        break;
+                    case "map":
+                        break;
+                    case "array":
+                        break;
+                    default:
+                        // Internal error, should never happen if 
SUPPORTED_AMQP_TYPES matches this case stmt
+                        connection.close();
+                        throw new Exception("AmqpSender: Internal error: 
unsupported AMQP type \"" + amqpType + "\"");
+                    }
+                    messageProducer.send(message, DeliveryMode.NON_PERSISTENT, 
Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
+                }
             } else {
-               System.out.println("ERROR: AmqpSender: AMQP type \"" + amqpType 
+ "\" is not supported");
-               connection.close();
-               System.exit(1);
+                System.out.println("ERROR: AmqpSender: AMQP type \"" + 
amqpType + "\" is not supported");
+                connection.close();
+                System.exit(1);
             }
             
             connection.close();
@@ -242,11 +242,11 @@ public class AmqpSender {
     }
     
     protected static boolean isSupportedAmqpType(String amqpType) {
-       for (String supportedAmqpType: SUPPORTED_AMQP_TYPES) {
-               if (amqpType.equals(supportedAmqpType))
-                       return true;
-       }
-       return false;
+        for (String supportedAmqpType: SUPPORTED_AMQP_TYPES) {
+            if (amqpType.equals(supportedAmqpType))
+                return true;
+        }
+        return false;
     }
 
     private static class MyExceptionListener implements ExceptionListener {

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/4e6f4f29/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/JmsReceiverShim.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/JmsReceiverShim.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/JmsReceiverShim.java
index f567638..6cdb886 100644
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/JmsReceiverShim.java
+++ 
b/shims/qpid-jms/src/main/java/org/apache/qpid/qpid_interop_test/shim/JmsReceiverShim.java
@@ -50,236 +50,236 @@ public class JmsReceiverShim {
     private static final String PASSWORD = "guest";
     private static final int TIMEOUT = 1000;
     private static final String[] SUPPORTED_JMS_MESSAGE_TYPES = 
{"JMS_BYTESMESSAGE_TYPE",
-                                                                               
                                         "JMS_MAPMESSAGE_TYPE",
-                                                                               
                                         "JMS_OBJECTMESSAGE_TYPE",
-                                                                               
                                         "JMS_STREAMMESSAGE_TYPE",
-                                                                               
                                         "JMS_TEXTMESSAGE_TYPE"};
+                                                                 
"JMS_MAPMESSAGE_TYPE",
+                                                                 
"JMS_OBJECTMESSAGE_TYPE",
+                                                                 
"JMS_STREAMMESSAGE_TYPE",
+                                                                 
"JMS_TEXTMESSAGE_TYPE"};
 
     // args[0]: Broker URL
     // args[1]: Queue name
     // args[2]: JMS message type
     // args[3]: JSON Test number map
     public static void main(String[] args) throws Exception {
-       if (args.length < 4) {
-               System.out.println("JmsReceiverShim: Insufficient number of 
arguments");
-               System.out.println("JmsReceiverShim: Expected arguments: 
broker_address, queue_name, amqp_type, num_test_values");
-               System.exit(1);
-       }
-       String brokerAddress = "amqp://" + args[0];
-       String queueName = args[1];
-       String jmsMessageType = args[2];
-       if (!isSupportedJmsMessageType(jmsMessageType)) {
-               System.out.println("ERROR: JmsReceiverShim: unknown or 
unsupported JMS message type \"" + jmsMessageType + "\"");
-               System.exit(1);                 
-       }
-       
-       JsonReader jsonReader = Json.createReader(new StringReader(args[3]));
-       JsonObject numTestValuesMap = jsonReader.readObject();
-       jsonReader.close();
-       
-       Connection connection = null;
+        if (args.length < 4) {
+            System.out.println("JmsReceiverShim: Insufficient number of 
arguments");
+            System.out.println("JmsReceiverShim: Expected arguments: 
broker_address, queue_name, amqp_type, num_test_values");
+            System.exit(1);
+        }
+        String brokerAddress = "amqp://" + args[0];
+        String queueName = args[1];
+        String jmsMessageType = args[2];
+        if (!isSupportedJmsMessageType(jmsMessageType)) {
+            System.out.println("ERROR: JmsReceiverShim: unknown or unsupported 
JMS message type \"" + jmsMessageType + "\"");
+            System.exit(1);
+        }
+
+        JsonReader jsonReader = Json.createReader(new StringReader(args[3]));
+        JsonObject numTestValuesMap = jsonReader.readObject();
+        jsonReader.close();
+
+        Connection connection = null;
 
         try {
-               ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
+            ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
 
             connection = factory.createConnection(USER, PASSWORD);
             connection.setExceptionListener(new MyExceptionListener());
             connection.start();
 
             Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
-            
+
             Queue queue = session.createQueue(queueName);
 
             MessageConsumer messageConsumer = session.createConsumer(queue);
             
-                       List<String> keyList = new 
ArrayList<String>(numTestValuesMap.keySet());
-                       Collections.sort(keyList);
-                       
+            List<String> keyList = new 
ArrayList<String>(numTestValuesMap.keySet());
+            Collections.sort(keyList);
+
             Message message = null;
             JsonObjectBuilder job = Json.createObjectBuilder();
-                       for (String key: keyList) {
-                               JsonArrayBuilder jab = 
Json.createArrayBuilder();
-                               for (int i=0; 
i<numTestValuesMap.getJsonNumber(key).intValue(); ++i) {
-                                       message = 
messageConsumer.receive(TIMEOUT);
-                                       if (message == null) break;
-                               switch (jmsMessageType) {
-                               case "JMS_BYTESMESSAGE_TYPE":
-                                       switch (key) {
-                                       case "boolean":
-                                               
jab.add(((BytesMessage)message).readBoolean()?"True":"False");
-                                               break;
-                                       case "byte":
-                                               
jab.add(formatByte(((BytesMessage)message).readByte()));
-                                               break;
-                                       case "bytes":
-                                               {
-                                                       byte[] bytesBuff = new 
byte[65536];
-                                                       int numBytesRead = 
((BytesMessage)message).readBytes(bytesBuff);
-                                                       if (numBytesRead >= 0) {
-                                                               jab.add(new 
String(Arrays.copyOfRange(bytesBuff, 0, numBytesRead)));
-                                                       } else {
-                                                               // NOTE: For 
this case, an empty byte array has nothing to return
-                                                               jab.add(new 
String());
-                                                       }
-                                               }
-                                               break;
-                                       case "char":
-                                               
jab.add(formatChar(((BytesMessage)message).readChar()));
-                                               break;
-                                       case "double":
-                                               long l = 
Double.doubleToRawLongBits(((BytesMessage)message).readDouble());
-                                               jab.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
-                                               break;
-                                       case "float":
-                                               int i0 = 
Float.floatToRawIntBits(((BytesMessage)message).readFloat());
-                                               jab.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
-                                               break;
-                                       case "int":
-                                               
jab.add(formatInt(((BytesMessage)message).readInt()));
-                                               break;
-                                       case "long":
-                                               
jab.add(formatLong(((BytesMessage)message).readLong()));
-                                               break;
-                                       case "object":
-                                               {
-                                                       byte[] bytesBuff = new 
byte[65536];
-                                                       int numBytesRead = 
((BytesMessage)message).readBytes(bytesBuff);
-                                                       if (numBytesRead >= 0) {
-                                                               
ByteArrayInputStream bais = new 
ByteArrayInputStream(Arrays.copyOfRange(bytesBuff, 0, numBytesRead));
-                                                               
ObjectInputStream ois = new ObjectInputStream(bais);
-                                                               Object obj = 
ois.readObject();
-                                                               
jab.add(obj.getClass().getName() + ":" + obj.toString());
-                                                       } else {
-                                                               
jab.add("<object error>");
-                                                       }
-                                               }
-                                               break;
-                                       case "short":
-                                               
jab.add(formatShort(((BytesMessage)message).readShort()));
-                                               break;
-                                       case "string":
-                                               
jab.add(((BytesMessage)message).readUTF());
-                                               break;
-                                       default:
-                                               throw new 
Exception("JmsReceiverShim: Unknown subtype for " + jmsMessageType + ": \"" + 
key + "\"");
-                                       }
-                                       break;
-                               case "JMS_STREAMMESSAGE_TYPE":
-                                       switch (key) {
-                                       case "boolean":
-                                               
jab.add(((StreamMessage)message).readBoolean()?"True":"False");
-                                               break;
-                                       case "byte":
-                                               
jab.add(formatByte(((StreamMessage)message).readByte()));
-                                               break;
-                                       case "bytes":
-                                               byte[] bytesBuff = new 
byte[65536];
-                                               int numBytesRead = 
((StreamMessage)message).readBytes(bytesBuff);
-                                               if (numBytesRead >= 0) {
-                                                       jab.add(new 
String(Arrays.copyOfRange(bytesBuff, 0, numBytesRead)));
-                                               } else {
-                                                       
System.out.println("StreamMessage.readBytes() returned " + numBytesRead);
-                                                       jab.add("<bytes 
error>");
-                                               }
-                                               break;
-                                       case "char":
-                                               
jab.add(formatChar(((StreamMessage)message).readChar()));
-                                               break;
-                                       case "double":
-                                               long l = 
Double.doubleToRawLongBits(((StreamMessage)message).readDouble());
-                                               jab.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
-                                               break;
-                                       case "float":
-                                               int i0 = 
Float.floatToRawIntBits(((StreamMessage)message).readFloat());
-                                               jab.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
-                                               break;
-                                       case "int":
-                                               
jab.add(formatInt(((StreamMessage)message).readInt()));
-                                               break;
-                                       case "long":
-                                               
jab.add(formatLong(((StreamMessage)message).readLong()));
-                                               break;
-                                       case "object":
-                                               Object obj = 
((StreamMessage)message).readObject();
-                                               
jab.add(obj.getClass().getName() + ":" + obj.toString());
-                                               break;
-                                       case "short":
-                                               
jab.add(formatShort(((StreamMessage)message).readShort()));
-                                               break;
-                                       case "string":
-                                               
jab.add(((StreamMessage)message).readString());
-                                               break;
-                                       default:
-                                               throw new 
Exception("JmsReceiverShim: Unknown subtype for " + jmsMessageType + ": \"" + 
key + "\"");
-                                       }
-                                       break;
-                               case "JMS_MAPMESSAGE_TYPE":
-                                       String name = String.format("%s%03d", 
key, i);
-                                       switch (key) {
-                                       case "boolean":
-                                               
jab.add(((MapMessage)message).getBoolean(name)?"True":"False");
-                                               break;
-                                       case "byte":
-                                               
jab.add(formatByte(((MapMessage)message).getByte(name)));
-                                               break;
-                                       case "bytes":
-                                               jab.add(new 
String(((MapMessage)message).getBytes(name)));
-                                               break;
-                                       case "char":
-                                               
jab.add(formatChar(((MapMessage)message).getChar(name)));
-                                               break;
-                                       case "double":
-                                               long l = 
Double.doubleToRawLongBits(((MapMessage)message).getDouble(name));
-                                               jab.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
-                                               break;
-                                       case "float":
-                                               int i0 = 
Float.floatToRawIntBits(((MapMessage)message).getFloat(name));
-                                               jab.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
-                                               break;
-                                       case "int":
-                                               
jab.add(formatInt(((MapMessage)message).getInt(name)));
-                                               break;
-                                       case "long":
-                                               
jab.add(formatLong(((MapMessage)message).getLong(name)));
-                                               break;
-                                       case "object":
-                                               Object obj = 
((MapMessage)message).getObject(name);
-                                               
jab.add(obj.getClass().getName() + ":" + obj.toString());
-                                               break;
-                                       case "short":
-                                               
jab.add(formatShort(((MapMessage)message).getShort(name)));
-                                               break;
-                                       case "string":
-                                               
jab.add(((MapMessage)message).getString(name));
-                                               break;
-                                       default:
-                                               throw new 
Exception("JmsReceiverShim: Unknown subtype for " + jmsMessageType + ": \"" + 
key + "\"");
-                                       }
-                                       break;
-                               case "JMS_OBJECTMESSAGE_TYPE":
-                                       
jab.add(((ObjectMessage)message).getObject().toString());
-                                       break;
-                               case "JMS_TEXTMESSAGE_TYPE":
-                                       
jab.add(((TextMessage)message).getText());
-                                       break;
-                               default:
-                                       connection.close();
-                                       throw new Exception("JmsReceiverShim: 
Internal error: unknown or unsupported JMS message type \"" + jmsMessageType + 
"\"");
-                               }
-                               }
-                               job.add(key, jab);
-                       }
-               connection.close();
-       
-               System.out.println(jmsMessageType);
-               StringWriter out = new StringWriter();
-               JsonWriter jsonWriter = Json.createWriter(out);
-               jsonWriter.writeObject(job.build());
-               jsonWriter.close();
-               System.out.println(out.toString());
+            for (String key: keyList) {
+                JsonArrayBuilder jab = Json.createArrayBuilder();
+                for (int i=0; 
i<numTestValuesMap.getJsonNumber(key).intValue(); ++i) {
+                    message = messageConsumer.receive(TIMEOUT);
+                    if (message == null) break;
+                    switch (jmsMessageType) {
+                    case "JMS_BYTESMESSAGE_TYPE":
+                        switch (key) {
+                        case "boolean":
+                            
jab.add(((BytesMessage)message).readBoolean()?"True":"False");
+                            break;
+                        case "byte":
+                            
jab.add(formatByte(((BytesMessage)message).readByte()));
+                            break;
+                        case "bytes":
+                            {
+                                byte[] bytesBuff = new byte[65536];
+                                int numBytesRead = 
((BytesMessage)message).readBytes(bytesBuff);
+                                if (numBytesRead >= 0) {
+                                    jab.add(new 
String(Arrays.copyOfRange(bytesBuff, 0, numBytesRead)));
+                                } else {
+                                    // NOTE: For this case, an empty byte 
array has nothing to return
+                                    jab.add(new String());
+                                }
+                            }
+                            break;
+                        case "char":
+                            
jab.add(formatChar(((BytesMessage)message).readChar()));
+                            break;
+                        case "double":
+                            long l = 
Double.doubleToRawLongBits(((BytesMessage)message).readDouble());
+                            jab.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
+                            break;
+                        case "float":
+                            int i0 = 
Float.floatToRawIntBits(((BytesMessage)message).readFloat());
+                            jab.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
+                            break;
+                        case "int":
+                            
jab.add(formatInt(((BytesMessage)message).readInt()));
+                            break;
+                        case "long":
+                            
jab.add(formatLong(((BytesMessage)message).readLong()));
+                            break;
+                        case "object":
+                            {
+                                byte[] bytesBuff = new byte[65536];
+                                int numBytesRead = 
((BytesMessage)message).readBytes(bytesBuff);
+                                if (numBytesRead >= 0) {
+                                    ByteArrayInputStream bais = new 
ByteArrayInputStream(Arrays.copyOfRange(bytesBuff, 0, numBytesRead));
+                                    ObjectInputStream ois = new 
ObjectInputStream(bais);
+                                    Object obj = ois.readObject();
+                                    jab.add(obj.getClass().getName() + ":" + 
obj.toString());
+                                } else {
+                                    jab.add("<object error>");
+                                }
+                            }
+                            break;
+                        case "short":
+                            
jab.add(formatShort(((BytesMessage)message).readShort()));
+                            break;
+                        case "string":
+                            jab.add(((BytesMessage)message).readUTF());
+                            break;
+                        default:
+                            throw new Exception("JmsReceiverShim: Unknown 
subtype for " + jmsMessageType + ": \"" + key + "\"");
+                        }
+                        break;
+                    case "JMS_STREAMMESSAGE_TYPE":
+                        switch (key) {
+                        case "boolean":
+                            
jab.add(((StreamMessage)message).readBoolean()?"True":"False");
+                            break;
+                        case "byte":
+                            
jab.add(formatByte(((StreamMessage)message).readByte()));
+                            break;
+                        case "bytes":
+                            byte[] bytesBuff = new byte[65536];
+                            int numBytesRead = 
((StreamMessage)message).readBytes(bytesBuff);
+                            if (numBytesRead >= 0) {
+                                jab.add(new 
String(Arrays.copyOfRange(bytesBuff, 0, numBytesRead)));
+                            } else {
+                                System.out.println("StreamMessage.readBytes() 
returned " + numBytesRead);
+                                jab.add("<bytes error>");
+                            }
+                            break;
+                        case "char":
+                            
jab.add(formatChar(((StreamMessage)message).readChar()));
+                            break;
+                        case "double":
+                            long l = 
Double.doubleToRawLongBits(((StreamMessage)message).readDouble());
+                            jab.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
+                            break;
+                        case "float":
+                            int i0 = 
Float.floatToRawIntBits(((StreamMessage)message).readFloat());
+                            jab.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
+                            break;
+                        case "int":
+                            
jab.add(formatInt(((StreamMessage)message).readInt()));
+                            break;
+                        case "long":
+                            
jab.add(formatLong(((StreamMessage)message).readLong()));
+                            break;
+                        case "object":
+                            Object obj = ((StreamMessage)message).readObject();
+                            jab.add(obj.getClass().getName() + ":" + 
obj.toString());
+                            break;
+                        case "short":
+                            
jab.add(formatShort(((StreamMessage)message).readShort()));
+                            break;
+                        case "string":
+                            jab.add(((StreamMessage)message).readString());
+                            break;
+                        default:
+                            throw new Exception("JmsReceiverShim: Unknown 
subtype for " + jmsMessageType + ": \"" + key + "\"");
+                        }
+                        break;
+                    case "JMS_MAPMESSAGE_TYPE":
+                        String name = String.format("%s%03d", key, i);
+                        switch (key) {
+                        case "boolean":
+                            
jab.add(((MapMessage)message).getBoolean(name)?"True":"False");
+                            break;
+                        case "byte":
+                            
jab.add(formatByte(((MapMessage)message).getByte(name)));
+                            break;
+                        case "bytes":
+                            jab.add(new 
String(((MapMessage)message).getBytes(name)));
+                            break;
+                        case "char":
+                            
jab.add(formatChar(((MapMessage)message).getChar(name)));
+                            break;
+                        case "double":
+                            long l = 
Double.doubleToRawLongBits(((MapMessage)message).getDouble(name));
+                            jab.add(String.format("0x%16s", 
Long.toHexString(l)).replace(' ', '0'));
+                            break;
+                        case "float":
+                            int i0 = 
Float.floatToRawIntBits(((MapMessage)message).getFloat(name));
+                            jab.add(String.format("0x%8s", 
Integer.toHexString(i0)).replace(' ', '0'));
+                            break;
+                        case "int":
+                            
jab.add(formatInt(((MapMessage)message).getInt(name)));
+                            break;
+                        case "long":
+                            
jab.add(formatLong(((MapMessage)message).getLong(name)));
+                            break;
+                        case "object":
+                            Object obj = ((MapMessage)message).getObject(name);
+                            jab.add(obj.getClass().getName() + ":" + 
obj.toString());
+                            break;
+                        case "short":
+                            
jab.add(formatShort(((MapMessage)message).getShort(name)));
+                            break;
+                        case "string":
+                            jab.add(((MapMessage)message).getString(name));
+                            break;
+                        default:
+                            throw new Exception("JmsReceiverShim: Unknown 
subtype for " + jmsMessageType + ": \"" + key + "\"");
+                        }
+                        break;
+                    case "JMS_OBJECTMESSAGE_TYPE":
+                        
jab.add(((ObjectMessage)message).getObject().toString());
+                        break;
+                    case "JMS_TEXTMESSAGE_TYPE":
+                        jab.add(((TextMessage)message).getText());
+                        break;
+                    default:
+                        connection.close();
+                        throw new Exception("JmsReceiverShim: Internal error: 
unknown or unsupported JMS message type \"" + jmsMessageType + "\"");
+                    }
+                }
+                job.add(key, jab);
+            }
+            connection.close();
+
+            System.out.println(jmsMessageType);
+            StringWriter out = new StringWriter();
+            JsonWriter jsonWriter = Json.createWriter(out);
+            jsonWriter.writeObject(job.build());
+            jsonWriter.close();
+            System.out.println(out.toString());
         } catch (Exception exp) {
-               if (connection != null)
-                       connection.close();
+            if (connection != null)
+                connection.close();
             System.out.println("Caught exception, exiting.");
             exp.printStackTrace(System.out);
             System.exit(1);
@@ -287,55 +287,55 @@ public class JmsReceiverShim {
     }
     
     protected static String formatByte(byte b) {
-       boolean neg = false;
-       if (b < 0) {
-               neg = true;
-               b = (byte)-b;
-       }
-       return String.format("%s0x%x", neg?"-":"", b);          
+        boolean neg = false;
+        if (b < 0) {
+            neg = true;
+            b = (byte)-b;
+        }
+        return String.format("%s0x%x", neg?"-":"", b);
     }
     
     protected static String formatChar(char c) {
-       if (Character.isLetterOrDigit(c)) {
-               return String.format("%c", c);
-       }
-       char[] ca = {c};
-       return new String(ca);
+        if (Character.isLetterOrDigit(c)) {
+            return String.format("%c", c);
+        }
+        char[] ca = {c};
+        return new String(ca);
     }
     
     protected static String formatInt(int i) {
-       boolean neg = false;
-       if (i < 0) {
-               neg = true;
-               i = -i;
-       }
-       return String.format("%s0x%x", neg?"-":"", i);
+        boolean neg = false;
+        if (i < 0) {
+            neg = true;
+            i = -i;
+        }
+        return String.format("%s0x%x", neg?"-":"", i);
     }
     
     protected static String formatLong(long l) {
-       boolean neg = false;
-       if (l < 0) {
-               neg = true;
-               l = -l;
-       }
-       return String.format("%s0x%x", neg?"-":"", l);
+        boolean neg = false;
+        if (l < 0) {
+            neg = true;
+            l = -l;
+        }
+        return String.format("%s0x%x", neg?"-":"", l);
     }
     
     protected static String formatShort(int s) {
-       boolean neg = false;
-       if (s < 0) {
-               neg = true;
-               s = -s;
-       }
-       return String.format("%s0x%x", neg?"-":"", s);
+        boolean neg = false;
+        if (s < 0) {
+            neg = true;
+            s = -s;
+        }
+        return String.format("%s0x%x", neg?"-":"", s);
     }
         
     protected static boolean isSupportedJmsMessageType(String jmsMessageType) {
-       for (String supportedJmsMessageType: SUPPORTED_JMS_MESSAGE_TYPES) {
-               if (jmsMessageType.equals(supportedJmsMessageType))
-                       return true;
-       }
-       return false;
+        for (String supportedJmsMessageType: SUPPORTED_JMS_MESSAGE_TYPES) {
+            if (jmsMessageType.equals(supportedJmsMessageType))
+                return true;
+        }
+    return false;
     }
 
     private static class MyExceptionListener implements ExceptionListener {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to