package org.objectweb.jtests.jms.conform.session;
import org.objectweb.jtests.jms.framework.*;
import junit.framework.*;
import javax.jms.*;
public class SessionTest extends PTPTestCase {
public void testRecoverTransactedSession() {
try {
assertEquals(false, senderSession.getTransacted());
senderSession = senderConnection.createQueueSession(true, 0);
assertEquals(true, senderSession.getTransacted());
senderSession.recover();
fail("Should raise an IllegalStateException, the session is not transacted.\n");
} catch (javax.jms.IllegalStateException e) {
} catch (java.lang.IllegalStateException e) {
fail ("Should raise a javax.jms.IllegalStateException, not a java.lang.IllegalStateException.\n");
} catch (Exception e) {
fail("Should raise a javax.jms.IllegalStateException, not a "+ e);
}
}
public void testRollbackTransactedSession() {
try {
senderSession = senderConnection.createQueueSession(true, 0);
sender = senderSession.createSender(senderQueue);
assertEquals(true, senderSession.getTransacted());
TextMessage message = senderSession.createTextMessage();
message.setText("testRollbackTransactedSession");
sender.send (message);
senderSession.rollback();
TextMessage m = (TextMessage) receiver.receiveNoWait();
assertEquals(null, m);
} catch (Exception e) {
fail(e);
}
}
public void testCommitTransactedSession() {
try {
senderSession = senderConnection.createQueueSession(true, 0);
sender = senderSession.createSender(senderQueue);
assertEquals(true, senderSession.getTransacted());
TextMessage message = senderSession.createTextMessage();
message.setText("testCommitTransactedSession");
sender.send (message);
TextMessage m = (TextMessage) receiver.receiveNoWait();
assertEquals(null,m);
senderSession.commit();
m = (TextMessage) receiver.receiveNoWait();
assertTrue(m != null);
assertEquals("testCommitTransactedSession", m.getText());
} catch (Exception e) {
fail(e);
}
}
public void testRollbackNonTransactedSession() {
try {
assertEquals(false, senderSession.getTransacted());
senderSession.rollback();
fail("Should raise an IllegalStateException, the session is not transacted.\n");
} catch (javax.jms.IllegalStateException e) {
} catch (java.lang.IllegalStateException e) {
fail ("Should raise a javax.jms.IllegalStateException, not a java.lang.IllegalStateException.\n");
} catch (Exception e) {
fail("Should raise a javax.jms.IllegalStateException, not a "+ e);
}
}
public void testCommitNonTransactedSession() {
try {
assertEquals(false, senderSession.getTransacted());
senderSession.commit();
fail("Should raise an IllegalStateException, the session is not transacted.\n");
} catch (javax.jms.IllegalStateException e) {
} catch (java.lang.IllegalStateException e) {
fail ("Should raise a javax.jms.IllegalStateException, not a java.lang.IllegalStateException.\n");
} catch (Exception e) {
fail("Should raise a javax.jms.IllegalStateException, not a "+ e);
}
}
public void testGetTransacted() {
try {
assertEquals(false, senderSession.getTransacted());
senderSession = senderConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
assertEquals(true, senderSession.getTransacted());
} catch (Exception e) {
fail(e);
}
}
public void testAcknowledge() {
try {
receiverSession = receiverConnection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
receiver = receiverSession.createReceiver(receiverQueue);
Message message = senderSession.createMessage();
sender.send(message);
Message m = receiver.receive();
receiverSession.close();
m.acknowledge();
fail("§4.4.1 Invoking the acknowledge method of a received message from a closed "+
" session must throw an [javax.jms.]IllegalStateException.\n");
} catch (javax.jms.IllegalStateException e) {
} catch (JMSException e) {
fail("Should raise a javax.jms.IllegalStateException, not a "+ e);
} catch (java.lang.IllegalStateException e) {
fail("§4.4.1 Invoking the acknowledge method of a received message from a closed "+
"session must throw an [javax.jms.]IllegalStateException, "+
"[not a java.lang.IllegalStateException]");
}
}
public void testUseMessage() {
try {
TextMessage message = senderSession.createTextMessage();
message.setText("testUseMessage");
sender.send(message);
TextMessage m = (TextMessage)receiver.receive();
receiverSession.close();
assertEquals("testUseMessage", m.getText());
} catch (Exception e) {
fail("§4.4.1 It is valid to continue to use message objects created or received via "+
"the [closed] session.\n");
}
}
public void testUsedClosedSession() {
try {
senderSession.close();
senderSession.createMessage();
fail ("§4.4.1 An attempt to use [a closed session] must throw a [javax.jms.]IllegalStateException.\n");
} 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");
}
}
public void testCloseClosedSession() {
try {
senderSession.close();
senderSession.close();
} catch (Exception e) {
fail("§4.4.1 Closing a closed session must NOT throw an exception.\n");
}
}
public static Test suite() {
return new TestSuite(SessionTest.class);
}
public SessionTest(String name) {
super(name);
}
}