You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ai...@apache.org on 2008/08/20 18:29:39 UTC

svn commit: r687383 - in /incubator/qpid/trunk/qpid/java: client/src/main/java/org/apache/qpid/client/ systests/src/main/java/org/apache/qpid/test/unit/client/connection/ systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/

Author: aidan
Date: Wed Aug 20 09:29:31 2008
New Revision: 687383

URL: http://svn.apache.org/viewvc?rev=687383&view=rev
Log:
QPID-1217: make temporary queue creation actually create the temporary queue.

AMQSession*: consolidate createTemporaryQueue into AMQSession.

ConnectionTest: declare custom exchanges before testing them

TemporaryQueueTest: add test for QPID-1217

Modified:
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java
    incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java
    incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=687383&r1=687382&r2=687383&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java Wed Aug 20 09:29:31 2008
@@ -1194,7 +1194,29 @@
         return new TopicSubscriberAdaptor(dest, (C) createExclusiveConsumer(dest, messageSelector, noLocal));
     }
 
-    public abstract TemporaryQueue createTemporaryQueue() throws JMSException;
+    public TemporaryQueue createTemporaryQueue() throws JMSException
+    {
+        checkNotClosed();
+        try
+        {
+            AMQTemporaryQueue result = new AMQTemporaryQueue(this);
+
+            // this is done so that we can produce to a temporary queue before we create a consumer
+            result.setQueueName(result.getRoutingKey());
+            createQueue(result.getAMQQueueName(), result.isAutoDelete(), 
+                        result.isDurable(), result.isExclusive());
+            bindQueue(result.getAMQQueueName(), result.getRoutingKey(), 
+                    new FieldTable(), result.getExchangeName(), result);
+            return result;
+        }
+        catch (Exception e)
+        {
+           JMSException ex = new JMSException("Cannot create temporary queue");
+           ex.setLinkedException(e);
+           e.printStackTrace();
+           throw ex;
+        }
+    }
 
     public TemporaryTopic createTemporaryTopic() throws JMSException
     {

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=687383&r1=687382&r2=687383&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Wed Aug 20 09:29:31 2008
@@ -623,28 +623,6 @@
         }
     }
 
