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
}
}
}