From de256c3031504b710d6676495e06f896972c2395 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Sun, 2 Jun 2013 14:58:05 +0000 Subject: 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 --- .../server/transport/ServerSessionDelegate.java | 59 +++++++++++++++++++--- 1 file 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()) -- cgit v1.2.1