You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2009/06/22 15:21:51 UTC

svn commit: r787231 - in /qpid/trunk/qpid/java: client/src/main/java/org/apache/qpid/client/ systests/src/main/java/org/apache/qpid/test/unit/topic/

Author: rhs
Date: Mon Jun 22 13:21:50 2009
New Revision: 787231

URL: http://svn.apache.org/viewvc?rev=787231&view=rev
Log:
QPID-1923: made createDurableSubscriber fail on a temporary topic

Modified:
    qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
    qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
    qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java

Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=787231&r1=787230&r2=787231&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java Mon Jun 22 13:21:50 2009
@@ -944,7 +944,7 @@
             throws JMSException
     {
         checkNotClosed();
-        checkValidTopic(topic);
+        checkValidTopic(topic, true);
         if (_subscriptions.containsKey(name))
         {
             _subscriptions.get(name).close();
@@ -2063,7 +2063,7 @@
     /*
      * 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 @@
                     "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 @@
         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.
      *

Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=787231&r1=787230&r2=787231&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Mon Jun 22 13:21:50 2009
@@ -788,7 +788,7 @@
     {
 
         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);

Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java?rev=787231&r1=787230&r2=787231&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java Mon Jun 22 13:21:50 2009
@@ -427,7 +427,7 @@
     {
 
         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)

Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java?rev=787231&r1=787230&r2=787231&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java Mon Jun 22 13:21:50 2009
@@ -37,6 +37,7 @@
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
+import javax.jms.Topic;
 import javax.jms.TopicSubscriber;
 
 /**
@@ -389,6 +390,32 @@
         session.unsubscribe("testResubscribeWithChangedSelector");
     }
 
+    public void testDurableSubscribeWithTemporaryTopic() throws Exception
+    {
+        Connection conn = getConnection();
+        conn.start();
+        Session ssn = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Topic topic = ssn.createTemporaryTopic();
+        try
+        {
+            ssn.createDurableSubscriber(topic, "test");
+            fail("expected InvalidDestinationException");
+        }
+        catch (InvalidDestinationException ex)
+        {
+            // this is expected
+        }
+        try
+        {
+            ssn.createDurableSubscriber(topic, "test", null, false);
+            fail("expected InvalidDestinationException");
+        }
+        catch (InvalidDestinationException ex)
+        {
+            // this is expected
+        }
+    }
+
     private void sendMatchingAndNonMatchingMessage(Session session, MessageProducer producer) throws JMSException
     {
         TextMessage msg = session.createTextMessage("testResubscribeWithChangedSelector1");



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org