summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-03-28 15:42:39 +0000
committerAlex Rudyy <orudyy@apache.org>2013-03-28 15:42:39 +0000
commitef17b83b70e048d73920d06ccaf5e2e1064d1fb4 (patch)
treeb9ebbe981fd33549bd07e1d1a2b74b6f62887fce /java
parentf6e1ceb5b6a9f91f747a56dd6e561bd16849b9c1 (diff)
downloadqpid-python-ef17b83b70e048d73920d06ccaf5e2e1064d1fb4.tar.gz
QPID-4671: [Java Broker] Fix NPE occuring in FanoutExchange#isBound(... AMQQueue) when queue parameter is null
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1462162 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java7
-rw-r--r--java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java67
2 files changed, 72 insertions, 2 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
index 8c433ce985..6ad5eb261e 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
@@ -76,7 +76,7 @@ public class FanoutExchange extends AbstractExchange
public boolean isBound(AMQShortString routingKey, AMQQueue queue)
{
- return _queues.containsKey(queue);
+ return isBound(queue);
}
public boolean isBound(AMQShortString routingKey)
@@ -87,7 +87,10 @@ public class FanoutExchange extends AbstractExchange
public boolean isBound(AMQQueue queue)
{
-
+ if (queue == null)
+ {
+ return false;
+ }
return _queues.containsKey(queue);
}
diff --git a/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java b/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java
new file mode 100644
index 0000000000..67739373e1
--- /dev/null
+++ b/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java
@@ -0,0 +1,67 @@
+package org.apache.qpid.server.exchange;
+
+import static org.mockito.Mockito.mock;
+
+import java.util.UUID;
+
+import junit.framework.TestCase;
+
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.FieldTable;
+import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.queue.AMQQueue;
+
+public class FanoutExchangeTest extends TestCase
+{
+ private FanoutExchange _exchange;
+
+ public void setUp()
+ {
+ _exchange = new FanoutExchange();
+ }
+
+ public void testIsBoundAMQShortStringFieldTableAMQQueueWhenQueueIsNull()
+ {
+ assertFalse("calling isBound(AMQShortString,FieldTable,AMQQueue) with null queue should return false",
+ _exchange.isBound((AMQShortString) null, (FieldTable) null, (AMQQueue) null));
+ }
+
+ public void testIsBoundAMQShortStringAMQQueueWhenQueueIsNull()
+ {
+ assertFalse("calling isBound(AMQShortString,AMQQueue) with null queue should return false",
+ _exchange.isBound((AMQShortString) null, (AMQQueue) null));
+ }
+
+ public void testIsBoundAMQQueueWhenQueueIsNull()
+ {
+ assertFalse("calling isBound(AMQQueue) with null queue should return false", _exchange.isBound((AMQQueue) null));
+ }
+
+ public void testIsBoundAMQShortStringFieldTableAMQQueue()
+ {
+ AMQQueue queue = bindQueue();
+ assertTrue("Should return true for a bound queue",
+ _exchange.isBound((AMQShortString) null, (FieldTable) null, queue));
+ }
+
+ public void testIsBoundAMQShortStringAMQQueue()
+ {
+ AMQQueue queue = bindQueue();
+ assertTrue("Should return true for a bound queue",
+ _exchange.isBound((AMQShortString) null, queue));
+ }
+
+ public void testIsBoundAMQQueue()
+ {
+ AMQQueue queue = bindQueue();
+ assertTrue("Should return true for a bound queue",
+ _exchange.isBound(queue));
+ }
+
+ private AMQQueue bindQueue()
+ {
+ AMQQueue queue = mock(AMQQueue.class);
+ _exchange.addBinding(new Binding(UUID.randomUUID(), "does not matter", queue, _exchange, null));
+ return queue;
+ }
+}