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