summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-06-02 14:58:05 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-06-02 14:58:05 +0000
commitd11d79e5a58aef58593960e92b4ddc72fe8a3b24 (patch)
treef6244a9b100bdcc33bc80cd8edc1189b27b8d8a2 /qpid/java
parent6bee3b50ff986b3f423e5982ec55895a2deb688c (diff)
downloadqpid-python-d11d79e5a58aef58593960e92b4ddc72fe8a3b24.tar.gz
QPID-4897 : [Java Broker] changes to how exchangeBound result is calculated
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1488726 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java59
1 files changed, 51 insertions, 8 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 74a90374cb..548b75f949 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
@@ -1132,30 +1132,64 @@ public class ServerSessionDelegate extends SessionDelegate
{
final boolean keyMatched = exchange.isBound(method.getBindingKey(), queue);
result.setKeyNotMatched(!keyMatched);
- if(method.hasArguments() && keyMatched)
+ if(method.hasArguments())
{
- result.setArgsNotMatched(!exchange.isBound(method.getBindingKey(), method.getArguments(), queue));
+ if(keyMatched)
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getBindingKey(), method.getArguments(), queue));
+ }
+ else
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getArguments(), queue));
+ }
}
}
else
{
- result.setKeyNotMatched(!exchange.isBound(method.getBindingKey()));
+ boolean keyMatched = exchange.isBound(method.getBindingKey());
+ result.setKeyNotMatched(!keyMatched);
+ if(method.hasArguments())
+ {
+ if(keyMatched)
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getBindingKey(), method.getArguments()));
+ }
+ else
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getArguments()));
+ }
+ }
}
}
else if (method.hasArguments())
{
- result.setArgsNotMatched(!exchange.isBound(method.getArguments(), queue));
+ if(queueMatched)
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getArguments(), queue));
+ }
+ else
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getArguments()));
+ }
}
}
else if(exchange != null && method.hasBindingKey())
{
- result.setKeyNotMatched(!exchange.isBound(method.getBindingKey()));
+ final boolean keyMatched = exchange.isBound(method.getBindingKey());
+ result.setKeyNotMatched(!keyMatched);
if(method.hasArguments())
{
- result.setArgsNotMatched(!exchange.isBound(result.getKeyNotMatched() ? null : method.getBindingKey(), method.getArguments(), queue));
+ if(keyMatched)
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getBindingKey(), method.getArguments()));
+ }
+ else
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getArguments()));
+ }
}
@@ -1164,11 +1198,20 @@ public class ServerSessionDelegate extends SessionDelegate
}
else if(exchange != null && method.hasBindingKey())
{
+ final boolean keyMatched = exchange.isBound(method.getBindingKey());
+ result.setKeyNotMatched(!keyMatched);
+
if(method.hasArguments())
{
- result.setArgsNotMatched(!exchange.isBound(method.getBindingKey(), method.getArguments()));
+ if(keyMatched)
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getBindingKey(), method.getArguments()));
+ }
+ else
+ {
+ result.setArgsNotMatched(!exchange.isBound(method.getArguments()));
+ }
}
- result.setKeyNotMatched(!exchange.isBound(method.getBindingKey()));
}
else if(exchange != null && method.hasArguments())