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]

Reply via email to