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]
