| TopicConnectionTest.java |
/*
* JORAM: Java(TM) Open Reliable Asynchronous Messaging
* Copyright (C) 2002 INRIA
* Contact: joram-team@objectweb.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* Initial developer(s): Jeff Mesnil (jmesnil@inrialpes.fr)
* Contributor(s): Andreas Mueller <am@iit.de>
*/
package org.objectweb.jtests.jms.conform.connection;
import org.objectweb.jtests.jms.framework.*;
import javax.jms.*;
import junit.framework.*;
/**
* Test topic-specific connection features.
*
* Test setting of client ID which is relevant only for Durable Subscribtion
*/
public class TopicConnectionTest extends PubSubTestCase {
/**
* Test that a call to <code>setClientID</code> will throw an
* <code>IllegalStateException</code> if a client ID has already been set
* see JMS javadoc
* http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/Connection.html#setClientID(java.lang.String)
*/
public void testSetClientID_1() {
try {
// we start from a clean state for the connection
subscriberConnection.close();
subscriberConnection = null;
subscriberConnection = subscriberTCF.createTopicConnection();
// if the JMS provider does not set a client ID, we do.
if (subscriberConnection.getClientID() == null) {
subscriberConnection.setClientID("testSetClientID_1");
assertEquals("testSetClientID_1", subscriberConnection.getClientID());
}
// now the connection has a client ID (either "testSetClientID_1" or one set by the provider
assertTrue(subscriberConnection.getClientID() != null);
// a attempt to set a client ID should now throw an IllegalStateException
subscriberConnection.setClientID("another client ID");
fail("Should raise a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
fail("Should raise a javax.jms.IllegalStateException, not a "+ e);
} catch (java.lang.IllegalStateException e) {
fail("Should raise a javax.jms.IllegalStateException, not a java.lang.IllegalStateException");
}
}
/**
* Test that a call to <code>setClientID</code> can occur only after connection creation
* and before any other action on the connection.
* <em>This test is relevant only if the ID is set by the JMS client</em>
* see JMS javadoc
* http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/Connection.html#setClientID(java.lang.String)
*/
public void testSetClientID_2() {
try {
// we start from a clean state for the first connection
subscriberConnection.close();
subscriberConnection = null;
subscriberConnection = subscriberTCF.createTopicConnection();
// if the JMS provider has set a client ID, this test is not relevant
if (subscriberConnection.getClientID() != null) {
return;
}
//we start the connection
subscriberConnection.start();
// an attempt to set the client ID now should throw a IllegalStateException
subscriberConnection.setClientID("testSetClientID_2");
fail("Should throw a javax.jms.IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
fail("Should raise a javax.jms.IllegalStateException, not a "+ e);
} catch (java.lang.IllegalStateException e) {
fail("Should raise a javax.jms.IllegalStateException, not a java.lang.IllegalStateException");
}
}
/**
* Method to use this class in a Test suite
*/
public static Test suite() {
return new TestSuite(TopicConnectionTest.class);
}
public TopicConnectionTest(String name) {
super(name);
}
}
| TopicConnectionTest.java |