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);
+ }
+
}