QPIDIT-32: Added Maven pom files, removed jars directory containing copies of 
dependent jars. Also updated to latest Proton C++ API


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/f4b87a1e
Tree: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/tree/f4b87a1e
Diff: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/diff/f4b87a1e

Branch: refs/heads/master
Commit: f4b87a1edcac4d17d25cb36a8d0c80a437657596
Parents: 87e8eae
Author: Kim van der Riet <[email protected]>
Authored: Wed May 4 10:28:18 2016 -0400
Committer: Kim van der Riet <[email protected]>
Committed: Wed May 4 10:28:18 2016 -0400

----------------------------------------------------------------------
 .gitignore                                      |   2 +-
 QUICKSTART                                      |  15 +-
 etc/proton-python-amqp-types.patch              | 201 --------
 jars/README                                     |   3 -
 jars/javax.json-1.0.4.jar                       | Bin 85147 -> 0 bytes
 jars/javax.json-api-1.0.jar                     | Bin 19754 -> 0 bytes
 jars/slf4j-nop-1.5.6.jar                        | Bin 5283 -> 0 bytes
 java-build.sh                                   |  15 -
 java-clean.sh                                   |   5 -
 pom.xml                                         |  37 ++
 shims/qpid-jms/.gitignore                       |   1 +
 shims/qpid-jms/java-build.sh                    |  28 --
 shims/qpid-jms/java-clean.sh                    |   5 -
 shims/qpid-jms/pom.xml                          |  97 ++++
 .../qpid/interop_test/shim/AmqpReceiver.java    | 271 -----------
 .../qpid/interop_test/shim/AmqpSender.java      | 260 ----------
 .../qpid/interop_test/shim/JmsReceiverShim.java | 349 --------------
 .../qpid/interop_test/shim/JmsSenderShim.java   | 368 --------------
 .../qpid_interop_test/shim/AmqpReceiver.java    | 271 +++++++++++
 .../qpid/qpid_interop_test/shim/AmqpSender.java | 260 ++++++++++
 .../qpid_interop_test/shim/JmsReceiverShim.java | 349 ++++++++++++++
 .../qpid_interop_test/shim/JmsSenderShim.java   | 368 ++++++++++++++
 shims/qpid-proton-cpp/.gitignore                |   1 +
 .../src/qpidit/shim/AmqpReceiver.cpp            |  11 +-
 .../src/qpidit/shim/AmqpReceiver.hpp            |   5 +-
 .../src/qpidit/shim/AmqpSender.cpp              |  11 +-
 .../src/qpidit/shim/AmqpSender.hpp              |   6 +-
 .../src/qpidit/shim/JmsReceiver.cpp             |   8 +-
 .../src/qpidit/shim/JmsReceiver.hpp             |   2 -
 .../src/qpidit/shim/JmsSender.cpp               |   9 +-
 .../src/qpidit/shim/JmsSender.hpp               |   2 +-
 .../interop_test/obj_util/BytesToJavaObj.java   |  83 ----
 .../interop_test/obj_util/JavaObjToBytes.java   | 129 -----
 src/py/qpid-interop-test/.gitignore             |   2 -
 src/py/qpid-interop-test/__init__.py            |  25 -
 src/py/qpid-interop-test/broker_properties.py   |  54 ---
 src/py/qpid-interop-test/interop_test_errors.py |  29 --
 .../qpid-interop-test/jms/jms_message_tests.py  | 481 -------------------
 src/py/qpid-interop-test/test_type_map.py       |  78 ---
 .../types/simple_type_tests.py                  | 478 ------------------
 src/python/qpid-interop-test/.gitignore         |   2 +
 src/python/qpid-interop-test/__init__.py        |  25 +
 .../qpid-interop-test/broker_properties.py      |  54 +++
 .../qpid-interop-test/interop_test_errors.py    |  29 ++
 .../qpid-interop-test/jms/jms_message_tests.py  | 454 +++++++++++++++++
 src/python/qpid-interop-test/test_type_map.py   |  78 +++
 .../types/simple_type_tests.py                  | 478 ++++++++++++++++++
 utils/.gitignore                                |   1 +
 utils/pom.xml                                   |  55 +++
 .../obj_util/BytesToJavaObj.java                |  83 ++++
 .../obj_util/JavaObjToBytes.java                | 129 +++++
 51 files changed, 2804 insertions(+), 2903 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index b83d222..8b13789 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-/target/
+

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/QUICKSTART
----------------------------------------------------------------------
diff --git a/QUICKSTART b/QUICKSTART
index 7ea266e..bfd2402 100644
--- a/QUICKSTART
+++ b/QUICKSTART
@@ -32,7 +32,7 @@ mvn -DskipTests install
 
 3 Prepare the tests
 -------------------
-(ONLY IF NEEDED): Edit src/py/qpid_interop/types/simple_type_tests.py as
+(ONLY IF NEEDED): Edit src/python/qpid_interop/types/simple_type_tests.py as
 needed, particularly AmqpPrimitiveTypes.TYPE_MAP which controls the AMQP types
 and test values for each type.
 
