summaryrefslogtreecommitdiff
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
commitde256c3031504b710d6676495e06f896972c2395 (patch)
tree2d1851ccdb024ebc8ed44e8c7c0b0d25b5c3509e
parent8aa8567bcb8102961ad08fe0c4032523efce1ad4 (diff)
downloadqpid-python-de256c3031504b710d6676495e06f896972c2395.tar.gz
QPID-4897 : [Java Broker] changes to how exchangeBound result is calculated
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1488726 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java59
1 files changed, 51 insertions, 8 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 74a90374cb..548b75f949 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/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())