1 package org.jencks.samples.outbound;
2
3 import javax.jms.ConnectionFactory;
4 import javax.jms.Queue;
5
6 import org.springframework.jms.core.JmsTemplate;
7 import org.springframework.transaction.PlatformTransactionManager;
8 import org.springframework.transaction.TransactionDefinition;
9 import org.springframework.transaction.TransactionStatus;
10 import org.springframework.transaction.support.DefaultTransactionDefinition;
11
12 public abstract class AbstractJmsOutboundMessagingTest extends AbstractDependencyInjectionSpringContextTests {
13
14 public final static String TEST_MESSAGE="test message";
15
16 private ConnectionFactory connectionFactory;
17 private Queue queue;
18 private PlatformTransactionManager transactionManager;
19
20 public PlatformTransactionManager getTransactionManager() {
21 return transactionManager;
22 }
23
24 public void setTransactionManager(PlatformTransactionManager transactionManager) {
25 this.transactionManager = transactionManager;
26 }
27
28 public Queue getQueue() {
29 return queue;
30 }
31
32 public void setQueue(Queue queue) {
33 this.queue = queue;
34 }
35
36 public ConnectionFactory getConnectionFactory() {
37 return connectionFactory;
38 }
39
40 public void setConnectionFactory(ConnectionFactory connectionFactory) {
41 this.connectionFactory = connectionFactory;
42 }
43
44 public void testOutboundWithCommit() throws Exception {
45
46 DefaultTransactionDefinition definition=new DefaultTransactionDefinition();
47 definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
48 TransactionStatus status=null;
49 try {
50 status=transactionManager.getTransaction(definition);
51 JmsTemplate template=new JmsTemplate(getConnectionFactory());
52 template.convertAndSend(queue,TEST_MESSAGE);
53 transactionManager.commit(status);
54 } catch(Exception ex) {
55 ex.printStackTrace();
56 transactionManager.rollback(status);
57 fail("Undesired exception.");
58 }
59
60
61 checkIfMessageExist(TEST_MESSAGE);
62 }
63
64 protected void checkIfMessageExist(String sentMessage) {
65 JmsTemplate template=new JmsTemplate(getConnectionFactory());
66 template.setReceiveTimeout(10);
67 String receivedMessage=(String)template.receiveAndConvert(queue);
68 assertEquals(sentMessage,receivedMessage);
69 }
70
71 public void testOutboundWithRollback() throws Exception {
72
73 DefaultTransactionDefinition definition=new DefaultTransactionDefinition();
74 definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
75 TransactionStatus status=null;
76 try {
77 status=transactionManager.getTransaction(definition);
78 JmsTemplate template=new JmsTemplate(getConnectionFactory());
79 template.convertAndSend(queue,TEST_MESSAGE);
80 transactionManager.rollback(status);
81 } catch(Exception ex) {
82 ex.printStackTrace();
83 transactionManager.rollback(status);
84 fail("Undesired exception.");
85 }
86
87
88 checkIfMessageNotExist();
89 }
90
91 protected void checkIfMessageNotExist() {
92 JmsTemplate template=new JmsTemplate(getConnectionFactory());
93 template.setReceiveTimeout(10);
94 String receivedMessage=null;
95 receivedMessage=(String)template.receiveAndConvert(queue);
96 assertNull(receivedMessage);
97 }
98 }