Author: robbie
Date: Sat Mar 30 15:22:43 2013
New Revision: 1462778
URL: http://svn.apache.org/r1462778
Log:
QPID-4671: [Java Broker] Fix NPE occuring in FanoutExchange#isBound(...
AMQQueue) when queue parameter is null
merged from trunk r1462162
Added:
qpid/branches/0.22/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java
Modified:
qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
Modified:
qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java?rev=1462778&r1=1462777&r2=1462778&view=diff
==============================================================================
---
qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
(original)
+++
qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
Sat Mar 30 15:22:43 2013
@@ -76,7 +76,7 @@ public class FanoutExchange extends Abst
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 Abst
public boolean isBound(AMQQueue queue)
{
-
+ if (queue == null)
+ {
+ return false;
+ }
return _queues.containsKey(queue);
}
Added:
qpid/branches/0.22/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java?rev=1462778&view=auto
==============================================================================
---
qpid/branches/0.22/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java
(added)
+++
qpid/branches/0.22/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java
Sat Mar 30 15:22:43 2013
@@ -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;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]