add support for refusing consumer links, with or without deferring write of the 
attach response until sending the detach


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

Branch: refs/heads/master
Commit: 159bfaa6103566d085e9e69f901b300ffccdc889
Parents: cb3c17f
Author: Robert Gemmell <rob...@apache.org>
Authored: Tue Feb 24 13:04:31 2015 +0000
Committer: Robert Gemmell <rob...@apache.org>
Committed: Tue Feb 24 13:04:31 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/test/testpeer/TestAmqpPeer.java    | 41 +++++++++++++++++++-
 1 file changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/159bfaa6/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 1cb91a2..1e46bc2 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
@@ -639,6 +639,11 @@ public class TestAmqpPeer implements AutoCloseable
 
     public void expectReceiverAttach(final Matcher<?> linkNameMatcher, final 
Matcher<?> sourceMatcher)
     {
+        expectReceiverAttach(linkNameMatcher, sourceMatcher, false, false);
+    }
+
+    public void expectReceiverAttach(final Matcher<?> linkNameMatcher, final 
Matcher<?> sourceMatcher, final boolean refuseLink, boolean 
deferAttachResponseWrite)
+    {
         final AttachMatcher attachMatcher = new AttachMatcher()
                 .withName(linkNameMatcher)
                 .withHandle(notNullValue())
@@ -664,12 +669,44 @@ public class TestAmqpPeer implements AutoCloseable
                 
attachResponseSender.setChannel(attachMatcher.getActualChannel());
                 attachResponse.setHandle(attachMatcher.getReceivedHandle());
                 attachResponse.setName(attachMatcher.getReceivedName());
-                
attachResponse.setSource(trimSourceOutcomesCapabilities(createSourceObjectFromDescribedType(attachMatcher.getReceivedSource())));
                 attachResponse.setTarget(attachMatcher.getReceivedTarget());
+                if(refuseLink) {
+                    attachResponse.setSource(null);
+                } else {
+                    
attachResponse.setSource(trimSourceOutcomesCapabilities(createSourceObjectFromDescribedType(attachMatcher.getReceivedSource())));
+                }
             }
         });
 
-        attachMatcher.onSuccess(attachResponseSender);
+        if(deferAttachResponseWrite)
+        {
+            // Defer writing the attach frame until the subsequent frame is 
also ready
+            attachResponseSender.setDeferWrite(true);
+        }
+
+        CompositeAmqpPeerRunnable composite = new CompositeAmqpPeerRunnable();
+        composite.add(attachResponseSender);
+
+        if (refuseLink)
+        {
+            final DetachFrame detachResonse = new 
DetachFrame().setClosed(true);
+            // The response frame channel will be dynamically set based on the
+            // incoming frame. Using the -1 is an illegal placeholder.
+            final FrameSender detachResonseSender = new FrameSender(this, 
FrameType.AMQP, -1, detachResonse, null);
+            detachResonseSender.setValueProvider(new ValueProvider()
+            {
+                @Override
+                public void setValues()
+                {
+                    
detachResonseSender.setChannel(attachMatcher.getActualChannel());
+                    detachResonse.setHandle(attachMatcher.getReceivedHandle());
+                }
+            });
+
+            composite.add(detachResonseSender);
+        }
+
+        attachMatcher.onSuccess(composite);
 
         addHandler(attachMatcher);
     }


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

Reply via email to