You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2014/10/27 15:10:36 UTC

[1/3] git commit: update generated matchers to actually match the current XSL template

Repository: qpid-jms
Updated Branches:
  refs/heads/master 2dafb519b -> 177aca048


update generated matchers to actually match the current XSL template


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/3aa6ff70
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/3aa6ff70
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/3aa6ff70

Branch: refs/heads/master
Commit: 3aa6ff70e046b70ccad47982bf2e6ef502fa9169
Parents: 2dafb51
Author: Robert Gemmell <ro...@apache.org>
Authored: Mon Oct 27 13:49:38 2014 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Mon Oct 27 13:49:38 2014 +0000

----------------------------------------------------------------------
 .../org/apache/qpid/jms/test/testpeer/matchers/AttachMatcher.java  | 2 +-
 .../org/apache/qpid/jms/test/testpeer/matchers/BeginMatcher.java   | 2 +-
 .../org/apache/qpid/jms/test/testpeer/matchers/CloseMatcher.java   | 2 +-
 .../org/apache/qpid/jms/test/testpeer/matchers/DetachMatcher.java  | 2 +-
 .../apache/qpid/jms/test/testpeer/matchers/DispositionMatcher.java | 2 +-
 .../org/apache/qpid/jms/test/testpeer/matchers/EndMatcher.java     | 2 +-
 .../org/apache/qpid/jms/test/testpeer/matchers/FlowMatcher.java    | 2 +-
 .../org/apache/qpid/jms/test/testpeer/matchers/OpenMatcher.java    | 2 +-
 .../qpid/jms/test/testpeer/matchers/SaslChallengeMatcher.java      | 2 +-
 .../apache/qpid/jms/test/testpeer/matchers/SaslInitMatcher.java    | 2 +-
 .../qpid/jms/test/testpeer/matchers/SaslMechanismsMatcher.java     | 2 +-
 .../apache/qpid/jms/test/testpeer/matchers/SaslOutcomeMatcher.java | 2 +-
 .../qpid/jms/test/testpeer/matchers/SaslResponseMatcher.java       | 2 +-
 .../apache/qpid/jms/test/testpeer/matchers/TransferMatcher.java    | 2 +-
 14 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/AttachMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/AttachMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/AttachMatcher.java
