summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2009-08-24 02:34:25 +0000
committerRobert Gemmell <robbie@apache.org>2009-08-24 02:34:25 +0000
commitfe4ebd80a710770910c65778f5e531ebaccffde9 (patch)
treedebde9b4347272d3abb1dbbc67cb771a83e790db /java
parent208230e695aaa3dd5691d2872835b87191569876 (diff)
downloadqpid-python-fe4ebd80a710770910c65778f5e531ebaccffde9.tar.gz
QPID-2069: Allow empty values to be specified for keys when creating bindings in a Headers exchange via JMX, as the HeaderBindind supports this as specifying a match on key presence only
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@807050 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
index fc667db17b..c5f5cd05e1 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
@@ -204,11 +204,21 @@ public class HeadersExchange extends AbstractExchange
for (int i = 0; i < bindings.length; i++)
{
String[] keyAndValue = bindings[i].split("=");
- if (keyAndValue == null || keyAndValue.length < 2)
+ if (keyAndValue == null || keyAndValue.length == 0 || keyAndValue.length > 2)
{
throw new JMException("Format for headers binding should be \"<attribute1>=<value1>,<attribute2>=<value2>\" ");
}
- bindingMap.setString(keyAndValue[0], keyAndValue[1]);
+
+ if(keyAndValue.length ==1)
+ {
+ //no value was given, only a key. Use an empty value
+ //to signal match on key presence alone
+ bindingMap.setString(keyAndValue[0], "");
+ }
+ else
+ {
+ bindingMap.setString(keyAndValue[0], keyAndValue[1]);
+ }
}
_bindings.add(new Registration(new HeadersBinding(bindingMap), queue));