From fe4ebd80a710770910c65778f5e531ebaccffde9 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Mon, 24 Aug 2009 02:34:25 +0000 Subject: 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 --- .../org/apache/qpid/server/exchange/HeadersExchange.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'java') 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 \"=,=\" "); } - 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)); -- cgit v1.2.1