diff options
| author | Aidan Skinner <aidan@apache.org> | 2008-08-20 16:29:31 +0000 |
|---|---|---|
| committer | Aidan Skinner <aidan@apache.org> | 2008-08-20 16:29:31 +0000 |
| commit | 45de30b9ac58303ca2a675baa9c06e32bd9be178 (patch) | |
| tree | 85a702da17110a1a4ae44b7dcbe5926f260f1b01 /qpid/java | |
| parent | 2c7aeaccc3fa471f54aad62f0fc4dd455ca0179f (diff) | |
| download | qpid-python-45de30b9ac58303ca2a675baa9c06e32bd9be178.tar.gz | |
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
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@687383 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
5 files changed, 84 insertions, 34 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 5203a27f42..39f2ad5048 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 @@ -1194,7 +1194,29 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic 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 { 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 aa0ff66545..46a667419d 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 @@ -623,28 +623,6 @@ public class AMQSession_0_10 extends AMQSession<BasicMessageConsumer_0_10, Basic } } - - 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 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 2442b157f1..07e7419426 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 @@ -418,13 +418,6 @@ public final class AMQSession_0_8 extends AMQSession<BasicMessageConsumer_0_8, B getProtocolHandler().syncWrite(frame, TxRollbackOkBody.class); } - public TemporaryQueue createTemporaryQueue() throws JMSException - { - checkNotClosed(); - - return new AMQTemporaryQueue(this); - } - public TopicSubscriber createDurableSubscriber(Topic topic, String name) throws JMSException { diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java index a6e8b80c9c..5147d4a94d 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java @@ -23,11 +23,15 @@ package org.apache.qpid.test.unit.client.connection; 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 @@ public class ConnectionTest extends QpidTestCase + "&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 @@ public class ConnectionTest extends QpidTestCase queueSession.close(); TopicSession topicSession = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); - + AMQTopic topic = (AMQTopic) topicSession.createTopic("silly.topic"); assertEquals(topic.getExchangeName().toString(), "test.topic"); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java index 7a65b06dd4..1d48955461 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/temporaryqueue/TemporaryQueueTest.java @@ -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 junit.framework.Assert; 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 @@ public class TemporaryQueueTest extends QpidTestCase 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 class TemporaryQueueTest extends QpidTestCase } } - + 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); + } + } |