-
-     public TemporaryQueue createTemporaryQueue() throws JMSException
-    {
-        checkNotClosed();
-        AMQTemporaryQueue result = new AMQTemporaryQueue(this);
-        try
-        {
-            // this is done so that we can produce to a temporary queue beofre we create a consumer
-            sendCreateQueue(result.getRoutingKey(), result.isAutoDelete(), result.isDurable(), result.isExclusive(),null);
-            sendQueueBind(result.getRoutingKey(), result.getRoutingKey(), new FieldTable(), result.getExchangeName(),result);
-            result.setQueueName(result.getRoutingKey());
-        }
-        catch (Exception e)
-        {
-           throw new JMSException("Cannot create temporary queue" );
-        }
-        return result;
-    }
-
-
-
-
     //------ Inner classes
     /**
      * Lstener for qpid protocol exceptions

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java?rev=687383&r1=687382&r2=687383&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java Wed Aug 20 09:29:31 2008
@@ -418,13 +418,6 @@
         getProtocolHandler().syncWrite(frame, TxRollbackOkBody.class);
     }
 
-     public TemporaryQueue createTemporaryQueue() throws JMSException
-    {
-        checkNotClosed();
-
-        return new AMQTemporaryQueue(this);
-    }
-
     public  TopicSubscriber createDurableSubscriber(Topic topic, String name) throws JMSException
     {
 

Modified: incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java?rev=687383&r1=687382&r2=687383&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java (original)
+++ incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java Wed Aug 20 09:29:31 2008
@@ -23,11 +23,15 @@
 import org.apache.qpid.AMQConnectionFailureException;
 import org.apache.qpid.AMQException;
 import org.apache.qpid.AMQUnresolvedAddressException;
+import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.test.utils.QpidTestCase;
 import org.apache.qpid.client.AMQAuthenticationException;
 import org.apache.qpid.client.AMQConnection;
 import org.apache.qpid.client.AMQQueue;
+import org.apache.qpid.client.AMQSession;
 import org.apache.qpid.client.AMQTopic;
+import org.apache.qpid.exchange.ExchangeDefaults;
+import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.jms.Session;
 
 import javax.jms.Connection;
@@ -92,6 +96,21 @@
                                      + "&temporaryQueueExchange='tmp.direct'"
                                      + "&temporaryTopicExchange='tmp.topic'");
 
+
+            AMQSession sess = (AMQSession) conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            
+            sess.declareExchange(new AMQShortString("test.direct"), 
+                    ExchangeDefaults.DIRECT_EXCHANGE_CLASS, false);
+
+            sess.declareExchange(new AMQShortString("tmp.direct"), 
+                    ExchangeDefaults.DIRECT_EXCHANGE_CLASS, false);
+
+            sess.declareExchange(new AMQShortString("tmp.topic"), 
+                    ExchangeDefaults.TOPIC_EXCHANGE_CLASS, false);
+
+            sess.declareExchange(new AMQShortString("test.topic"), 
+                    ExchangeDefaults.TOPIC_EXCHANGE_CLASS, false);
+
             QueueSession queueSession = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
 
             AMQQueue queue = (AMQQueue) queueSession.createQueue("MyQueue");
@@ -105,7 +124,7 @@
             queueSession.close();
 
             TopicSession topicSession = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
-
+            
             AMQTopic topic = (AMQTopic) topicSession.createTopic("silly.topic");
 
             assertEquals(topic.getExchangeName().toString(), "test.topic");

Modified: incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java?rev=687383&r1=687382&r2=687383&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java (original)
+++ incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java Wed Aug 20 09:29:31 2008
@@ -22,6 +22,7 @@
 package org.apache.qpid.test.unit.client.temporaryqueue;
 
 import javax.jms.Connection;
+import javax.jms.ExceptionListener;
 import javax.jms.JMSException;
 import javax.jms.MessageConsumer;
 import javax.jms.MessageProducer;
@@ -32,12 +33,16 @@
 
 import org.apache.qpid.test.utils.QpidTestCase;
 import org.apache.qpid.client.AMQQueue;
+import org.apache.qpid.jms.ConnectionListener;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.LinkedList;
 
-public class TemporaryQueueTest extends QpidTestCase
+public class TemporaryQueueTest extends QpidTestCase implements ExceptionListener
 {
+    private List<Exception> _exceptions = new ArrayList<Exception>();
+
     protected void setUp() throws Exception
     {
         super.setUp();
@@ -53,7 +58,7 @@
         return  getConnection("guest", "guest");
     }
 
-    public void testTempoaryQueue() throws Exception
+    public void testTemporaryQueue() throws Exception
     {
         Connection conn = createConnection();
         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
@@ -212,9 +217,42 @@
         }
     }
 
-
+    public void testQPID1217() throws Exception
+    {
+        Connection conA = getConnection();
+        conA.setExceptionListener(this);
+        Session sessA = conA.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        TemporaryQueue temp = sessA.createTemporaryQueue();
+        
+        MessageProducer prod = sessA.createProducer(temp);
+        prod.send(sessA.createTextMessage("hi"));
+
+        Thread.sleep(500);
+        assertTrue("Exception received", _exceptions.isEmpty());
+        
+        Connection conB = getConnection();
+        Session sessB = conB.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        
+        JMSException ex = null;
+        try
+        {
+            MessageConsumer consB = sessB.createConsumer(temp);
+        } 
+        catch (JMSException e)
+        {
+            ex = e; 
+        }
+        assertNotNull(ex);
+    }
+    
     public static junit.framework.Test suite()
     {
         return new junit.framework.TestSuite(TemporaryQueueTest.class);
     }
+
+    public void onException(JMSException arg0)
+    {
+        _exceptions.add(arg0);
+    }
+
 }