From 3d15749e5d44f9fe539bb2fbeba55192369edf24 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Thu, 6 Oct 2011 18:36:38 +0000 Subject: QPID-2442: Make 0-10 TemporaryQueue#delete and TemporaryTopic#delete perform the delete on the Broker git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1179754 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/qpid/client/AMQSession.java | 15 +++++++++++++++ .../java/org/apache/qpid/client/AMQSession_0_8.java | 19 +++++++++++++++---- .../org/apache/qpid/client/AMQTemporaryQueue.java | 17 ++++++++++------- .../org/apache/qpid/client/AMQTemporaryTopic.java | 12 ++++++++---- .../org/apache/qpid/client/TemporaryDestination.java | 5 ++++- 5 files changed, 52 insertions(+), 16 deletions(-) (limited to 'qpid/java/client/src') diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java index 30c7403a90..4f7d344655 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java @@ -2772,6 +2772,21 @@ public abstract class AMQSessionNote that this operation automatically retries in the event of fail-over. + * + * @param amqQueue The name of the temporary destination to delete. + * + * @throws JMSException If the queue could not be deleted for any reason. + * @todo Be aware of possible changes to parameter order as versions change. + */ + protected void deleteTemporaryDestination(final TemporaryDestination amqQueue) throws JMSException + { + deleteQueue(amqQueue.getAMQQueueName()); + } + public abstract void sendQueueDelete(final AMQShortString queueName) throws AMQException, FailoverException; private long getNextProducerId() diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java index ccb2b00947..369c8a6e9d 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java @@ -82,7 +82,6 @@ import org.slf4j.LoggerFactory; public final class AMQSession_0_8 extends AMQSession { - /** Used for debugging. */ private static final Logger _logger = LoggerFactory.getLogger(AMQSession.class); @@ -92,7 +91,7 @@ public final class AMQSession_0_8 extends AMQSession args) throws JMSException { diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java index f54cb782c8..28f838057e 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java @@ -20,14 +20,13 @@ */ package org.apache.qpid.client; +import java.util.UUID; + import javax.jms.JMSException; import javax.jms.TemporaryQueue; import org.apache.qpid.framing.AMQShortString; -import java.util.Random; -import java.util.UUID; - /** AMQ implementation of a TemporaryQueue. */ final class AMQTemporaryQueue extends AMQQueue implements TemporaryQueue, TemporaryDestination { @@ -50,11 +49,15 @@ final class AMQTemporaryQueue extends AMQQueue implements TemporaryQueue, Tempor { throw new JMSException("Temporary Queue has consumers so cannot be deleted"); } - _deleted = true; - // Currently TemporaryQueue is set to be auto-delete which means that the queue will be deleted - // by the server when there are no more subscriptions to that queue. This is probably not - // quite right for JMSCompliance. + try + { + _session.deleteTemporaryDestination(this); + } + finally + { + _deleted = true; + } } public AMQSession getSession() diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java index 7b5781530b..db54b320dc 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java @@ -53,10 +53,14 @@ class AMQTemporaryTopic extends AMQTopic implements TemporaryTopic, TemporaryDes throw new JMSException("Temporary Topic has consumers so cannot be deleted"); } - _deleted = true; - // Currently TemporaryQueue is set to be auto-delete which means that the queue will be deleted - // by the server when there are no more subscriptions to that queue. This is probably not - // quite right for JMSCompliance. + try + { + _session.deleteTemporaryDestination(this); + } + finally + { + _deleted = true; + } } public AMQSession getSession() diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/TemporaryDestination.java b/qpid/java/client/src/main/java/org/apache/qpid/client/TemporaryDestination.java index 7f8e80c73a..ca137f5a51 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/TemporaryDestination.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/TemporaryDestination.java @@ -24,13 +24,16 @@ package org.apache.qpid.client; import javax.jms.Destination; import javax.jms.JMSException; +import org.apache.qpid.framing.AMQShortString; + /** - * Provides support for covenience interface implemented by both AMQTemporaryTopic and AMQTemporaryQueue + * Provides support for convenience interface implemented by both AMQTemporaryTopic and AMQTemporaryQueue * so that operations related to their "temporary-ness" can be abstracted out. */ interface TemporaryDestination extends Destination { + public AMQShortString getAMQQueueName(); public void delete() throws JMSException; public AMQSession getSession(); public boolean isDeleted(); -- cgit v1.2.1