@@ -57,7 +57,7 @@ cd ../../..
 Note that installation is still to be completed, this section will change to
 reflect installation details when complete.
 
-Select one of the two following options:
+Select one of the following two options:
 
 a. qpid-proton installed:
 Assuming proton's "make install" has been run, from top level 
qpid-interop-test directory:
@@ -67,7 +67,7 @@ export QPID_INTEROP_TEST_HOME=<abs path to top level 
qpid-interop-test directory
 
 b. qpid-proton built but not installed:
 Assuming proton's "make" has been run from a "build" directory as described in 
the proton README (but not make install), from top level qpid-interop-test 
directory:
-export PYTHONPATH=<abs path to top level qpid-proton 
directory>/proton-c/bindings/python:<abs path to top level qpid-proton 
directory>/build/proton-c/bindings/python:src/py/qpid-interop-test
+export PYTHONPATH=<abs path to top level qpid-proton 
directory>/proton-c/bindings/python:<abs path to top level qpid-proton 
directory>/build/proton-c/bindings/python:src/python/qpid-interop-test
 export LD_LIBRARY_PATH=<abs path to top level qpid-proton 
directory>/build/proton-c
 export QPID_INTEROP_TEST_HOME=<abs path to top level qpid-interop-test 
directory>
 
@@ -79,11 +79,8 @@ NOTE: For qpidd, YOU MUST USE THE FOLLOWING PARAMETERS:
 
 From top level directory:
 AMQP type tests:
-./src/py/qpid-interop-test/types/simple_type_tests.py
-
-JMS message tests: In order to correctly set the Java CLASSPATH, the versions 
of Qpid-jms and Qpid-proton must be known. These are set as follows:
-./src/py/qpid-interop-test/jms/jms_message_tests.py --qpid-jms-ver 
<jms-version> --qpid-proton-ver <proton-version>
-For example:
-./src/py/qpid-interop-test/jms/jms_message_tests.py --qpid-jms-ver 
0.9.0-SNAPSHOT --qpid-proton-ver 0.13.0-SNAPSHOT
+./src/python/qpid-interop-test/types/simple_type_tests.py
 
