summaryrefslogtreecommitdiff
path: root/qpid/java/client
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-06-22 13:21:50 +0000
committerRafael H. Schloming <rhs@apache.org>2009-06-22 13:21:50 +0000
commitbf3ace9ec0a1c6749963e0c0cf24ddfdfd15a0b3 (patch)
treebb8d093c88efca1b8ea67cfceae5f7e8decf824f /qpid/java/client
parentd8861ac8381d1feaf53c5af668a7c323ce3eac84 (diff)
downloadqpid-python-bf3ace9ec0a1c6749963e0c0cf24ddfdfd15a0b3.tar.gz
QPID-1923: made createDurableSubscriber fail on a temporary topic
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@787231 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/client')
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java15
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java2
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java2
3 files changed, 15 insertions, 4 deletions
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 3529cfa6ad..a40295a9b7 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
@@ -944,7 +944,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
throws JMSException
{
checkNotClosed();
- checkValidTopic(topic);
+ checkValidTopic(topic, true);
if (_subscriptions.containsKey(name))
{
_subscriptions.get(name).close();
@@ -2063,7 +2063,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
/*
* I could have combined the last 3 methods, but this way it improves readability
*/
- protected AMQTopic checkValidTopic(Topic topic) throws JMSException
+ protected AMQTopic checkValidTopic(Topic topic, boolean durable) throws JMSException
{
if (topic == null)
{
@@ -2076,6 +2076,12 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
"Cannot create a subscription on a temporary topic created in another session");
}
+ if ((topic instanceof TemporaryDestination) && durable)
+ {
+ throw new javax.jms.InvalidDestinationException
+ ("Cannot create a durable subscription with a temporary topic: " + topic);
+ }
+
if (!(topic instanceof AMQTopic))
{
throw new javax.jms.InvalidDestinationException(
@@ -2086,6 +2092,11 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
return (AMQTopic) topic;
}
+ protected AMQTopic checkValidTopic(Topic topic) throws JMSException
+ {
+ return checkValidTopic(topic, false);
+ }
+
/**
* Called to close message consumers cleanly. This may or may <b>not</b> be as a result of an error.
*
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 1515a07507..7ce51c8918 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
@@ -788,7 +788,7 @@ public class AMQSession_0_10 extends AMQSession<BasicMessageConsumer_0_10, Basic
{
checkNotClosed();
- AMQTopic origTopic=checkValidTopic(topic);
+ AMQTopic origTopic=checkValidTopic(topic, true);
AMQTopic dest=AMQTopic.createDurable010Topic(origTopic, name, _connection);
TopicSubscriberAdaptor<BasicMessageConsumer_0_10> subscriber=_subscriptions.get(name);
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 ff8631c12e..fa4e08f62b 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
@@ -427,7 +427,7 @@ public final class AMQSession_0_8 extends AMQSession<BasicMessageConsumer_0_8, B
{
checkNotClosed();
- AMQTopic origTopic = checkValidTopic(topic);
+ AMQTopic origTopic = checkValidTopic(topic, true);
AMQTopic dest = AMQTopic.createDurableTopic(origTopic, name, _connection);
TopicSubscriberAdaptor<BasicMessageConsumer_0_8> subscriber = _subscriptions.get(name);
if (subscriber != null)