summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-03-17 16:54:35 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-03-17 16:54:35 +0000
commitb5feef17e3fda5d564cb0db9884060d396ebbdb3 (patch)
tree887e0d052d098b99a29f55249dc8a83c16b2e73c
parentf7c96151118876210252eb97b3ce8f9b53d9719f (diff)
downloadqpid-python-b5feef17e3fda5d564cb0db9884060d396ebbdb3.tar.gz
QPID-4652 [Java Broker 1.0] delete temporary queues created for exchange subscription when connection closes
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1457485 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
index 75235c7ef0..589c3a0892 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
@@ -299,6 +299,43 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
vhost.getBindingFactory().addBinding(binding,queue,exchange,null);
source.setDistributionMode(StdDistMode.COPY);
+ if(!isDurable)
+ {
+ final String queueName = name;
+ final AMQQueue tempQueue = queue;
+
+ final Connection_1_0.Task deleteQueueTask =
+ new Connection_1_0.Task()
+ {
+ public void doTask(Connection_1_0 session)
+ {
+ if (_vhost.getQueueRegistry().getQueue(queueName) == tempQueue)
+ {
+ try
+ {
+ tempQueue.delete();
+ }
+ catch (AMQException e)
+ {
+ e.printStackTrace(); //TODO.
+ }
+ }
+ }
+ };
+
+ getSession().getConnection().addConnectionCloseTask(deleteQueueTask);
+
+ queue.addQueueDeleteTask(new AMQQueue.Task()
+ {
+ public void doTask(AMQQueue queue)
+ {
+ getSession().getConnection().removeConnectionCloseTask(deleteQueueTask);
+ }
+
+
+ });
+ }
+
qd = new QueueDestination(queue);
}
catch (AMQSecurityException e)