/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.objectweb.jtests.jms.conform.session;
import javax.jms.JMSException;
import javax.jms.QueueConnection;
import javax.jms.QueueSession;
import javax.jms.ServerSessionPool;
import javax.jms.Session;
import javax.jms.TopicConnection;
import javax.jms.TopicSession;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.objectweb.jtests.jms.framework.UnifiedTestCase;
/**
* Test unified JMS 1.1 sessions.
* <br />
* See JMS 1.1 specifications
*
* @since JMS 1.1
*/
public class UnifiedSessionTest extends UnifiedTestCase {
/**
* QueueConnection
*/
protected QueueConnection queueConnection;
/**
* QueueSession (non transacted, AUTO_ACKNOWLEDGE)
*/
protected QueueSession queueSession;
/**
* TopicConnection
*/
protected TopicConnection topicConnection;
/**
* TopicSession (non transacted, AUTO_ACKNOWLEDGE)
*/
protected TopicSession topicSession;
/**
* Test that a call to <code>createDurableConnectionConsumer()</code> method
* on a <code>QueueConnection</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateDurableConnectionConsumerOnQueueConnection() {
try {
queueConnection.createDurableConnectionConsumer(topic, "subscriptionName", "", (ServerSessionPool) null, 1);
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>createDurableSubscriber()</code> method
* on a <code>QueueSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateDurableSubscriberOnQueueSession() {
try {
queueSession.createDurableSubscriber(topic, "subscriptionName");
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>createTemporaryTopic()</code> method
* on a <code>QueueSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateTemporaryTopicOnQueueSession() {
try {
queueSession.createTemporaryTopic();
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>createTopic()</code> method
* on a <code>QueueSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateTopicOnQueueSession() {
try {
queueSession.createTopic("topic_name");
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>unsubscribe()</code> method
* on a <code>QueueSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testUnsubscribeOnQueueSession() {
try {
queueSession.unsubscribe("subscriptionName");
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>createBrowser()</code> method
* on a <code>TopicSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateBrowserOnTopicSession() {
try {
topicSession.createBrowser(queue);
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>createQueue()</code> method
* on a <code>TopicSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateQueueOnTopicSession() {
try {
topicSession.createQueue("queue_name");
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
/**
* Test that a call to <code>createTemporaryQueue()</code> method
* on a <code>TopicSession</code> throws a
* <code>javax.jms.IllegalStateException</code>.
* (see JMS 1.1 specs, table 4-1).
*
* @since JMS 1.1
*/
@Test
public void testCreateTemporaryQueueOnTopicSession() {
try {
topicSession.createTemporaryQueue();
Assert.fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
Assert.fail("Should throw a javax.jms.IllegalStateException, not a " + e);
}
}
@Override
@Before
public void setUp() throws Exception {
super.setUp();
try {
queueConnection = queueConnectionFactory.createQueueConnection();
queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
topicConnection = topicConnectionFactory.createTopicConnection();
topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
queueConnection.start();
topicConnection.start();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
@After
public void tearDown() throws Exception {
try {
queueConnection.close();
topicConnection.close();
} catch (Exception ignored) {
} finally {
queueConnection = null;
queueSession = null;
topicConnection = null;
topicSession = null;
super.tearDown();
}
}
}