You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2007/03/13 14:23:15 UTC

svn commit: r517683 - /incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java

Author: ritchiem
Date: Tue Mar 13 06:23:14 2007
New Revision: 517683

URL: http://svn.apache.org/viewvc?view=rev&rev=517683
Log:
Fixed bug where non durable queues would be attempted to be deleted from the store

Modified:
    incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java

Modified: incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java?view=diff&rev=517683&r1=517682&r2=517683
==============================================================================
--- incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java Tue Mar 13 06:23:14 2007
@@ -34,7 +34,7 @@
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.server.AMQChannel;
 
-public class QueueDeleteHandler  implements StateAwareMethodListener<QueueDeleteBody>
+public class QueueDeleteHandler implements StateAwareMethodListener<QueueDeleteBody>
 {
     private static final QueueDeleteHandler _instance = new QueueDeleteHandler();
 
@@ -56,7 +56,7 @@
 
     }
 
-    public void methodReceived(AMQStateManager stateManager,  AMQMethodEvent<QueueDeleteBody> evt) throws AMQException
+    public void methodReceived(AMQStateManager stateManager, AMQMethodEvent<QueueDeleteBody> evt) throws AMQException
     {
         AMQProtocolSession session = stateManager.getProtocolSession();
         VirtualHost virtualHost = session.getVirtualHost();
@@ -65,9 +65,9 @@
 
         QueueDeleteBody body = evt.getMethod();
         AMQQueue queue;
-        if(body.queue == null)
+        if (body.queue == null)
         {
-             AMQChannel channel = session.getChannel(evt.getChannelId());
+            AMQChannel channel = session.getChannel(evt.getChannelId());
 
             if (channel == null)
             {
@@ -82,35 +82,40 @@
             queue = queueRegistry.getQueue(body.queue);
         }
 
-        if(queue == null)
+        if (queue == null)
         {
-            if(_failIfNotFound)
+            if (_failIfNotFound)
             {
                 throw body.getChannelException(AMQConstant.NOT_FOUND, "Queue " + body.queue + " does not exist.");
             }
         }
         else
         {
-            if(body.ifEmpty && !queue.isEmpty())
+            if (body.ifEmpty && !queue.isEmpty())
             {
-                throw body.getChannelException(AMQConstant.IN_USE, "Queue: " + body.queue + " is not empty." );
+                throw body.getChannelException(AMQConstant.IN_USE, "Queue: " + body.queue + " is not empty.");
             }
-            else if(body.ifUnused && !queue.isUnused())
-            {                
+            else if (body.ifUnused && !queue.isUnused())
+            {
                 // TODO - Error code
-                throw body.getChannelException(AMQConstant.IN_USE, "Queue: " + body.queue + " is still used." );
+                throw body.getChannelException(AMQConstant.IN_USE, "Queue: " + body.queue + " is still used.");
 
             }
             else
             {
                 int purged = queue.delete(body.ifUnused, body.ifEmpty);
-                store.removeQueue(queue.getName());
+
+                if (queue.isDurable())
+                {
+                    store.removeQueue(queue.getName());
+                }
+                
                 // AMQP version change: Hardwire the version to 0-8 (major=8, minor=0)
                 // TODO: Connect this to the session version obtained from ProtocolInitiation for this session.
                 // Be aware of possible changes to parameter order as versions change.
                 session.writeFrame(QueueDeleteOkBody.createAMQFrame(evt.getChannelId(),
-                    (byte)8, (byte)0,	// AMQP version (major, minor)
-                    purged));	// messageCount
+                                                                    (byte) 8, (byte) 0,    // AMQP version (major, minor)
+                                                                    purged));    // messageCount
             }
         }
     }