From 905d329f94390de37a6166f41e736943abee4c8a Mon Sep 17 00:00:00 2001 From: Rajith Muditha Attapattu Date: Tue, 8 Jul 2014 23:18:46 +0000 Subject: QPID-5870 A Consumer is now marked if it's using a durable subscription. The topic subscription queue is now deleted when the subscription ends unless it's marked as a durable-topic-subscription. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1608971 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/qpid/client/AMQSession.java | 1 + .../org/apache/qpid/client/AMQSession_0_10.java | 27 ++++++++++++++-------- .../apache/qpid/client/BasicMessageConsumer.java | 11 +++++++++ .../qpid/client/BasicMessageConsumer_0_10.java | 7 ++++-- 4 files changed, 35 insertions(+), 11 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 2ca93a567e..a37b532617 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 @@ -1105,6 +1105,7 @@ public abstract class AMQSession(dest, consumer); // Save subscription information diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java index 60d48f02ef..cb8f81f68f 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java @@ -1143,26 +1143,35 @@ public class AMQSession_0_10 extends AMQSession args) throws AMQException + { boolean match = true; try { - QueueQueryResult result = getQpidSession().queueQuery(dest.getAddressName(), Option.NONE).get(); - match = dest.getAddressName().equals(result.getQueue()); - Node node = dest.getNode(); + QueueQueryResult result = getQpidSession().queueQuery(queueName, Option.NONE).get(); + match = queueName.equals(result.getQueue()); if (match && assertNode) { - match = (result.getDurable() == node.isDurable()) && - (result.getAutoDelete() == node.isAutoDelete()) && - (result.getExclusive() == node.isExclusive()) && - (matchProps(result.getArguments(),node.getDeclareArgs())); + match = (result.getDurable() == durable) && + (result.getAutoDelete() == autoDelete) && + (result.getExclusive() == exclusive) && + (matchProps(result.getArguments(),args)); } if (assertNode) { if (!match) { - throw new AMQException("Assert failed for address : " + dest +", Result was : " + result); + throw new AMQException("Assert failed for queue : " + queueName +", Result was : " + result); } } } @@ -1596,7 +1605,7 @@ public class AMQSession_0_10 extends AMQSession extends Closeable implements Messa private final boolean _browseOnly; private List _closedStack = null; + private boolean _isDurableSubscriber = false; protected BasicMessageConsumer(int channelId, AMQConnection connection, AMQDestination destination, String messageSelector, boolean noLocal, MessageFactoryRegistry messageFactory, @@ -1035,4 +1036,14 @@ public abstract class BasicMessageConsumer extends Closeable implements Messa { return _messageFactory; } + + protected boolean isDurableSubscriber() + { + return _isDurableSubscriber; + } + + protected void markAsDurableSubscriber() + { + _isDurableSubscriber = true; + } } diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java index ef7b8cc217..658fb25ce4 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java @@ -509,11 +509,14 @@ public class BasicMessageConsumer_0_10 extends BasicMessageConsumer