index edd62cd..1606f88 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/AttachMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/AttachMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class AttachMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         NAME,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/BeginMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/BeginMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/BeginMatcher.java
index ede5a31..3b0e5ec 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/BeginMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/BeginMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class BeginMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         REMOTE_CHANNEL,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CloseMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CloseMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CloseMatcher.java
index ac03a5c..7be80fc 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CloseMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CloseMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class CloseMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         ERROR,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DetachMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DetachMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DetachMatcher.java
index dc5d2f1..0f85c2b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DetachMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DetachMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class DetachMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         HANDLE,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DispositionMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DispositionMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DispositionMatcher.java
index 3d41fee..7dc4ce8 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DispositionMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/DispositionMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class DispositionMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         ROLE,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/EndMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/EndMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/EndMatcher.java
index 460bbaa..0429138 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/EndMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/EndMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class EndMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         ERROR,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/FlowMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/FlowMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/FlowMatcher.java
index 9f6f74b..f45c3e6 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/FlowMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/FlowMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class FlowMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         NEXT_INCOMING_ID,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/OpenMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/OpenMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/OpenMatcher.java
index fd0bf61..8da5992 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/OpenMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/OpenMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class OpenMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         CONTAINER_ID,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslChallengeMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslChallengeMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslChallengeMatcher.java
index 08b0bc7..991ff39 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslChallengeMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslChallengeMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class SaslChallengeMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         CHALLENGE,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslInitMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslInitMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslInitMatcher.java
index 7284edb..56a4980 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslInitMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslInitMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class SaslInitMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         MECHANISM,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslMechanismsMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslMechanismsMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslMechanismsMatcher.java
index 63fd913..5f18319 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslMechanismsMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslMechanismsMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class SaslMechanismsMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         SASL_SERVER_MECHANISMS,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslOutcomeMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslOutcomeMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslOutcomeMatcher.java
index 22355d1..a2fd656 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslOutcomeMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslOutcomeMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class SaslOutcomeMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         CODE,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslResponseMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslResponseMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslResponseMatcher.java
index c5fb865..c6beedd 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslResponseMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SaslResponseMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class SaslResponseMatcher extends FrameWithNoPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         RESPONSE,

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3aa6ff70/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TransferMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TransferMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TransferMatcher.java
index d7274a1..2977f4e 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TransferMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TransferMatcher.java
@@ -32,7 +32,7 @@ import org.hamcrest.Matcher;
  */
 public class TransferMatcher extends FrameWithPayloadMatchingHandler
 {
-    /** Note that the ordinals of the Field enums match the order specified in the spec */
+    /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
     public enum Field
     {
         HANDLE,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[3/3] git commit: update expectations for temporary-queue creation to match on values of the Attach target

Posted by ro...@apache.org.
update expectations for temporary-queue creation to match on values of the Attach target


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/177aca04
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/177aca04
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/177aca04

Branch: refs/heads/master
Commit: 177aca0482c1fccaecbdb190c5b7eb1338faa9c7
Parents: a40f027
Author: Robert Gemmell <ro...@apache.org>
Authored: Mon Oct 27 14:01:55 2014 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Mon Oct 27 14:01:55 2014 +0000

----------------------------------------------------------------------
 .../org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java     | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/177aca04/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
index f0ca7a0..ba06808 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
@@ -56,6 +56,7 @@ import org.apache.qpid.jms.test.testpeer.matchers.EndMatcher;
 import org.apache.qpid.jms.test.testpeer.matchers.FlowMatcher;
 import org.apache.qpid.jms.test.testpeer.matchers.OpenMatcher;
 import org.apache.qpid.jms.test.testpeer.matchers.SaslInitMatcher;
+import org.apache.qpid.jms.test.testpeer.matchers.TargetMatcher;
 import org.apache.qpid.jms.test.testpeer.matchers.TransferMatcher;
 import org.apache.qpid.proton.Proton;
 import org.apache.qpid.proton.amqp.Binary;
@@ -391,6 +392,12 @@ public class TestAmqpPeer implements AutoCloseable
 
     public void expectTempQueueCreationAttach(final String dynamicAddress)
     {
+        TargetMatcher targetMatcher = new TargetMatcher();
+        targetMatcher.withAddress(nullValue());
+        targetMatcher.withDynamic(equalTo(true));
+        //TODO: this is currently being set as session-end
+        //targetMatcher.withExpiryPolicy(equalTo(Symbol.valueOf("link-detach")));//TODO: values for ExpiryPolicy etc.
+
         final AttachMatcher attachMatcher = new AttachMatcher()
                 .withName(notNullValue())
                 .withHandle(notNullValue())
@@ -398,7 +405,7 @@ public class TestAmqpPeer implements AutoCloseable
                 .withSndSettleMode(equalTo(ATTACH_SND_SETTLE_MODE_UNSETTLED))
                 .withRcvSettleMode(equalTo(ATTACH_RCV_SETTLE_MODE_FIRST))
                 .withSource(notNullValue())
-                .withTarget(notNullValue());//TODO match on the actual Target object details
+                .withTarget(targetMatcher);
 
         UnsignedInteger linkHandle = UnsignedInteger.valueOf(_nextLinkHandle++);
         final AttachFrame attachResponse = new AttachFrame()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[2/3] git commit: create new matchers to allow verifying sub-values within the source and target values of the Attach frame

Posted by ro...@apache.org.
create new matchers to allow verifying sub-values within the source and target values of the Attach frame


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/a40f0276
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/a40f0276
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/a40f0276

Branch: refs/heads/master
Commit: a40f027657c88b3ef5f77a021a6aa37e9b2a3da6
Parents: 3aa6ff7
Author: Robert Gemmell <ro...@apache.org>
Authored: Mon Oct 27 13:56:13 2014 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Mon Oct 27 13:56:13 2014 +0000

----------------------------------------------------------------------
 .../AbstractFieldAndDescriptorMatcher.java      |  15 +-
 .../testpeer/matchers/CoordinatorMatcher.java   | 151 ++++++++
 .../test/testpeer/matchers/SourceMatcher.java   | 381 +++++++++++++++++++
 .../test/testpeer/matchers/TargetMatcher.java   | 289 ++++++++++++++
 .../testpeer/matchers/generate-matchers.xsl     | 168 +++++++-
 5 files changed, 992 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a40f0276/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/AbstractFieldAndDescriptorMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/AbstractFieldAndDescriptorMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/AbstractFieldAndDescriptorMatcher.java
index 4f9dbb7..cf88ddd 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/AbstractFieldAndDescriptorMatcher.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/AbstractFieldAndDescriptorMatcher.java
@@ -27,19 +27,19 @@ public abstract class AbstractFieldAndDescriptorMatcher {
         this.fieldMatchers = fieldMatchers;
     }
 
-    protected UnsignedLong getNumericDescriptor() {
+    public UnsignedLong getNumericDescriptor() {
         return numericDescriptor;
     }
 
-    protected Symbol getSymbolicDescriptor() {
+    public Symbol getSymbolicDescriptor() {
         return symbolicDescriptor;
     }
 
-    protected boolean descriptorMatches(Object descriptor) {
+    public boolean descriptorMatches(Object descriptor) {
         return numericDescriptor.equals(descriptor) || symbolicDescriptor.equals(descriptor);
     }
 
-    protected Map<Enum<?>, Matcher<?>> getMatchers() {
+    public Map<Enum<?>, Matcher<?>> getMatchers() {
         return fieldMatchers;
     }
 
@@ -52,7 +52,12 @@ public abstract class AbstractFieldAndDescriptorMatcher {
         return receivedFields;
     }
 
-    protected void verifyFields(List<Object> described) {
+    /**
+     * Verifies the fields of the provided list against any matchers registered.
+     * @param described the list of fields from the described type.
+     * @throws AssertionError if a registered matcher assertion is not met.
+     */
+    public void verifyFields(List<Object> described) throws AssertionError {
         int fieldNumber = 0;
         HashMap<Enum<?>, Object> valueMap = new HashMap<>();
         for (Object value : described) {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a40f0276/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CoordinatorMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CoordinatorMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CoordinatorMatcher.java
new file mode 100644
index 0000000..029442d
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/CoordinatorMatcher.java
@@ -0,0 +1,151 @@
+/*
+ * 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.jms.test.testpeer.matchers;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+
+import java.util.HashMap;
+import java.util.List;
+import org.apache.qpid.proton.amqp.DescribedType;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedLong;
+import org.apache.qpid.jms.test.testpeer.AbstractFieldAndDescriptorMatcher;
+import org.hamcrest.Matcher;
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
+
+/**
+ * Generated by generate-matchers.xsl, which resides in this package.
+ */
+public class CoordinatorMatcher extends TypeSafeMatcher<Object>
+{
+    private CoordinatorMatcherCore coreMatcher = new CoordinatorMatcherCore();
+    private String mismatchTextAddition;
+    private Object described;
+    private Object descriptor;
+
+    public CoordinatorMatcher()
+    {
+    }
+
+    @Override
+    protected boolean matchesSafely(Object received)
+    {
+        try
+        {
+            assertThat(received, instanceOf(DescribedType.class));
+            descriptor = ((DescribedType)received).getDescriptor();
+            if(!coreMatcher.descriptorMatches(descriptor))
+            {
+                mismatchTextAddition = "Descriptor mismatch";
+                return false;
+            }
+
+            described = ((DescribedType)received).getDescribed();
+            assertThat(described, instanceOf(List.class));
+            @SuppressWarnings("unchecked")
+            List<Object> fields = (List<Object>) described;
+
+            coreMatcher.verifyFields(fields);
+        }
+        catch (AssertionError ae)
+        {
+            mismatchTextAddition = "AssertionFailure: " + ae.getMessage();
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    protected void describeMismatchSafely(Object item, Description mismatchDescription)
+    {
+        mismatchDescription.appendText("\nActual form: ").appendValue(item);
+
+        mismatchDescription.appendText("\nExpected descriptor: ")
+                .appendValue(coreMatcher.getSymbolicDescriptor())
+                .appendText(" / ")
+                .appendValue(coreMatcher.getNumericDescriptor());
+
+        if(mismatchTextAddition != null)
+        {
+            mismatchDescription.appendText("\nAdditional info: ").appendValue(mismatchTextAddition);
+        }
+    }
+
+    public void describeTo(Description description)
+    {
+        description
+            .appendText("Coordinator which matches: ")
+            .appendValue(coreMatcher.getMatchers());
+    }
+
+
+    public CoordinatorMatcher withCapabilities(Matcher<?> m)
+    {
+        coreMatcher.withCapabilities(m);
+        return this;
+    }
+
+    public Object getReceivedCapabilities()
+    {
+        return coreMatcher.getReceivedCapabilities();
+    }
+
+
+
+    //Inner core matching class
+    public static class CoordinatorMatcherCore extends AbstractFieldAndDescriptorMatcher
+    {
+        /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
+        public enum Field
+        {
+            CAPABILITIES,
+        }
+
+        public CoordinatorMatcherCore()
+        {
+            super(UnsignedLong.valueOf(0x0000000000000030L),
+                  Symbol.valueOf("amqp:coordinator:list"),
+                  new HashMap<Enum<?>, Matcher<?>>());
+        }
+
+
+        public CoordinatorMatcherCore withCapabilities(Matcher<?> m)
+        {
+            getMatchers().put(Field.CAPABILITIES, m);
+            return this;
+        }
+
+        public Object getReceivedCapabilities()
+        {
+            return getReceivedFields().get(Field.CAPABILITIES);
+        }
+
+        @Override
+        protected Enum<?> getField(int fieldIndex)
+        {
+            return Field.values()[fieldIndex];
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a40f0276/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SourceMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SourceMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SourceMatcher.java
new file mode 100644
index 0000000..03f5e79
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/SourceMatcher.java
@@ -0,0 +1,381 @@
+/*
+ * 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.jms.test.testpeer.matchers;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+
+import java.util.HashMap;
+import java.util.List;
+import org.apache.qpid.proton.amqp.DescribedType;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedLong;
+import org.apache.qpid.jms.test.testpeer.AbstractFieldAndDescriptorMatcher;
+import org.hamcrest.Matcher;
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
+
+/**
+ * Generated by generate-matchers.xsl, which resides in this package.
+ */
+public class SourceMatcher extends TypeSafeMatcher<Object>
+{
+    private SourceMatcherCore coreMatcher = new SourceMatcherCore();
+    private String mismatchTextAddition;
+    private Object described;
+    private Object descriptor;
+
+    public SourceMatcher()
+    {
+    }
+
+    @Override
+    protected boolean matchesSafely(Object received)
+    {
+        try
+        {
+            assertThat(received, instanceOf(DescribedType.class));
+            descriptor = ((DescribedType)received).getDescriptor();
+            if(!coreMatcher.descriptorMatches(descriptor))
+            {
+                mismatchTextAddition = "Descriptor mismatch";
+                return false;
+            }
+
+            described = ((DescribedType)received).getDescribed();
+            assertThat(described, instanceOf(List.class));
+            @SuppressWarnings("unchecked")
+            List<Object> fields = (List<Object>) described;
+
+            coreMatcher.verifyFields(fields);
+        }
+        catch (AssertionError ae)
+        {
+            mismatchTextAddition = "AssertionFailure: " + ae.getMessage();
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    protected void describeMismatchSafely(Object item, Description mismatchDescription)
+    {
+        mismatchDescription.appendText("\nActual form: ").appendValue(item);
+
+        mismatchDescription.appendText("\nExpected descriptor: ")
+                .appendValue(coreMatcher.getSymbolicDescriptor())
+                .appendText(" / ")
+                .appendValue(coreMatcher.getNumericDescriptor());
+
+        if(mismatchTextAddition != null)
+        {
+            mismatchDescription.appendText("\nAdditional info: ").appendValue(mismatchTextAddition);
+        }
+    }
+
+    public void describeTo(Description description)
+    {
+        description
+            .appendText("Source which matches: ")
+            .appendValue(coreMatcher.getMatchers());
+    }
+
+
+    public SourceMatcher withAddress(Matcher<?> m)
+    {
+        coreMatcher.withAddress(m);
+        return this;
+    }
+
+    public SourceMatcher withDurable(Matcher<?> m)
+    {
+        coreMatcher.withDurable(m);
+        return this;
+    }
+
+    public SourceMatcher withExpiryPolicy(Matcher<?> m)
+    {
+        coreMatcher.withExpiryPolicy(m);
+        return this;
+    }
+
+    public SourceMatcher withTimeout(Matcher<?> m)
+    {
+        coreMatcher.withTimeout(m);
+        return this;
+    }
+
+    public SourceMatcher withDynamic(Matcher<?> m)
+    {
+        coreMatcher.withDynamic(m);
+        return this;
+    }
+
+    public SourceMatcher withDynamicNodeProperties(Matcher<?> m)
+    {
+        coreMatcher.withDynamicNodeProperties(m);
+        return this;
+    }
+
+    public SourceMatcher withDistributionMode(Matcher<?> m)
+    {
+        coreMatcher.withDistributionMode(m);
+        return this;
+    }
+
+    public SourceMatcher withFilter(Matcher<?> m)
+    {
+        coreMatcher.withFilter(m);
+        return this;
+    }
+
+    public SourceMatcher withDefaultOutcome(Matcher<?> m)
+    {
+        coreMatcher.withDefaultOutcome(m);
+        return this;
+    }
+
+    public SourceMatcher withOutcomes(Matcher<?> m)
+    {
+        coreMatcher.withOutcomes(m);
+        return this;
+    }
+
+    public SourceMatcher withCapabilities(Matcher<?> m)
+    {
+        coreMatcher.withCapabilities(m);
+        return this;
+    }
+
+    public Object getReceivedAddress()
+    {
+        return coreMatcher.getReceivedAddress();
+    }
+
+    public Object getReceivedDurable()
+    {
+        return coreMatcher.getReceivedDurable();
+    }
+
+    public Object getReceivedExpiryPolicy()
+    {
+        return coreMatcher.getReceivedExpiryPolicy();
+    }
+
+    public Object getReceivedTimeout()
+    {
+        return coreMatcher.getReceivedTimeout();
+    }
+
+    public Object getReceivedDynamic()
+    {
+        return coreMatcher.getReceivedDynamic();
+    }
+
+    public Object getReceivedDynamicNodeProperties()
+    {
+        return coreMatcher.getReceivedDynamicNodeProperties();
+    }
+
+    public Object getReceivedDistributionMode()
+    {
+        return coreMatcher.getReceivedDistributionMode();
+    }
+
+    public Object getReceivedFilter()
+    {
+        return coreMatcher.getReceivedFilter();
+    }
+
+    public Object getReceivedDefaultOutcome()
+    {
+        return coreMatcher.getReceivedDefaultOutcome();
+    }
+
+    public Object getReceivedOutcomes()
+    {
+        return coreMatcher.getReceivedOutcomes();
+    }
+
+    public Object getReceivedCapabilities()
+    {
+        return coreMatcher.getReceivedCapabilities();
+    }
+
+
+
+    //Inner core matching class
+    public static class SourceMatcherCore extends AbstractFieldAndDescriptorMatcher
+    {
+        /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
+        public enum Field
+        {
+            ADDRESS,
+            DURABLE,
+            EXPIRY_POLICY,
+            TIMEOUT,
+            DYNAMIC,
+            DYNAMIC_NODE_PROPERTIES,
+            DISTRIBUTION_MODE,
+            FILTER,
+            DEFAULT_OUTCOME,
+            OUTCOMES,
+            CAPABILITIES,
+        }
+
+        public SourceMatcherCore()
+        {
+            super(UnsignedLong.valueOf(0x0000000000000028L),
+                  Symbol.valueOf("amqp:source:list"),
+                  new HashMap<Enum<?>, Matcher<?>>());
+        }
+
+
+        public SourceMatcherCore withAddress(Matcher<?> m)
+        {
+            getMatchers().put(Field.ADDRESS, m);
+            return this;
+        }
+
+        public SourceMatcherCore withDurable(Matcher<?> m)
+        {
+            getMatchers().put(Field.DURABLE, m);
+            return this;
+        }
+
+        public SourceMatcherCore withExpiryPolicy(Matcher<?> m)
+        {
+            getMatchers().put(Field.EXPIRY_POLICY, m);
+            return this;
+        }
+
+        public SourceMatcherCore withTimeout(Matcher<?> m)
+        {
+            getMatchers().put(Field.TIMEOUT, m);
+            return this;
+        }
+
+        public SourceMatcherCore withDynamic(Matcher<?> m)
+        {
+            getMatchers().put(Field.DYNAMIC, m);
+            return this;
+        }
+
+        public SourceMatcherCore withDynamicNodeProperties(Matcher<?> m)
+        {
+            getMatchers().put(Field.DYNAMIC_NODE_PROPERTIES, m);
+            return this;
+        }
+
+        public SourceMatcherCore withDistributionMode(Matcher<?> m)
+        {
+            getMatchers().put(Field.DISTRIBUTION_MODE, m);
+            return this;
+        }
+
+        public SourceMatcherCore withFilter(Matcher<?> m)
+        {
+            getMatchers().put(Field.FILTER, m);
+            return this;
+        }
+
+        public SourceMatcherCore withDefaultOutcome(Matcher<?> m)
+        {
+            getMatchers().put(Field.DEFAULT_OUTCOME, m);
+            return this;
+        }
+
+        public SourceMatcherCore withOutcomes(Matcher<?> m)
+        {
+            getMatchers().put(Field.OUTCOMES, m);
+            return this;
+        }
+
+        public SourceMatcherCore withCapabilities(Matcher<?> m)
+        {
+            getMatchers().put(Field.CAPABILITIES, m);
+            return this;
+        }
+
+        public Object getReceivedAddress()
+        {
+            return getReceivedFields().get(Field.ADDRESS);
+        }
+
+        public Object getReceivedDurable()
+        {
+            return getReceivedFields().get(Field.DURABLE);
+        }
+
+        public Object getReceivedExpiryPolicy()
+        {
+            return getReceivedFields().get(Field.EXPIRY_POLICY);
+        }
+
+        public Object getReceivedTimeout()
+        {
+            return getReceivedFields().get(Field.TIMEOUT);
+        }
+
+        public Object getReceivedDynamic()
+        {
+            return getReceivedFields().get(Field.DYNAMIC);
+        }
+
+        public Object getReceivedDynamicNodeProperties()
+        {
+            return getReceivedFields().get(Field.DYNAMIC_NODE_PROPERTIES);
+        }
+
+        public Object getReceivedDistributionMode()
+        {
+            return getReceivedFields().get(Field.DISTRIBUTION_MODE);
+        }
+
+        public Object getReceivedFilter()
+        {
+            return getReceivedFields().get(Field.FILTER);
+        }
+
+        public Object getReceivedDefaultOutcome()
+        {
+            return getReceivedFields().get(Field.DEFAULT_OUTCOME);
+        }
+
+        public Object getReceivedOutcomes()
+        {
+            return getReceivedFields().get(Field.OUTCOMES);
+        }
+
+        public Object getReceivedCapabilities()
+        {
+            return getReceivedFields().get(Field.CAPABILITIES);
+        }
+
+        @Override
+        protected Enum<?> getField(int fieldIndex)
+        {
+            return Field.values()[fieldIndex];
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a40f0276/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TargetMatcher.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TargetMatcher.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TargetMatcher.java
new file mode 100644
index 0000000..3c141ed
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/TargetMatcher.java
@@ -0,0 +1,289 @@
+/*
+ * 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.jms.test.testpeer.matchers;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+
+import java.util.HashMap;
+import java.util.List;
+import org.apache.qpid.proton.amqp.DescribedType;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedLong;
+import org.apache.qpid.jms.test.testpeer.AbstractFieldAndDescriptorMatcher;
+import org.hamcrest.Matcher;
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
+
+/**
+ * Generated by generate-matchers.xsl, which resides in this package.
+ */
+public class TargetMatcher extends TypeSafeMatcher<Object>
+{
+    private TargetMatcherCore coreMatcher = new TargetMatcherCore();
+    private String mismatchTextAddition;
+    private Object described;
+    private Object descriptor;
+
+    public TargetMatcher()
+    {
+    }
+
+    @Override
+    protected boolean matchesSafely(Object received)
+    {
+        try
+        {
+            assertThat(received, instanceOf(DescribedType.class));
+            descriptor = ((DescribedType)received).getDescriptor();
+            if(!coreMatcher.descriptorMatches(descriptor))
+            {
+                mismatchTextAddition = "Descriptor mismatch";
+                return false;
+            }
+
+            described = ((DescribedType)received).getDescribed();
+            assertThat(described, instanceOf(List.class));
+            @SuppressWarnings("unchecked")
+            List<Object> fields = (List<Object>) described;
+
+            coreMatcher.verifyFields(fields);
+        }
+        catch (AssertionError ae)
+        {
+            mismatchTextAddition = "AssertionFailure: " + ae.getMessage();
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    protected void describeMismatchSafely(Object item, Description mismatchDescription)
+    {
+        mismatchDescription.appendText("\nActual form: ").appendValue(item);
+
+        mismatchDescription.appendText("\nExpected descriptor: ")
+                .appendValue(coreMatcher.getSymbolicDescriptor())
+                .appendText(" / ")
+                .appendValue(coreMatcher.getNumericDescriptor());
+
+        if(mismatchTextAddition != null)
+        {
+            mismatchDescription.appendText("\nAdditional info: ").appendValue(mismatchTextAddition);
+        }
+    }
+
+    public void describeTo(Description description)
+    {
+        description
+            .appendText("Target which matches: ")
+            .appendValue(coreMatcher.getMatchers());
+    }
+
+
+    public TargetMatcher withAddress(Matcher<?> m)
+    {
+        coreMatcher.withAddress(m);
+        return this;
+    }
+
+    public TargetMatcher withDurable(Matcher<?> m)
+    {
+        coreMatcher.withDurable(m);
+        return this;
+    }
+
+    public TargetMatcher withExpiryPolicy(Matcher<?> m)
+    {
+        coreMatcher.withExpiryPolicy(m);
+        return this;
+    }
+
+    public TargetMatcher withTimeout(Matcher<?> m)
+    {
+        coreMatcher.withTimeout(m);
+        return this;
+    }
+
+    public TargetMatcher withDynamic(Matcher<?> m)
+    {
+        coreMatcher.withDynamic(m);
+        return this;
+    }
+
+    public TargetMatcher withDynamicNodeProperties(Matcher<?> m)
+    {
+        coreMatcher.withDynamicNodeProperties(m);
+        return this;
+    }
+
+    public TargetMatcher withCapabilities(Matcher<?> m)
+    {
+        coreMatcher.withCapabilities(m);
+        return this;
+    }
+
+    public Object getReceivedAddress()
+    {
+        return coreMatcher.getReceivedAddress();
+    }
+
+    public Object getReceivedDurable()
+    {
+        return coreMatcher.getReceivedDurable();
+    }
+
+    public Object getReceivedExpiryPolicy()
+    {
+        return coreMatcher.getReceivedExpiryPolicy();
+    }
+
+    public Object getReceivedTimeout()
+    {
+        return coreMatcher.getReceivedTimeout();
+    }
+
+    public Object getReceivedDynamic()
+    {
+        return coreMatcher.getReceivedDynamic();
+    }
+
+    public Object getReceivedDynamicNodeProperties()
+    {
+        return coreMatcher.getReceivedDynamicNodeProperties();
+    }
+
+    public Object getReceivedCapabilities()
+    {
+        return coreMatcher.getReceivedCapabilities();
+    }
+
+
+
+    //Inner core matching class
+    public static class TargetMatcherCore extends AbstractFieldAndDescriptorMatcher
+    {
+        /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
+        public enum Field
+        {
+            ADDRESS,
+            DURABLE,
+            EXPIRY_POLICY,
+            TIMEOUT,
+            DYNAMIC,
+            DYNAMIC_NODE_PROPERTIES,
+            CAPABILITIES,
+        }
+
+        public TargetMatcherCore()
+        {
+            super(UnsignedLong.valueOf(0x0000000000000029L),
+                  Symbol.valueOf("amqp:target:list"),
+                  new HashMap<Enum<?>, Matcher<?>>());
+        }
+
+
+        public TargetMatcherCore withAddress(Matcher<?> m)
+        {
+            getMatchers().put(Field.ADDRESS, m);
+            return this;
+        }
+
+        public TargetMatcherCore withDurable(Matcher<?> m)
+        {
+            getMatchers().put(Field.DURABLE, m);
+            return this;
+        }
+
+        public TargetMatcherCore withExpiryPolicy(Matcher<?> m)
+        {
+            getMatchers().put(Field.EXPIRY_POLICY, m);
+            return this;
+        }
+
+        public TargetMatcherCore withTimeout(Matcher<?> m)
+        {
+            getMatchers().put(Field.TIMEOUT, m);
+            return this;
+        }
+
+        public TargetMatcherCore withDynamic(Matcher<?> m)
+        {
+            getMatchers().put(Field.DYNAMIC, m);
+            return this;
+        }
+
+        public TargetMatcherCore withDynamicNodeProperties(Matcher<?> m)
+        {
+            getMatchers().put(Field.DYNAMIC_NODE_PROPERTIES, m);
+            return this;
+        }
+
+        public TargetMatcherCore withCapabilities(Matcher<?> m)
+        {
+            getMatchers().put(Field.CAPABILITIES, m);
+            return this;
+        }
+
+        public Object getReceivedAddress()
+        {
+            return getReceivedFields().get(Field.ADDRESS);
+        }
+
+        public Object getReceivedDurable()
+        {
+            return getReceivedFields().get(Field.DURABLE);
+        }
+
+        public Object getReceivedExpiryPolicy()
+        {
+            return getReceivedFields().get(Field.EXPIRY_POLICY);
+        }
+
+        public Object getReceivedTimeout()
+        {
+            return getReceivedFields().get(Field.TIMEOUT);
+        }
+
+        public Object getReceivedDynamic()
+        {
+            return getReceivedFields().get(Field.DYNAMIC);
+        }
+
+        public Object getReceivedDynamicNodeProperties()
+        {
+            return getReceivedFields().get(Field.DYNAMIC_NODE_PROPERTIES);
+        }
+
+        public Object getReceivedCapabilities()
+        {
+            return getReceivedFields().get(Field.CAPABILITIES);
+        }
+
+        @Override
+        protected Enum<?> getField(int fieldIndex)
+        {
+            return Field.values()[fieldIndex];
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a40f0276/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/generate-matchers.xsl
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/generate-matchers.xsl b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/generate-matchers.xsl
index 263c87f..7bcdf74 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/generate-matchers.xsl
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/matchers/generate-matchers.xsl
@@ -31,28 +31,36 @@
 
     <xsl:for-each select="descendant-or-self::node()[name()='type']">
         <xsl:variable name="classname"><xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>Matcher</xsl:variable>
-        <xsl:variable name="superclass">
+
+        <xsl:if test="@provides = 'frame' or @provides = 'sasl-frame'">
+          <xsl:variable name="frameSuperclass">
             <xsl:choose>
                 <xsl:when test="@name = 'transfer'">FrameWithPayloadMatchingHandler</xsl:when>
                 <xsl:otherwise>FrameWithNoPayloadMatchingHandler</xsl:otherwise>
             </xsl:choose>
-        </xsl:variable>
-
-        <xsl:if test="@provides = 'frame' or @provides = 'sasl-frame'">
-          <xsl:call-template name="typeClass">
+          </xsl:variable>
+          <xsl:call-template name="frameClass">
               <xsl:with-param name="license" select="$license"/>
               <xsl:with-param name="classname" select="$classname"/>
-              <xsl:with-param name="superclass" select="$superclass"/>
+              <xsl:with-param name="superclass" select="$frameSuperclass"/>
           </xsl:call-template>
         </xsl:if>
 
+        <xsl:if test="@provides = 'source' or @provides = 'target'">
+          <xsl:variable name="typename"><xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template></xsl:variable>
+          <xsl:call-template name="sourceOrTargetClass">
+              <xsl:with-param name="license" select="$license"/>
+              <xsl:with-param name="classname" select="$classname"/>
+              <xsl:with-param name="typename" select="$typename"/>
+          </xsl:call-template>
+        </xsl:if>
     </xsl:for-each>
 </xsl:template>
 
 
 <!-- *************************************************************************************************************** -->
 
-<xsl:template name="typeClass">
+<xsl:template name="frameClass">
     <xsl:param name="license"/>
     <xsl:param name="classname"/>
     <xsl:param name="superclass"/>
@@ -121,6 +129,152 @@ public class <xsl:value-of select="$classname"/> extends <xsl:value-of select="$
 
 <!-- *************************************************************************************************************** -->
 
+<xsl:template name="sourceOrTargetClass">
+    <xsl:param name="license"/>
+    <xsl:param name="classname"/>
+    <xsl:param name="typename"/>
+  <exsl:document href="{$classname}.java" method="text">
+  <xsl:value-of select="$license"/>
+package org.apache.qpid.jms.test.testpeer.matchers;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+
+import java.util.HashMap;
+import java.util.List;
+import org.apache.qpid.proton.amqp.DescribedType;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedLong;
+import org.apache.qpid.jms.test.testpeer.AbstractFieldAndDescriptorMatcher;
+import org.hamcrest.Matcher;
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
+
+/**
+ * Generated by generate-matchers.xsl, which resides in this package.
+ */
+public class <xsl:value-of select="$classname"/> extends TypeSafeMatcher&lt;Object&gt;
+{
+    private <xsl:value-of select="$classname"/>Core coreMatcher = new <xsl:value-of select="$classname"/>Core();
+    private String mismatchTextAddition;
+    private Object described;
+    private Object descriptor;
+
+    public <xsl:value-of select="$classname"/>()
+    {
+    }
+
+    @Override
+    protected boolean matchesSafely(Object received)
+    {
+        try
+        {
+            assertThat(received, instanceOf(DescribedType.class));
+            descriptor = ((DescribedType)received).getDescriptor();
+            if(!coreMatcher.descriptorMatches(descriptor))
+            {
+                mismatchTextAddition = "Descriptor mismatch";
+                return false;
+            }
+
+            described = ((DescribedType)received).getDescribed();
+            assertThat(described, instanceOf(List.class));
+            @SuppressWarnings("unchecked")
+            List&lt;Object&gt; fields = (List&lt;Object&gt;) described;
+
+            coreMatcher.verifyFields(fields);
+        }
+        catch (AssertionError ae)
+        {
+            mismatchTextAddition = "AssertionFailure: " + ae.getMessage();
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    protected void describeMismatchSafely(Object item, Description mismatchDescription)
+    {
+        mismatchDescription.appendText("\nActual form: ").appendValue(item);
+
+        mismatchDescription.appendText("\nExpected descriptor: ")
+                .appendValue(coreMatcher.getSymbolicDescriptor())
+                .appendText(" / ")
+                .appendValue(coreMatcher.getNumericDescriptor());
+
+        if(mismatchTextAddition != null)
+        {
+            mismatchDescription.appendText("\nAdditional info: ").appendValue(mismatchTextAddition);
+        }
+    }
+
+    public void describeTo(Description description)
+    {
+        description
+            .appendText("<xsl:value-of select="$typename"/> which matches: ")
+            .appendValue(coreMatcher.getMatchers());
+    }
+
+<xsl:for-each select="descendant::node()[name()='field']">
+    public <xsl:value-of select="$classname"/> with<xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>(Matcher&lt;?&gt; m)
+    {
+        coreMatcher.with<xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>(m);
+        return this;
+    }
+</xsl:for-each>
+<xsl:for-each select="descendant::node()[name()='field']">
+    public Object getReceived<xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>()
+    {
+        return coreMatcher.getReceived<xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>();
+    }
+</xsl:for-each>
+
+
+    //Inner core matching class
+    public static class <xsl:value-of select="$classname"/>Core extends AbstractFieldAndDescriptorMatcher
+    {
+        /** Note that the ordinals of the Field enums match the order specified in the AMQP spec */
+        public enum Field
+        {
+    <xsl:for-each select="descendant::node()[name()='field']">
+    <xsl:text>        </xsl:text><xsl:call-template name="toUpperDashToUnderscore"><xsl:with-param name="input" select="@name"/></xsl:call-template>,
+    </xsl:for-each>    }
+
+        public <xsl:value-of select="$classname"/>Core()
+        {
+            super(UnsignedLong.valueOf(<xsl:value-of select="concat(substring(descendant::node()[name()='descriptor']/@code,1,10),substring(descendant::node()[name()='descriptor']/@code,14))"/>L),
+                  Symbol.valueOf("<xsl:value-of select="descendant::node()[name()='descriptor']/@name"/>"),
+                  new HashMap&lt;Enum&lt;?&gt;, Matcher&lt;?&gt;&gt;());
+        }
+
+<xsl:for-each select="descendant::node()[name()='field']">
+        public <xsl:value-of select="$classname"/>Core with<xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>(Matcher&lt;?&gt; m)
+        {
+            getMatchers().put(Field.<xsl:call-template name="toUpperDashToUnderscore"><xsl:with-param name="input" select="@name"/></xsl:call-template>, m);
+            return this;
+        }
+</xsl:for-each>
+<xsl:for-each select="descendant::node()[name()='field']">
+        public Object getReceived<xsl:call-template name="dashToCamel"><xsl:with-param name="input" select="@name"/></xsl:call-template>()
+        {
+            return getReceivedFields().get(Field.<xsl:call-template name="toUpperDashToUnderscore"><xsl:with-param name="input" select="@name"/></xsl:call-template>);
+        }
+</xsl:for-each>
+        @Override
+        protected Enum&lt;?&gt; getField(int fieldIndex)
+        {
+            return Field.values()[fieldIndex];
+        }
+    }
+}
+
+</exsl:document>
+
+</xsl:template>
+
+<!-- *************************************************************************************************************** -->
+
 <xsl:template name="constructFromLiteral">
     <xsl:param name="type"/>
     <xsl:param name="value"/>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org