summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2008-01-03 17:29:02 +0000
committerRobert Godfrey <rgodfrey@apache.org>2008-01-03 17:29:02 +0000
commita7fb61cad8733e14e0c9604d39f3b095d40bf561 (patch)
tree1e1d39083cbe6c8a2b2807333ddd42a12916e50a
parentfdd5322d33d988518ec7e232ba81229cdf4679ec (diff)
downloadqpid-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
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java2
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java2
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java2
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)
{