package org.springframework.data.jdbc.jms.text;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.jms.listener.DefaultMessageListenerContainer;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TransactionConfiguration
public class TextPayloadTests {
@Autowired
private JmsTemplate jmsTemplate;
@Autowired
private MessageDelegate delegate;
@Autowired
private DefaultMessageListenerContainer container;
@Transactional @Test @Rollback(false)
public void sendMessage() {
jmsTemplate.send("jmsadmin.jms_text_queue", new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage msg = session.createTextMessage();
msg.setText("Hello Spring, from JmsTemplate!");
return msg;
}
});
}
@Test
public void stopListener() {
// let the container process the message
try {
Thread.sleep(10000L);
} catch (InterruptedException e) {
e.printStackTrace();
fail("interrupted");
}
container.stop();
assertTrue("messages not received", delegate.getCount() > 0);
}
}