+JMS message tests:
+./src/python/qpid-interop-test/jms/jms_message_tests.py
 

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/etc/proton-python-amqp-types.patch
----------------------------------------------------------------------
diff --git a/etc/proton-python-amqp-types.patch 
b/etc/proton-python-amqp-types.patch
deleted file mode 100644
index a337f2d..0000000
--- a/etc/proton-python-amqp-types.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-diff --git a/proton-c/bindings/python/proton/__init__.py 
b/proton-c/bindings/python/proton/__init__.py
-index 0567095..9bf2ce0 100644
---- a/proton-c/bindings/python/proton/__init__.py
-+++ b/proton-c/bindings/python/proton/__init__.py
-@@ -1290,6 +1290,56 @@ class char(unicode):
-   def __repr__(self):
-     return "char(%s)" % unicode.__repr__(self)
- 
-+class byte(int):
-+
-+  def __repr__(self):
-+    return "byte(%s)" % int.__repr__(self)
-+
-+class short(int):
-+
-+  def __repr__(self):
-+    return "short(%s)" % int.__repr__(self)
-+
-+class int32(int):
-+
-+  def __repr__(self):
-+      return "int32(%s)" % int.__repr__(self)
-+
-+class ubyte(int):
-+
-+  def __repr__(self):
-+    return "ubyte(%s)" % int.__repr__(self)
-+
-+class ushort(int):
-+
-+  def __repr__(self):
-+    return "ushort(%s)" % int.__repr__(self)
-+
-+class uint(int):
-+
-+  def __repr__(self):
-+      return "uint(%s)" % int.__repr__(self)
-+
-+class float32(float):
-+
-+  def __repr__(self):
-+    return "float32(%s)" % float.__repr__(self)
-+
-+class decimal32(int):
-+
-+  def __repr__(self):
-+    return "decimal32(%s)" % int.__repr__(self)
-+
-+class decimal64(long):
-+
-+  def __repr__(self):
-+    return "decimal64(%s)" % long.__repr__(self)
-+
-+class decimal128(bytes):
-+
-+  def __repr__(self):
-+    return "decimal128(%s)" % bytes.__repr__(self)
-+
- class Described(object):
- 
-   def __init__(self, descriptor, value):
-@@ -1902,42 +1952,42 @@ class Data:
-     If the current node is an unsigned byte, returns its value,
-     returns 0 otherwise.
-     """
--    return pn_data_get_ubyte(self._data)
-+    return ubyte(pn_data_get_ubyte(self._data))
- 
-   def get_byte(self):
-     """
-     If the current node is a signed byte, returns its value, returns 0
-     otherwise.
-     """
--    return pn_data_get_byte(self._data)
-+    return byte(pn_data_get_byte(self._data))
- 
-   def get_ushort(self):
-     """
-     If the current node is an unsigned short, returns its value,
-     returns 0 otherwise.
-     """
--    return pn_data_get_ushort(self._data)
-+    return ushort(pn_data_get_ushort(self._data))
- 
-   def get_short(self):
-     """
-     If the current node is a signed short, returns its value, returns
-     0 otherwise.
-     """
--    return pn_data_get_short(self._data)
-+    return short(pn_data_get_short(self._data))
- 
-   def get_uint(self):
-     """
-     If the current node is an unsigned int, returns its value, returns
-     0 otherwise.
-     """
--    return pn_data_get_uint(self._data)
-+    return uint(pn_data_get_uint(self._data))
- 
-   def get_int(self):
-     """
-     If the current node is a signed int, returns its value, returns 0
-     otherwise.
-     """
--    return int(pn_data_get_int(self._data))
-+    return int32(pn_data_get_int(self._data))
- 
-   def get_char(self):
-     """
-@@ -1972,7 +2022,7 @@ class Data:
-     If the current node is a float, returns its value, raises 0
-     otherwise.
-     """
--    return pn_data_get_float(self._data)
-+    return float32(pn_data_get_float(self._data))
- 
-   def get_double(self):
-     """
-@@ -1987,7 +2037,7 @@ class Data:
-     If the current node is a decimal32, returns its value, returns 0
-     otherwise.
-     """
--    return pn_data_get_decimal32(self._data)
-+    return decimal32(pn_data_get_decimal32(self._data))
- 
-   # XXX: need to convert
-   def get_decimal64(self):
-@@ -1995,7 +2045,7 @@ class Data:
-     If the current node is a decimal64, returns its value, returns 0
-     otherwise.
-     """
--    return pn_data_get_decimal64(self._data)
-+    return decimal64(pn_data_get_decimal64(self._data))
- 
-   # XXX: need to convert
-   def get_decimal128(self):
-@@ -2003,7 +2053,7 @@ class Data:
-     If the current node is a decimal128, returns its value, returns 0
-     otherwise.
-     """
--    return pn_data_get_decimal128(self._data)
-+    return decimal128(pn_data_get_decimal128(self._data))
- 
-   def get_uuid(self):
-     """
-@@ -2155,18 +2205,29 @@ class Data:
-   put_mappings = {
-     None.__class__: lambda s, _: s.put_null(),
-     bool: put_bool,
--    dict: put_dict,
--    list: put_sequence,
--    tuple: put_sequence,
--    unicode: put_string,
--    bytes: put_binary,
--    symbol: put_symbol,
-+    ubyte: put_ubyte,
-+    ushort: put_ushort,
-+    uint: put_uint,
-+    ulong: put_ulong,
-+    byte: put_byte,
-+    short: put_short,
-+    int32: put_int,
-+    int: put_long,
-     long: put_long,
-+    float32: put_float,
-+    float: put_double,
-+    decimal32: put_decimal32,
-+    decimal64: put_decimal64,
-+    decimal128: put_decimal128,
-     char: put_char,
--    ulong: put_ulong,
-     timestamp: put_timestamp,
--    float: put_double,
-     uuid.UUID: put_uuid,
-+    bytes: put_binary,
-+    unicode: put_string,
-+    symbol: put_symbol,
-+    list: put_sequence,
-+    tuple: put_sequence,
-+    dict: put_dict,
-     Described: put_py_described,
-     Array: put_py_array
-     }
-@@ -4123,5 +4184,15 @@ __all__ = [
-            "dispatch",
-            "symbol",
-            "timestamp",
--           "ulong"
-+           "ulong",
-+           "byte",
-+           "short",
-+           "int32",
-+           "ubyte",
-+           "ushort",
-+           "uint",
-+           "float32",
-+           "decimal32",
-+           "decimal64",
-+           "decimal128"
-            ]

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/jars/README
----------------------------------------------------------------------
diff --git a/jars/README b/jars/README
deleted file mode 100644
index 4aea73f..0000000
--- a/jars/README
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory is a temporary landing place for jars that need to be included
-in the java CLASSPATH. Once this project has been Maven-ized, it is expected
-that this will be handled automatically by Maven and this dir will go away.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/jars/javax.json-1.0.4.jar
----------------------------------------------------------------------
diff --git a/jars/javax.json-1.0.4.jar b/jars/javax.json-1.0.4.jar
deleted file mode 100644
index 09967d8..0000000
Binary files a/jars/javax.json-1.0.4.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/jars/javax.json-api-1.0.jar
----------------------------------------------------------------------
diff --git a/jars/javax.json-api-1.0.jar b/jars/javax.json-api-1.0.jar
deleted file mode 100644
index d276c79..0000000
Binary files a/jars/javax.json-api-1.0.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/jars/slf4j-nop-1.5.6.jar
----------------------------------------------------------------------
diff --git a/jars/slf4j-nop-1.5.6.jar b/jars/slf4j-nop-1.5.6.jar
deleted file mode 100644
index 71fda42..0000000
Binary files a/jars/slf4j-nop-1.5.6.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/java-build.sh
----------------------------------------------------------------------
diff --git a/java-build.sh b/java-build.sh
deleted file mode 100755
index 27de828..0000000
--- a/java-build.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-# JARS
-#JMS_API=${HOME}/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar:${HOME}/.m2/repository/org/apache/qpid/qpid-jms-client/0.4.0-SNAPSHOT/qpid-jms-client-0.4.0-SNAPSHOT.jar
-#JSON_API=../../jars/javax.json-api-1.0.jar
-#CLASSPATH=${JMS_API}:${JSON_API}
-CLASSPATH=
-
-BASEPATH=org/apache/qpid/interop_test/obj_util
-SRCPATH=src/main/java/${BASEPATH}
-TARGETPATH=target
-
-mkdir -p ${TARGETPATH}/classes
-javac -cp ${CLASSPATH} -Xlint:unchecked -d ${TARGETPATH}/classes 
${SRCPATH}/JavaObjToBytes.java ${SRCPATH}/BytesToJavaObj.java
-jar -cf ${TARGETPATH}/JavaObjUtils.jar -C ${TARGETPATH}/classes 
${BASEPATH}/JavaObjToBytes.class -C ${TARGETPATH}/classes 
${BASEPATH}/BytesToJavaObj.class

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/java-clean.sh
----------------------------------------------------------------------
diff --git a/java-clean.sh b/java-clean.sh
deleted file mode 100755
index 7fc8be1..0000000
--- a/java-clean.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-TARGETPATH=target
-
-rm -rf ${TARGETPATH}/*.jar ${TARGETPATH}/classes/*

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..a00b546
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+  <modelVersion>4.0.0</modelVersion>
+  <name>qpid-interop-test-parent</name>
+  <url>https://qpid.apache.org</url>
+
+  <groupId>org.apache.qpid</groupId>
+  <artifactId>qpid-interop-test-parent</artifactId>
+  <packaging>pom</packaging>
+  <version>0.1.0-SNAPSHOT</version>
+
+  <modules>
+    <module>shims/qpid-jms</module>
+    <module>utils</module>
+  </modules>
+
+  <dependencies>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/.gitignore
----------------------------------------------------------------------
diff --git a/shims/qpid-jms/.gitignore b/shims/qpid-jms/.gitignore
index b83d222..c0fa915 100644
--- a/shims/qpid-jms/.gitignore
+++ b/shims/qpid-jms/.gitignore
@@ -1 +1,2 @@
+/cp.txt
 /target/

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/java-build.sh
----------------------------------------------------------------------
diff --git a/shims/qpid-jms/java-build.sh b/shims/qpid-jms/java-build.sh
deleted file mode 100755
index 587c5ca..0000000
--- a/shims/qpid-jms/java-build.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-# JARS
-MVN_LOCAL_REPOSITORY=${HOME}/.m2/repository
-QPID_JMS_CLIENT_LOCATION=${MVN_LOCAL_REPOSITORY}/org/apache/qpid/qpid-jms-client
-
-echo "Available qpid-jms client versions:"
-for d in ${QPID_JMS_CLIENT_LOCATION}/*; do
-    if [ -d ${d} ]; then
-               echo "  ${d##*/}"
-    fi
-done
-
-# TODO: get this from the above list, which needs sorting to find latest 
version by default
-JMS_VERSION=0.9.0-SNAPSHOT
-echo "Current qpid-jms client version: ${JMS_VERSION}"
-
-JMS_API=${MVN_LOCAL_REPOSITORY}/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar:${QPID_JMS_CLIENT_LOCATION}/${JMS_VERSION}/qpid-jms-client-${JMS_VERSION}.jar
-JSON_API=../../jars/javax.json-api-1.0.jar
-CLASSPATH=${JMS_API}:${JSON_API}
-
-BASEPATH=org/apache/qpid/interop_test/shim
-SRCPATH=src/main/java/${BASEPATH}
-TARGETPATH=target
-
-mkdir -p ${TARGETPATH}/classes
-javac -cp ${CLASSPATH} -Xlint:unchecked -d ${TARGETPATH}/classes 
${SRCPATH}/AmqpSender.java ${SRCPATH}/AmqpReceiver.java  
${SRCPATH}/JmsSenderShim.java ${SRCPATH}/JmsReceiverShim.java
-jar -cf ${TARGETPATH}/qpid-jms-shim.jar -C ${TARGETPATH}/classes 
${BASEPATH}/AmqpSender.class -C ${TARGETPATH}/classes 
${BASEPATH}/AmqpSender\$1.class -C ${TARGETPATH}/classes 
${BASEPATH}/AmqpSender\$MyExceptionListener.class -C ${TARGETPATH}/classes 
${BASEPATH}/AmqpReceiver.class -C ${TARGETPATH}/classes 
${BASEPATH}/AmqpReceiver\$1.class -C ${TARGETPATH}/classes 
${BASEPATH}/AmqpReceiver\$MyExceptionListener.class  -C ${TARGETPATH}/classes 
${BASEPATH}/JmsSenderShim.class -C ${TARGETPATH}/classes 
${BASEPATH}/JmsSenderShim\$1.class -C ${TARGETPATH}/classes 
${BASEPATH}/JmsSenderShim\$MyExceptionListener.class -C ${TARGETPATH}/classes 
${BASEPATH}/JmsReceiverShim.class -C ${TARGETPATH}/classes 
${BASEPATH}/JmsReceiverShim\$1.class -C ${TARGETPATH}/classes 
${BASEPATH}/JmsReceiverShim\$MyExceptionListener.class

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/java-clean.sh
----------------------------------------------------------------------
diff --git a/shims/qpid-jms/java-clean.sh b/shims/qpid-jms/java-clean.sh
deleted file mode 100755
index 7fc8be1..0000000
--- a/shims/qpid-jms/java-clean.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-TARGETPATH=target
-
-rm -rf ${TARGETPATH}/*.jar ${TARGETPATH}/classes/*

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/pom.xml
----------------------------------------------------------------------
diff --git a/shims/qpid-jms/pom.xml b/shims/qpid-jms/pom.xml
new file mode 100644
index 0000000..23aef33
--- /dev/null
+++ b/shims/qpid-jms/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+  <modelVersion>4.0.0</modelVersion>
+  <name>qpid-interop-test-jms-shim</name>
+  <url>https://qpid.apache.org</url>
+
+  <groupId>org.apache.qpid</groupId>
+  <artifactId>qpid-interop-test-jms-shim</artifactId>
+  <packaging>jar</packaging>
+  <version>0.1.0-SNAPSHOT</version>
+  
+  <parent>
+    <groupId>org.apache.qpid</groupId>
+    <artifactId>qpid-interop-test-parent</artifactId>
+    <relativePath>../../pom.xml</relativePath>
+    <version>0.1.0-SNAPSHOT</version>
+  </parent>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.7</source>
+          <target>1.7</target>
+          <optimize>true</optimize>
+          <debug>true</debug>
+          <showDeprecation>true</showDeprecation>
+          <showWarnings>true</showWarnings>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>build-classpath</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>build-classpath</goal>
+            </goals>
+            <configuration>
+              <outputFile>cp.txt</outputFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-jms_1.1_spec</artifactId>
+      <version>1.1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.json</groupId>
+      <artifactId>javax.json-api</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish</groupId>
+      <artifactId>javax.json</artifactId>
+      <version>1.0.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.qpid</groupId>
+      <artifactId>qpid-jms-client</artifactId>
+      <version>0.10.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>1.7.21</version>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpReceiver.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpReceiver.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpReceiver.java
deleted file mode 100644
index cf3ad81..0000000
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpReceiver.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.interop_test.shim;
-
-import java.math.BigDecimal;
-import java.util.UUID;
-import java.util.Vector;
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.MapMessage;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.ObjectMessage;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.StreamMessage;
-import javax.jms.TextMessage;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import org.apache.qpid.jms.JmsConnectionFactory;
-
-public class AmqpReceiver {
-    private static final String USER = "guest";
-    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"};
-
-    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;
-
-        try {
-               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);
-            
-            Vector<String> outList = new Vector<String>();
-            outList.add(amqpType);
-            if (isSupportedAmqpType(amqpType)) {
-                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 + "\"");
-                       }
-                }
-            } else {
-               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));
-            }
-        } catch (Exception exp) {
-               if (connection != null)
-                       connection.close();
-            System.out.println("Caught exception, exiting.");
-            exp.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-    
-    protected static boolean isSupportedAmqpType(String amqpType) {
-       for (String supportedAmqpType: SUPPORTED_AMQP_TYPES) {
-               if (amqpType.equals(supportedAmqpType))
-                       return true;
-       }
-       return false;
-    }
-
-    private static class MyExceptionListener implements ExceptionListener {
-        @Override
-        public void onException(JMSException exception) {
-            System.out.println("Connection ExceptionListener fired, exiting.");
-            exception.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpSender.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpSender.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpSender.java
deleted file mode 100644
index 3fc5a90..0000000
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/AmqpSender.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.interop_test.shim;
-
-import java.math.BigDecimal; 
-import java.math.BigInteger; 
-import java.math.MathContext; 
-import java.util.Arrays;
-import java.util.UUID;
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.DeliveryMode;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.MapMessage;
-import javax.jms.Message;
-import javax.jms.MessageProducer;
-import javax.jms.ObjectMessage;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.StreamMessage;
-import javax.jms.TextMessage;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import org.apache.qpid.jms.JmsConnectionFactory;
-
-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"};
-
-    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
-       
-        try {
-               ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
-
-            Connection connection = factory.createConnection();
-            connection.setExceptionListener(new MyExceptionListener());
-            connection.start();
-
-            Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
-            
-            Queue queue = session.createQueue(queueName);
-
-            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);
-               }
-            } else {
-               System.out.println("ERROR: AmqpSender: AMQP type \"" + amqpType 
+ "\" is not supported");
-               connection.close();
-               System.exit(1);
-            }
-            
-            connection.close();
-        } catch (Exception exp) {
-            System.out.println("Caught exception, exiting.");
-            exp.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-    
-    protected static boolean isSupportedAmqpType(String amqpType) {
-       for (String supportedAmqpType: SUPPORTED_AMQP_TYPES) {
-               if (amqpType.equals(supportedAmqpType))
-                       return true;
-       }
-       return false;
-    }
-
-    private static class MyExceptionListener implements ExceptionListener {
-        @Override
-        public void onException(JMSException exception) {
-            System.out.println("Connection ExceptionListener fired, exiting.");
-            exception.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsReceiverShim.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsReceiverShim.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsReceiverShim.java
deleted file mode 100644
index f567638..0000000
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsReceiverShim.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.interop_test.shim;
-
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.MapMessage;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.ObjectMessage;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.StreamMessage;
-import javax.jms.TextMessage;
-import javax.json.Json;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
-import javax.json.JsonReader;
-import javax.json.JsonWriter;
-import org.apache.qpid.jms.JmsConnectionFactory;
-
-public class JmsReceiverShim {
-    private static final String USER = "guest";
-    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"};
-
-    // 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;
-
-        try {
-               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);
-                       
-            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());
-        } catch (Exception exp) {
-               if (connection != null)
-                       connection.close();
-            System.out.println("Caught exception, exiting.");
-            exp.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-    
-    protected static String formatByte(byte 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);
-    }
-    
-    protected static String formatInt(int 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);
-    }
-    
-    protected static String formatShort(int 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;
-    }
-
-    private static class MyExceptionListener implements ExceptionListener {
-        @Override
-        public void onException(JMSException exception) {
-            System.out.println("Connection ExceptionListener fired, exiting.");
-            exception.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/f4b87a1e/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsSenderShim.java
----------------------------------------------------------------------
diff --git 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsSenderShim.java
 
b/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsSenderShim.java
deleted file mode 100644
index e22be0a..0000000
--- 
a/shims/qpid-jms/src/main/java/org/apache/qpid/interop_test/shim/JmsSenderShim.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.interop_test.shim;
-
-import java.io.Serializable;
-import java.io.StringReader;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.DeliveryMode;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.MapMessage;
-import javax.jms.Message;
-import javax.jms.MessageProducer;
-import javax.jms.ObjectMessage;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.StreamMessage;
-import javax.jms.TextMessage;
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
-import org.apache.qpid.jms.JmsConnectionFactory;
-
-public class JmsSenderShim {
-    private static final String USER = "guest";
-    private static final String PASSWORD = "guest";
-    private static final String[] SUPPORTED_JMS_MESSAGE_TYPES = 
{"JMS_BYTESMESSAGE_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 value map
-    public static void main(String[] args) throws Exception {
-       if (args.length < 4) {
-               System.out.println("JmsSenderShim: Insufficient number of 
arguments");
-               System.out.println("JmsSenderShim: 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 jmsMessageType = args[2];
-       if (!isSupportedJmsMessageType(jmsMessageType)) {
-               System.out.println("ERROR: JmsReceiver: unknown or unsupported 
JMS message type \"" + jmsMessageType + "\"");
-               System.exit(1);                 
-       }
-       
-       JsonReader jsonReader = Json.createReader(new StringReader(args[3]));
-       JsonObject testValuesMap = jsonReader.readObject();
-       jsonReader.close();
-       
-        try {
-               ConnectionFactory factory = (ConnectionFactory)new 
JmsConnectionFactory(brokerAddress);
-
-            Connection connection = factory.createConnection();
-            connection.setExceptionListener(new MyExceptionListener());
-            connection.start();
-
-            Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
-            
-            Queue queue = session.createQueue(queueName);
-
-            MessageProducer messageProducer = session.createProducer(queue);
-
-               Message message = null;
-                       List<String> keyList = new 
ArrayList<String>(testValuesMap.keySet());
-                       Collections.sort(keyList);
-                       for (String key: keyList) {
-                               JsonArray testValues = 
testValuesMap.getJsonArray(key);
-                               for (int i=0; i<testValues.size(); ++i) {
-                                       String testValue = 
testValues.getJsonString(i).getString();
-                               switch (jmsMessageType) {
-                               case "JMS_BYTESMESSAGE_TYPE":
-                                       message = createBytesMessage(session, 
key, testValue);
-                                       break;
-                               case "JMS_MAPMESSAGE_TYPE":
-                                       message = createMapMessage(session, 
key, testValue, i);
-                                       break;
-                               case "JMS_OBJECTMESSAGE_TYPE":
-                                       message = createObjectMessage(session, 
key, testValue);
-                                       break;
-                               case "JMS_STREAMMESSAGE_TYPE":
-                                       message = createStreamMessage(session, 
key, testValue);
-                                       break;
-                               case "JMS_TEXTMESSAGE_TYPE":
-                                       message = createTextMessage(session, 
testValue);
-                                       break;
-                                       default:
-                                               throw new Exception("Internal 
exception: Unexpected JMS message type \"" + jmsMessageType + "\"");
-                               }
-                               messageProducer.send(message, 
DeliveryMode.NON_PERSISTENT, Message.DEFAULT_PRIORITY, 
Message.DEFAULT_TIME_TO_LIVE);
-                               }
-                       }
-            
-            connection.close();
-        } catch (Exception exp) {
-            System.out.println("Caught exception, exiting.");
-            exp.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-
-    protected static BytesMessage createBytesMessage(Session session, String 
testValueType, String testValue) throws Exception, JMSException {
-               BytesMessage message = session.createBytesMessage();
-               switch (testValueType) {
-               case "boolean":
-                       message.writeBoolean(Boolean.parseBoolean(testValue));
-                       break;
-               case "byte":
-                       message.writeByte(Byte.decode(testValue));
-                       break;
-               case "bytes":
-                       message.writeBytes(testValue.getBytes());
-                       break;
-               case "char":
-                       if (testValue.length() == 1) { // Char format: "X" or 
"\xNN"
-                               message.writeChar(testValue.charAt(0));
-                       } else {
-                               throw new 
Exception("JmsSenderShim.createBytesMessage() Malformed char string: \"" + 
testValue + "\" of length " + testValue.length());
-                       }
-                       break;
-               case "double":
-                       Long l1 = Long.parseLong(testValue.substring(2, 3), 16) 
<< 60;
-                       Long l2 = Long.parseLong(testValue.substring(3), 16);
-                       message.writeDouble(Double.longBitsToDouble(l1 | l2));
-                       break;
-               case "float":
-                       Long i = Long.parseLong(testValue.substring(2), 16);
-                       message.writeFloat(Float.intBitsToFloat(i.intValue()));
-                       break;
-               case "int":
-                       message.writeInt(Integer.decode(testValue));
-                       break;
-               case "long":
-                       message.writeLong(Long.decode(testValue));
-                       break;
-               case "object":
-                       Object obj = (Object)createObject(testValue);
-                       message.writeObject(obj);
-                       break;
-               case "short":
-                       message.writeShort(Short.decode(testValue));
-                       break;
-               case "string":
-                       message.writeUTF(testValue);
-                       break;
-               default:
-                       throw new Exception("Internal exception: Unexpected JMS 
message sub-type \"" + testValueType + "\"");
-               }
-               return message;
-    }
-    
-    protected static MapMessage createMapMessage(Session session, String 
testValueType, String testValue, int testValueNum) throws Exception, 
JMSException {
-       MapMessage message = session.createMapMessage();
-       String name = String.format("%s%03d", testValueType, testValueNum);
-               switch (testValueType) {
-               case "boolean":
-                       message.setBoolean(name, 
Boolean.parseBoolean(testValue));
-                       break;
-               case "byte":
-                       message.setByte(name, Byte.decode(testValue));
-                       break;
-               case "bytes":
-                       message.setBytes(name, testValue.getBytes());
-                       break;
-               case "char":
-                       if (testValue.length() == 1) { // Char format: "X"
-                               message.setChar(name, testValue.charAt(0));
-                       } else if (testValue.length() == 6) { // Char format: 
"\xNNNN"
-                               message.setChar(name, 
(char)Integer.parseInt(testValue.substring(2), 16));
-                       } else {
-                               throw new 
Exception("JmsSenderShim.createMapMessage() Malformed char string: \"" + 
testValue + "\"");
-                       }
-                       break;
-               case "double":
-                       Long l1 = Long.parseLong(testValue.substring(2, 3), 16) 
<< 60;
-                       Long l2 = Long.parseLong(testValue.substring(3), 16);
-                       message.setDouble(name, Double.longBitsToDouble(l1 | 
l2));
-                       break;
-               case "float":
-                       Long i = Long.parseLong(testValue.substring(2), 16);
-                       message.setFloat(name, 
Float.intBitsToFloat(i.intValue()));
-                       break;
-               case "int":
-                       message.setInt(name, Integer.decode(testValue));
-                       break;
-               case "long":
-                       message.setLong(name, Long.decode(testValue));
-                       break;
-               case "object":
-                       Object obj = (Object)createObject(testValue);
-                       message.setObject(name, obj);
-                       break;
-               case "short":
-                       message.setShort(name, Short.decode(testValue));
-                       break;
-               case "string":
-                       message.setString(name, testValue);
-                       break;
-               default:
-                       throw new Exception("Internal exception: Unexpected JMS 
message sub-type \"" + testValueType + "\"");
-               }
-               return message;
-    }
-    
-    protected static ObjectMessage createObjectMessage(Session session, String 
className, String testValue) throws Exception, JMSException {
-       Serializable obj = createJavaObject(className, testValue);
-       if (obj == null) {
-               // TODO: Handle error here
-               System.out.println("createObjectMessage: obj == null");
-               return null;
-       }
-               ObjectMessage message = session.createObjectMessage();
-               message.setObject(obj);
-               return message;
-    }
-    
-    protected static StreamMessage createStreamMessage(Session session, String 
testValueType, String testValue) throws Exception, JMSException {
-       StreamMessage message = session.createStreamMessage();
-               switch (testValueType) {
-               case "boolean":
-                       message.writeBoolean(Boolean.parseBoolean(testValue));
-                       break;
-               case "byte":
-                       message.writeByte(Byte.decode(testValue));
-                       break;
-               case "bytes":
-                       message.writeBytes(testValue.getBytes());
-                       break;
-               case "char":
-                       if (testValue.length() == 1) { // Char format: "X"
-                               message.writeChar(testValue.charAt(0));
-                       } else if (testValue.length() == 6) { // Char format: 
"\xNNNN"
-                               
message.writeChar((char)Integer.parseInt(testValue.substring(2), 16));
-                       } else {
-                               throw new 
Exception("JmsSenderShim.createStreamMessage() Malformed char string: \"" + 
testValue + "\"");
-                       }
-                       break;
-               case "double":
-                       Long l1 = Long.parseLong(testValue.substring(2, 3), 16) 
<< 60;
-                       Long l2 = Long.parseLong(testValue.substring(3), 16);
-                       message.writeDouble(Double.longBitsToDouble(l1 | l2));
-                       break;
-               case "float":
-                       Long i = Long.parseLong(testValue.substring(2), 16);
-                       message.writeFloat(Float.intBitsToFloat(i.intValue()));
-                       break;
-               case "int":
-                       message.writeInt(Integer.decode(testValue));
-                       break;
-               case "long":
-                       message.writeLong(Long.decode(testValue));
-                       break;
-               case "object":
-                       Object obj = (Object)createObject(testValue);
-                       message.writeObject(obj);
-                       break;
-               case "short":
-                       message.writeShort(Short.decode(testValue));
-                       break;
-               case "string":
-                       message.writeString(testValue);
-                       break;
-               default:
-                       throw new Exception("Internal exception: Unexpected JMS 
message sub-type \"" + testValueType + "\"");
-               }
-               return message;
-    }
-
-    protected static Serializable createJavaObject(String className, String 
testValue) throws Exception {
-       Serializable obj = null;
-               try {
-               Class<?> c = Class.forName(className);
-               if (className.compareTo("java.lang.Character") == 0) {
-                       Constructor ctor = c.getConstructor(char.class);
-                       if (testValue.length() == 1) {
-                               // Use first character of string 
-                               obj = 
(Serializable)ctor.newInstance(testValue.charAt(0));
-                       } else if (testValue.length() == 4 || 
testValue.length() == 6) {
-                               // Format '\xNN' or '\xNNNN'
-                               obj = 
(Serializable)ctor.newInstance((char)Integer.parseInt(testValue.substring(2), 
16));
-                       } else {
-                               throw new 
Exception("JmsSenderShim.createStreamMessage() Malformed char string: \"" + 
testValue + "\"");
-                       }
-               } else {
-                       // Use string constructor
-                       Constructor ctor = c.getConstructor(String.class);
-                       obj = (Serializable)ctor.newInstance(testValue);
-               }
-               }
-       catch (ClassNotFoundException e) {
-               e.printStackTrace(System.out);
-       }
-       catch (NoSuchMethodException e) {
-               e.printStackTrace(System.out);
-       }
-       catch (InstantiationException e) {
-               e.printStackTrace(System.out);
-       }
-               catch (IllegalAccessException e) {
-                       e.printStackTrace(System.out);
-               }
-               catch (InvocationTargetException e) {
-                       e.printStackTrace(System.out);
-               }
-       return obj;
-    }
-    
-    // value has format "classname:ctorstrvalue"
-    protected static Serializable createObject(String value) throws Exception {
-       Serializable obj = null;
-       int colonIndex = value.indexOf(":");
-       if (colonIndex >= 0) {
-               String className = value.substring(0, colonIndex);
-               String testValue = value.substring(colonIndex+1);
-               obj = createJavaObject(className, testValue);
-       } else {
-               throw new Exception("createObject(): Malformed value string");
-       }
-       return obj;
-    }
-    
-    protected static TextMessage createTextMessage(Session session, String 
valueStr) throws JMSException {
-       return session.createTextMessage(valueStr);
-    }
-    
-    protected static boolean isSupportedJmsMessageType(String jmsMessageType) {
-       for (String supportedJmsMessageType: SUPPORTED_JMS_MESSAGE_TYPES) {
-               if (jmsMessageType.equals(supportedJmsMessageType))
-                       return true;
-       }
-       return false;
-    }
-
-    private static class MyExceptionListener implements ExceptionListener {
-        @Override
-        public void onException(JMSException exception) {
-            System.out.println("Connection ExceptionListener fired, exiting.");
-            exception.printStackTrace(System.out);
-            System.exit(1);
-        }
-    }
-}
\ No newline at end of file


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

Reply via email to