diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2008-01-03 17:29:02 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2008-01-03 17:29:02 +0000 |
commit | a7fb61cad8733e14e0c9604d39f3b095d40bf561 (patch) | |
tree | 1e1d39083cbe6c8a2b2807333ddd42a12916e50a | |
parent | fdd5322d33d988518ec7e232ba81229cdf4679ec (diff) | |
download | qpid-python-a7fb61cad8733e14e0c9604d39f3b095d40bf561.tar.gz |
QPID-718 : NPE when binding queue with null routing key
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@608570 13f79535-47bb-0310-9956-ffa450edef68
4 files changed, 9 insertions, 2 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java index 5548659fae..b6b6ee39ce 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java +++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java @@ -190,7 +190,7 @@ public class DestNameExchange extends AbstractExchange public void route(AMQMessage payload) throws AMQException { final MessagePublishInfo info = payload.getMessagePublishInfo(); - final AMQShortString routingKey = info.getRoutingKey(); + final AMQShortString routingKey = info.getRoutingKey() == null ? AMQShortString.EMPTY_STRING : info.getRoutingKey(); final List<AMQQueue> queues = (routingKey == null) ? null : _index.get(routingKey); if (queues == null || queues.isEmpty()) { diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java index 4efe87d8d4..75be86a387 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java +++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java @@ -181,6 +181,11 @@ public class DestWildExchange extends AbstractExchange private AMQShortString normalize(AMQShortString routingKey) { + if(routingKey == null) + { + routingKey = AMQShortString.EMPTY_STRING; + } + StringTokenizer routingTokens = new StringTokenizer(routingKey.toString(), TOPIC_SEPARATOR); List<String> _subscription = new ArrayList<String>(); diff --git a/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java b/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java index 057586a143..a365cd864a 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java +++ b/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java @@ -90,7 +90,7 @@ public class QueueBindHandler implements StateAwareMethodListener<QueueBindBody> else { queue = queueRegistry.getQueue(body.getQueue()); - routingKey = body.getRoutingKey() == null ? null : body.getRoutingKey().intern(); + routingKey = body.getRoutingKey() == null ? AMQShortString.EMPTY_STRING : body.getRoutingKey().intern(); } if (queue == null) diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java index ec501951af..cf64b0475a 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java @@ -57,6 +57,8 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt private int _hashCode;
private final int _length;
private static final char[] EMPTY_CHAR_ARRAY = new char[0];
+
+ public static final AMQShortString EMPTY_STRING = new AMQShortString((String)null);
public AMQShortString(byte[] data)
{
|