Replace EasyMock with Mockito in spring-jms
Issue: SPR-10126
This commit is contained in:
parent
c4f79bb997
commit
2642cf2e05
|
|
@ -69,7 +69,7 @@ configure(allprojects) { project ->
|
||||||
testCompile("junit:junit:${junitVersion}")
|
testCompile("junit:junit:${junitVersion}")
|
||||||
testCompile("org.hamcrest:hamcrest-all:1.3")
|
testCompile("org.hamcrest:hamcrest-all:1.3")
|
||||||
testCompile("org.mockito:mockito-core:1.9.5")
|
testCompile("org.mockito:mockito-core:1.9.5")
|
||||||
if (project.name in ["spring", "spring-jms",
|
if (project.name in ["spring",
|
||||||
"spring-orm-hibernate4", "spring-oxm", "spring-struts",
|
"spring-orm-hibernate4", "spring-oxm", "spring-struts",
|
||||||
"spring-test", "spring-test-mvc", "spring-tx", "spring-web",
|
"spring-test", "spring-test-mvc", "spring-tx", "spring-web",
|
||||||
"spring-webmvc", "spring-webmvc-portlet", "spring-webmvc-tiles3"]) {
|
"spring-webmvc", "spring-webmvc-portlet", "spring-webmvc-tiles3"]) {
|
||||||
|
|
|
||||||
|
|
@ -16,20 +16,28 @@
|
||||||
|
|
||||||
package org.springframework.jms.config;
|
package org.springframework.jms.config;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.jms.ConnectionFactory;
|
import javax.jms.ConnectionFactory;
|
||||||
import javax.jms.Message;
|
import javax.jms.Message;
|
||||||
import javax.jms.MessageListener;
|
import javax.jms.MessageListener;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.junit.After;
|
||||||
import org.easymock.MockControl;
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
import org.springframework.beans.DirectFieldAccessor;
|
import org.springframework.beans.DirectFieldAccessor;
|
||||||
import org.springframework.tests.sample.beans.TestBean;
|
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.beans.factory.parsing.ComponentDefinition;
|
import org.springframework.beans.factory.parsing.ComponentDefinition;
|
||||||
import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
|
import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
|
||||||
|
|
@ -42,6 +50,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||||
import org.springframework.jca.endpoint.GenericMessageEndpointManager;
|
import org.springframework.jca.endpoint.GenericMessageEndpointManager;
|
||||||
import org.springframework.jms.listener.DefaultMessageListenerContainer;
|
import org.springframework.jms.listener.DefaultMessageListenerContainer;
|
||||||
import org.springframework.jms.listener.endpoint.JmsMessageEndpointManager;
|
import org.springframework.jms.listener.endpoint.JmsMessageEndpointManager;
|
||||||
|
import org.springframework.tests.sample.beans.TestBean;
|
||||||
import org.springframework.util.ErrorHandler;
|
import org.springframework.util.ErrorHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -49,7 +58,7 @@ import org.springframework.util.ErrorHandler;
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
* @author Christian Dupuis
|
* @author Christian Dupuis
|
||||||
*/
|
*/
|
||||||
public class JmsNamespaceHandlerTests extends TestCase {
|
public class JmsNamespaceHandlerTests {
|
||||||
|
|
||||||
private static final String DEFAULT_CONNECTION_FACTORY = "connectionFactory";
|
private static final String DEFAULT_CONNECTION_FACTORY = "connectionFactory";
|
||||||
|
|
||||||
|
|
@ -58,17 +67,18 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
private ToolingTestApplicationContext context;
|
private ToolingTestApplicationContext context;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
this.context = new ToolingTestApplicationContext("jmsNamespaceHandlerTests.xml", getClass());
|
this.context = new ToolingTestApplicationContext("jmsNamespaceHandlerTests.xml", getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@After
|
||||||
protected void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
this.context.close();
|
this.context.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testBeansCreated() {
|
public void testBeansCreated() {
|
||||||
Map containers = context.getBeansOfType(DefaultMessageListenerContainer.class);
|
Map containers = context.getBeansOfType(DefaultMessageListenerContainer.class);
|
||||||
assertEquals("Context should contain 3 JMS listener containers", 3, containers.size());
|
assertEquals("Context should contain 3 JMS listener containers", 3, containers.size());
|
||||||
|
|
@ -77,6 +87,7 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
assertEquals("Context should contain 3 JCA endpoint containers", 3, containers.size());
|
assertEquals("Context should contain 3 JCA endpoint containers", 3, containers.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testContainerConfiguration() throws Exception {
|
public void testContainerConfiguration() throws Exception {
|
||||||
Map<String, DefaultMessageListenerContainer> containers = context.getBeansOfType(DefaultMessageListenerContainer.class);
|
Map<String, DefaultMessageListenerContainer> containers = context.getBeansOfType(DefaultMessageListenerContainer.class);
|
||||||
ConnectionFactory defaultConnectionFactory = context.getBean(DEFAULT_CONNECTION_FACTORY, ConnectionFactory.class);
|
ConnectionFactory defaultConnectionFactory = context.getBean(DEFAULT_CONNECTION_FACTORY, ConnectionFactory.class);
|
||||||
|
|
@ -102,6 +113,7 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
assertEquals("2 containers should have the explicit connectionFactory", 2, explicitConnectionFactoryCount);
|
assertEquals("2 containers should have the explicit connectionFactory", 2, explicitConnectionFactoryCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testListeners() throws Exception {
|
public void testListeners() throws Exception {
|
||||||
TestBean testBean1 = context.getBean("testBean1", TestBean.class);
|
TestBean testBean1 = context.getBean("testBean1", TestBean.class);
|
||||||
TestBean testBean2 = context.getBean("testBean2", TestBean.class);
|
TestBean testBean2 = context.getBean("testBean2", TestBean.class);
|
||||||
|
|
@ -111,36 +123,28 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
assertNull(testBean2.getName());
|
assertNull(testBean2.getName());
|
||||||
assertNull(testBean3.message);
|
assertNull(testBean3.message);
|
||||||
|
|
||||||
MockControl control1 = MockControl.createControl(TextMessage.class);
|
TextMessage message1 = mock(TextMessage.class);
|
||||||
TextMessage message1 = (TextMessage) control1.getMock();
|
given(message1.getText()).willReturn("Test1");
|
||||||
control1.expectAndReturn(message1.getText(), "Test1");
|
|
||||||
control1.replay();
|
|
||||||
|
|
||||||
MessageListener listener1 = getListener("listener1");
|
MessageListener listener1 = getListener("listener1");
|
||||||
listener1.onMessage(message1);
|
listener1.onMessage(message1);
|
||||||
assertEquals("Test1", testBean1.getName());
|
assertEquals("Test1", testBean1.getName());
|
||||||
control1.verify();
|
|
||||||
|
|
||||||
MockControl control2 = MockControl.createControl(TextMessage.class);
|
TextMessage message2 = mock(TextMessage.class);
|
||||||
TextMessage message2 = (TextMessage) control2.getMock();
|
given(message2.getText()).willReturn("Test2");
|
||||||
control2.expectAndReturn(message2.getText(), "Test2");
|
|
||||||
control2.replay();
|
|
||||||
|
|
||||||
MessageListener listener2 = getListener("listener2");
|
MessageListener listener2 = getListener("listener2");
|
||||||
listener2.onMessage(message2);
|
listener2.onMessage(message2);
|
||||||
assertEquals("Test2", testBean2.getName());
|
assertEquals("Test2", testBean2.getName());
|
||||||
control2.verify();
|
|
||||||
|
|
||||||
MockControl control3 = MockControl.createControl(TextMessage.class);
|
TextMessage message3 = mock(TextMessage.class);
|
||||||
TextMessage message3 = (TextMessage) control3.getMock();
|
|
||||||
control3.replay();
|
|
||||||
|
|
||||||
MessageListener listener3 = getListener(DefaultMessageListenerContainer.class.getName() + "#0");
|
MessageListener listener3 = getListener(DefaultMessageListenerContainer.class.getName() + "#0");
|
||||||
listener3.onMessage(message3);
|
listener3.onMessage(message3);
|
||||||
assertSame(message3, testBean3.message);
|
assertSame(message3, testBean3.message);
|
||||||
control3.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testErrorHandlers() {
|
public void testErrorHandlers() {
|
||||||
ErrorHandler expected = this.context.getBean("testErrorHandler", ErrorHandler.class);
|
ErrorHandler expected = this.context.getBean("testErrorHandler", ErrorHandler.class);
|
||||||
ErrorHandler errorHandler1 = getErrorHandler("listener1");
|
ErrorHandler errorHandler1 = getErrorHandler("listener1");
|
||||||
|
|
@ -151,6 +155,7 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
assertNull(defaultErrorHandler);
|
assertNull(defaultErrorHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testPhases() {
|
public void testPhases() {
|
||||||
int phase1 = getPhase("listener1");
|
int phase1 = getPhase("listener1");
|
||||||
int phase2 = getPhase("listener2");
|
int phase2 = getPhase("listener2");
|
||||||
|
|
@ -182,6 +187,7 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
return ((Phased) container).getPhase();
|
return ((Phased) container).getPhase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testComponentRegistration() {
|
public void testComponentRegistration() {
|
||||||
assertTrue("Parser should have registered a component named 'listener1'", context.containsComponentDefinition("listener1"));
|
assertTrue("Parser should have registered a component named 'listener1'", context.containsComponentDefinition("listener1"));
|
||||||
assertTrue("Parser should have registered a component named 'listener2'", context.containsComponentDefinition("listener2"));
|
assertTrue("Parser should have registered a component named 'listener2'", context.containsComponentDefinition("listener2"));
|
||||||
|
|
@ -192,6 +198,7 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||||
context.containsComponentDefinition(JmsMessageEndpointManager.class.getName() + "#0"));
|
context.containsComponentDefinition(JmsMessageEndpointManager.class.getName() + "#0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSourceExtraction() {
|
public void testSourceExtraction() {
|
||||||
Iterator iterator = context.getRegisteredComponents();
|
Iterator iterator = context.getRegisteredComponents();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,6 +16,14 @@
|
||||||
|
|
||||||
package org.springframework.jms.connection;
|
package org.springframework.jms.connection;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import javax.jms.Connection;
|
import javax.jms.Connection;
|
||||||
import javax.jms.ConnectionFactory;
|
import javax.jms.ConnectionFactory;
|
||||||
import javax.jms.Destination;
|
import javax.jms.Destination;
|
||||||
|
|
@ -30,9 +38,8 @@ import javax.jms.TopicConnection;
|
||||||
import javax.jms.TopicConnectionFactory;
|
import javax.jms.TopicConnectionFactory;
|
||||||
import javax.jms.TopicSession;
|
import javax.jms.TopicSession;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.junit.After;
|
||||||
import org.easymock.MockControl;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.jms.StubQueue;
|
import org.springframework.jms.StubQueue;
|
||||||
import org.springframework.jms.core.JmsTemplate;
|
import org.springframework.jms.core.JmsTemplate;
|
||||||
import org.springframework.jms.core.JmsTemplate102;
|
import org.springframework.jms.core.JmsTemplate102;
|
||||||
|
|
@ -50,30 +57,23 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
* @since 26.07.2004
|
* @since 26.07.2004
|
||||||
*/
|
*/
|
||||||
public class JmsTransactionManagerTests extends TestCase {
|
public class JmsTransactionManagerTests {
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void verifyTransactionSynchronizationManager() {
|
||||||
|
assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
|
||||||
|
assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTransactionCommit() throws JMSException {
|
public void testTransactionCommit() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
final Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -87,33 +87,19 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTransactionRollback() throws JMSException {
|
public void testTransactionRollback() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
final Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
session.rollback();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -127,33 +113,19 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.rollback(ts);
|
tm.rollback(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).rollback();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testParticipatingTransactionWithCommit() throws JMSException {
|
public void testParticipatingTransactionWithCommit() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
final ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
final Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -180,33 +152,19 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testParticipatingTransactionWithRollbackOnly() throws JMSException {
|
public void testParticipatingTransactionWithRollbackOnly() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
final ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
final Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
session.rollback();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -240,39 +198,21 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).rollback();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSuspendedTransaction() throws JMSException {
|
public void testSuspendedTransaction() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
final ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
final ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
final Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
final Session session2 = mock(Session.class);
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
MockControl session2Control = MockControl.createControl(Session.class);
|
|
||||||
final Session session2 = (Session) session2Control.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 2);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
given(con.createSession(false, Session.AUTO_ACKNOWLEDGE)).willReturn(session2);
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
con.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session2, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session2.close();
|
|
||||||
session2Control.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(2);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -307,41 +247,21 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(session2).close();
|
||||||
|
verify(con, times(2)).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTransactionSuspension() throws JMSException {
|
public void testTransactionSuspension() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
final ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
final ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
final Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
final Session session2 = mock(Session.class);
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
MockControl session2Control = MockControl.createControl(Session.class);
|
|
||||||
final Session session2 = (Session) session2Control.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 2);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session, session2);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session2, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session2.commit();
|
|
||||||
session2Control.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session2.close();
|
|
||||||
session2Control.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(2);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -376,48 +296,27 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(session2).commit();
|
||||||
cfControl.verify();
|
verify(session).close();
|
||||||
|
verify(session2).close();
|
||||||
|
verify(con, times(2)).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTransactionCommitWithMessageProducer() throws JMSException {
|
public void testTransactionCommitWithMessageProducer() throws JMSException {
|
||||||
Destination dest = new StubQueue();
|
Destination dest = new StubQueue();
|
||||||
|
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
Session session = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
MessageProducer producer = mock(MessageProducer.class);
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
final Message message = mock(Message.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
|
||||||
MockControl producerControl = MockControl.createControl(MessageProducer.class);
|
|
||||||
MessageProducer producer = (MessageProducer) producerControl.getMock();
|
|
||||||
MockControl messageControl = MockControl.createControl(Message.class);
|
|
||||||
final Message message = (Message) messageControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
given(session.createProducer(dest)).willReturn(producer);
|
||||||
conControl.setReturnValue(session, 1);
|
given(session.getTransacted()).willReturn(true);
|
||||||
session.createProducer(dest);
|
|
||||||
sessionControl.setReturnValue(producer, 1);
|
|
||||||
producer.send(message);
|
|
||||||
producerControl.setVoidCallable(1);
|
|
||||||
session.getTransacted();
|
|
||||||
sessionControl.setReturnValue(true, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
producer.close();
|
|
||||||
producerControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
producerControl.replay();
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
JmsTransactionManager tm = new JmsTransactionManager(cf);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -430,34 +329,22 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
producerControl.verify();
|
verify(producer).send(message);
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(producer).close();
|
||||||
cfControl.verify();
|
verify(session).close();
|
||||||
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Deprecated
|
||||||
public void testTransactionCommit102WithQueue() throws JMSException {
|
public void testTransactionCommit102WithQueue() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class);
|
QueueConnectionFactory cf = mock(QueueConnectionFactory.class);
|
||||||
QueueConnectionFactory cf = (QueueConnectionFactory) cfControl.getMock();
|
QueueConnection con = mock(QueueConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(QueueConnection.class);
|
final QueueSession session = mock(QueueSession.class);
|
||||||
QueueConnection con = (QueueConnection) conControl.getMock();
|
|
||||||
MockControl sessionControl = MockControl.createControl(QueueSession.class);
|
|
||||||
final QueueSession session = (QueueSession) sessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createQueueConnection();
|
given(cf.createQueueConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager102(cf, false);
|
JmsTransactionManager tm = new JmsTransactionManager102(cf, false);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -471,33 +358,20 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Deprecated
|
||||||
public void testTransactionCommit102WithTopic() throws JMSException {
|
public void testTransactionCommit102WithTopic() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(TopicConnectionFactory.class);
|
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
|
||||||
TopicConnectionFactory cf = (TopicConnectionFactory) cfControl.getMock();
|
TopicConnection con = mock(TopicConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(TopicConnection.class);
|
final TopicSession session = mock(TopicSession.class);
|
||||||
TopicConnection con = (TopicConnection) conControl.getMock();
|
|
||||||
MockControl sessionControl = MockControl.createControl(TopicSession.class);
|
|
||||||
final TopicSession session = (TopicSession) sessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createTopicConnection();
|
given(cf.createTopicConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createTopicSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
con.createTopicSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(session, 1);
|
|
||||||
session.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
session.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
JmsTransactionManager tm = new JmsTransactionManager102(cf, true);
|
JmsTransactionManager tm = new JmsTransactionManager102(cf, true);
|
||||||
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
|
||||||
|
|
@ -511,15 +385,8 @@ public class JmsTransactionManagerTests extends TestCase {
|
||||||
});
|
});
|
||||||
tm.commit(ts);
|
tm.commit(ts);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
conControl.verify();
|
verify(session).close();
|
||||||
cfControl.verify();
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void tearDown() {
|
|
||||||
assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
|
|
||||||
assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2011 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,6 +16,14 @@
|
||||||
|
|
||||||
package org.springframework.jms.connection;
|
package org.springframework.jms.connection;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
|
|
||||||
import javax.jms.Connection;
|
import javax.jms.Connection;
|
||||||
import javax.jms.ConnectionFactory;
|
import javax.jms.ConnectionFactory;
|
||||||
import javax.jms.ExceptionListener;
|
import javax.jms.ExceptionListener;
|
||||||
|
|
@ -28,27 +36,17 @@ import javax.jms.TopicConnection;
|
||||||
import javax.jms.TopicConnectionFactory;
|
import javax.jms.TopicConnectionFactory;
|
||||||
import javax.jms.TopicSession;
|
import javax.jms.TopicSession;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.junit.Test;
|
||||||
import org.easymock.MockControl;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
* @since 26.07.2004
|
* @since 26.07.2004
|
||||||
*/
|
*/
|
||||||
public class SingleConnectionFactoryTests extends TestCase {
|
public class SingleConnectionFactoryTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithConnection() throws JMSException {
|
public void testWithConnection() throws JMSException {
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
Connection con = mock(Connection.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(con);
|
SingleConnectionFactory scf = new SingleConnectionFactory(con);
|
||||||
Connection con1 = scf.createConnection();
|
Connection con1 = scf.createConnection();
|
||||||
|
|
@ -61,21 +59,15 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
conControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithQueueConnection() throws JMSException {
|
public void testWithQueueConnection() throws JMSException {
|
||||||
MockControl conControl = MockControl.createControl(QueueConnection.class);
|
Connection con = mock(QueueConnection.class);
|
||||||
Connection con = (QueueConnection) conControl.getMock();
|
|
||||||
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(con);
|
SingleConnectionFactory scf = new SingleConnectionFactory(con);
|
||||||
QueueConnection con1 = scf.createQueueConnection();
|
QueueConnection con1 = scf.createQueueConnection();
|
||||||
|
|
@ -88,21 +80,15 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
conControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithTopicConnection() throws JMSException {
|
public void testWithTopicConnection() throws JMSException {
|
||||||
MockControl conControl = MockControl.createControl(TopicConnection.class);
|
Connection con = mock(TopicConnection.class);
|
||||||
Connection con = (TopicConnection) conControl.getMock();
|
|
||||||
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(con);
|
SingleConnectionFactory scf = new SingleConnectionFactory(con);
|
||||||
TopicConnection con1 = scf.createTopicConnection();
|
TopicConnection con1 = scf.createTopicConnection();
|
||||||
|
|
@ -115,26 +101,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
conControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithConnectionFactory() throws JMSException {
|
public void testWithConnectionFactory() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
Connection con1 = scf.createConnection();
|
Connection con1 = scf.createConnection();
|
||||||
|
|
@ -145,27 +123,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithQueueConnectionFactoryAndJms11Usage() throws JMSException {
|
public void testWithQueueConnectionFactoryAndJms11Usage() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class);
|
QueueConnectionFactory cf = mock(QueueConnectionFactory.class);
|
||||||
QueueConnectionFactory cf = (QueueConnectionFactory) cfControl.getMock();
|
QueueConnection con = mock(QueueConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(QueueConnection.class);
|
|
||||||
QueueConnection con = (QueueConnection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
Connection con1 = scf.createConnection();
|
Connection con1 = scf.createConnection();
|
||||||
|
|
@ -176,27 +145,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithQueueConnectionFactoryAndJms102Usage() throws JMSException {
|
public void testWithQueueConnectionFactoryAndJms102Usage() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class);
|
QueueConnectionFactory cf = mock(QueueConnectionFactory.class);
|
||||||
QueueConnectionFactory cf = (QueueConnectionFactory) cfControl.getMock();
|
QueueConnection con = mock(QueueConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(QueueConnection.class);
|
|
||||||
QueueConnection con = (QueueConnection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createQueueConnection();
|
given(cf.createQueueConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
Connection con1 = scf.createQueueConnection();
|
Connection con1 = scf.createQueueConnection();
|
||||||
|
|
@ -207,27 +167,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithTopicConnectionFactoryAndJms11Usage() throws JMSException {
|
public void testWithTopicConnectionFactoryAndJms11Usage() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(TopicConnectionFactory.class);
|
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
|
||||||
TopicConnectionFactory cf = (TopicConnectionFactory) cfControl.getMock();
|
TopicConnection con = mock(TopicConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(TopicConnection.class);
|
|
||||||
TopicConnection con = (TopicConnection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
Connection con1 = scf.createConnection();
|
Connection con1 = scf.createConnection();
|
||||||
|
|
@ -238,27 +189,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithTopicConnectionFactoryAndJms102Usage() throws JMSException {
|
public void testWithTopicConnectionFactoryAndJms102Usage() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(TopicConnectionFactory.class);
|
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
|
||||||
TopicConnectionFactory cf = (TopicConnectionFactory) cfControl.getMock();
|
TopicConnection con = mock(TopicConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(TopicConnection.class);
|
|
||||||
TopicConnection con = (TopicConnection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createTopicConnection();
|
given(cf.createTopicConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
Connection con1 = scf.createTopicConnection();
|
Connection con1 = scf.createTopicConnection();
|
||||||
|
|
@ -269,29 +211,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithConnectionFactoryAndClientId() throws JMSException {
|
public void testWithConnectionFactoryAndClientId() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.setClientID("myId");
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
scf.setClientId("myId");
|
scf.setClientId("myId");
|
||||||
|
|
@ -303,32 +234,21 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).setClientID("myId");
|
||||||
conControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithConnectionFactoryAndExceptionListener() throws JMSException {
|
public void testWithConnectionFactoryAndExceptionListener() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
|
||||||
Connection con = (Connection) conControl.getMock();
|
|
||||||
|
|
||||||
ExceptionListener listener = new ChainedExceptionListener();
|
ExceptionListener listener = new ChainedExceptionListener();
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.getExceptionListener()).willReturn(listener);
|
||||||
con.setExceptionListener(listener);
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.getExceptionListener();
|
|
||||||
conControl.setReturnValue(listener, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
scf.setExceptionListener(listener);
|
scf.setExceptionListener(listener);
|
||||||
|
|
@ -343,18 +263,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).setExceptionListener(listener);
|
||||||
conControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithConnectionFactoryAndReconnectOnException() throws JMSException {
|
public void testWithConnectionFactoryAndReconnectOnException() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
|
||||||
TestConnection con = new TestConnection();
|
TestConnection con = new TestConnection();
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 2);
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
scf.setReconnectOnException(true);
|
scf.setReconnectOnException(true);
|
||||||
|
|
@ -366,21 +286,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.start();
|
con2.start();
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
|
||||||
assertEquals(2, con.getStartCount());
|
assertEquals(2, con.getStartCount());
|
||||||
assertEquals(2, con.getCloseCount());
|
assertEquals(2, con.getCloseCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithConnectionFactoryAndExceptionListenerAndReconnectOnException() throws JMSException {
|
public void testWithConnectionFactoryAndExceptionListenerAndReconnectOnException() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
|
||||||
TestConnection con = new TestConnection();
|
TestConnection con = new TestConnection();
|
||||||
|
|
||||||
TestExceptionListener listener = new TestExceptionListener();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cf.createConnection();
|
|
||||||
cfControl.setReturnValue(con, 2);
|
|
||||||
cfControl.replay();
|
|
||||||
|
|
||||||
|
TestExceptionListener listener = new TestExceptionListener();
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
|
||||||
scf.setExceptionListener(listener);
|
scf.setExceptionListener(listener);
|
||||||
scf.setReconnectOnException(true);
|
scf.setReconnectOnException(true);
|
||||||
|
|
@ -392,29 +309,17 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.start();
|
con2.start();
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
|
||||||
assertEquals(2, con.getStartCount());
|
assertEquals(2, con.getStartCount());
|
||||||
assertEquals(2, con.getCloseCount());
|
assertEquals(2, con.getCloseCount());
|
||||||
assertEquals(1, listener.getCount());
|
assertEquals(1, listener.getCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConnectionFactory102WithQueue() throws JMSException {
|
public void testConnectionFactory102WithQueue() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class);
|
QueueConnectionFactory cf = mock(QueueConnectionFactory.class);
|
||||||
QueueConnectionFactory cf = (QueueConnectionFactory) cfControl.getMock();
|
QueueConnection con = mock(QueueConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(QueueConnection.class);
|
|
||||||
QueueConnection con = (QueueConnection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createQueueConnection();
|
given(cf.createQueueConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory102(cf, false);
|
SingleConnectionFactory scf = new SingleConnectionFactory102(cf, false);
|
||||||
QueueConnection con1 = scf.createQueueConnection();
|
QueueConnection con1 = scf.createQueueConnection();
|
||||||
|
|
@ -425,27 +330,18 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConnectionFactory102WithTopic() throws JMSException {
|
public void testConnectionFactory102WithTopic() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(TopicConnectionFactory.class);
|
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
|
||||||
TopicConnectionFactory cf = (TopicConnectionFactory) cfControl.getMock();
|
TopicConnection con = mock(TopicConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(TopicConnection.class);
|
|
||||||
TopicConnection con = (TopicConnection) conControl.getMock();
|
|
||||||
|
|
||||||
cf.createTopicConnection();
|
given(cf.createTopicConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
|
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory102(cf, true);
|
SingleConnectionFactory scf = new SingleConnectionFactory102(cf, true);
|
||||||
TopicConnection con1 = scf.createTopicConnection();
|
TopicConnection con1 = scf.createTopicConnection();
|
||||||
|
|
@ -456,45 +352,23 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(con).start();
|
||||||
conControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
|
verifyNoMoreInteractions(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testCachingConnectionFactory() throws JMSException {
|
public void testCachingConnectionFactory() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory cf = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
|
Connection con = mock(Connection.class);
|
||||||
MockControl conControl = MockControl.createControl(Connection.class);
|
Session txSession = mock(Session.class);
|
||||||
Connection con = (Connection) conControl.getMock();
|
Session nonTxSession = mock(Session.class);
|
||||||
MockControl txSessionControl = MockControl.createControl(Session.class);
|
|
||||||
Session txSession = (Session) txSessionControl.getMock();
|
|
||||||
MockControl nonTxSessionControl = MockControl.createControl(Session.class);
|
|
||||||
Session nonTxSession = (Session) nonTxSessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createConnection();
|
given(cf.createConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(txSession);
|
||||||
con.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
given(txSession.getTransacted()).willReturn(true);
|
||||||
conControl.setReturnValue(txSession, 1);
|
given(con.createSession(false, Session.CLIENT_ACKNOWLEDGE)).willReturn(nonTxSession);
|
||||||
txSession.getTransacted();
|
|
||||||
txSessionControl.setReturnValue(true, 1);
|
|
||||||
txSession.commit();
|
|
||||||
txSessionControl.setVoidCallable(1);
|
|
||||||
txSession.close();
|
|
||||||
txSessionControl.setVoidCallable(1);
|
|
||||||
con.createSession(false, Session.CLIENT_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(nonTxSession, 1);
|
|
||||||
nonTxSession.close();
|
|
||||||
nonTxSessionControl.setVoidCallable(1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
txSessionControl.replay();
|
|
||||||
nonTxSessionControl.replay();
|
|
||||||
|
|
||||||
CachingConnectionFactory scf = new CachingConnectionFactory(cf);
|
CachingConnectionFactory scf = new CachingConnectionFactory(cf);
|
||||||
scf.setReconnectOnException(false);
|
scf.setReconnectOnException(false);
|
||||||
|
|
@ -516,47 +390,25 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(txSession).commit();
|
||||||
conControl.verify();
|
verify(txSession).close();
|
||||||
txSessionControl.verify();
|
verify(nonTxSession).close();
|
||||||
nonTxSessionControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testCachingConnectionFactoryWithQueueConnectionFactoryAndJms102Usage() throws JMSException {
|
public void testCachingConnectionFactoryWithQueueConnectionFactoryAndJms102Usage() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class);
|
QueueConnectionFactory cf = mock(QueueConnectionFactory.class);
|
||||||
QueueConnectionFactory cf = (QueueConnectionFactory) cfControl.getMock();
|
QueueConnection con = mock(QueueConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(QueueConnection.class);
|
QueueSession txSession = mock(QueueSession.class);
|
||||||
QueueConnection con = (QueueConnection) conControl.getMock();
|
QueueSession nonTxSession = mock(QueueSession.class);
|
||||||
MockControl txSessionControl = MockControl.createControl(QueueSession.class);
|
|
||||||
QueueSession txSession = (QueueSession) txSessionControl.getMock();
|
|
||||||
MockControl nonTxSessionControl = MockControl.createControl(QueueSession.class);
|
|
||||||
QueueSession nonTxSession = (QueueSession) nonTxSessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createQueueConnection();
|
given(cf.createQueueConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(txSession);
|
||||||
con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
|
given(txSession.getTransacted()).willReturn(true);
|
||||||
conControl.setReturnValue(txSession, 1);
|
given(con.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE)).willReturn(nonTxSession);
|
||||||
txSession.getTransacted();
|
|
||||||
txSessionControl.setReturnValue(true, 1);
|
|
||||||
txSession.rollback();
|
|
||||||
txSessionControl.setVoidCallable(1);
|
|
||||||
txSession.close();
|
|
||||||
txSessionControl.setVoidCallable(1);
|
|
||||||
con.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(nonTxSession, 1);
|
|
||||||
nonTxSession.close();
|
|
||||||
nonTxSessionControl.setVoidCallable(1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
txSessionControl.replay();
|
|
||||||
nonTxSessionControl.replay();
|
|
||||||
|
|
||||||
CachingConnectionFactory scf = new CachingConnectionFactory(cf);
|
CachingConnectionFactory scf = new CachingConnectionFactory(cf);
|
||||||
scf.setReconnectOnException(false);
|
scf.setReconnectOnException(false);
|
||||||
|
|
@ -578,45 +430,25 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(txSession).rollback();
|
||||||
conControl.verify();
|
verify(txSession).close();
|
||||||
txSessionControl.verify();
|
verify(nonTxSession).close();
|
||||||
nonTxSessionControl.verify();
|
verify(con).start();
|
||||||
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testCachingConnectionFactoryWithTopicConnectionFactoryAndJms102Usage() throws JMSException {
|
public void testCachingConnectionFactoryWithTopicConnectionFactoryAndJms102Usage() throws JMSException {
|
||||||
MockControl cfControl = MockControl.createControl(TopicConnectionFactory.class);
|
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
|
||||||
TopicConnectionFactory cf = (TopicConnectionFactory) cfControl.getMock();
|
TopicConnection con = mock(TopicConnection.class);
|
||||||
MockControl conControl = MockControl.createControl(TopicConnection.class);
|
TopicSession txSession = mock(TopicSession.class);
|
||||||
TopicConnection con = (TopicConnection) conControl.getMock();
|
TopicSession nonTxSession = mock(TopicSession.class);
|
||||||
MockControl txSessionControl = MockControl.createControl(TopicSession.class);
|
|
||||||
TopicSession txSession = (TopicSession) txSessionControl.getMock();
|
|
||||||
MockControl nonTxSessionControl = MockControl.createControl(TopicSession.class);
|
|
||||||
TopicSession nonTxSession = (TopicSession) nonTxSessionControl.getMock();
|
|
||||||
|
|
||||||
cf.createTopicConnection();
|
given(cf.createTopicConnection()).willReturn(con);
|
||||||
cfControl.setReturnValue(con, 1);
|
given(con.createTopicSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(txSession);
|
||||||
con.createTopicSession(true, Session.AUTO_ACKNOWLEDGE);
|
given(txSession.getTransacted()).willReturn(true);
|
||||||
conControl.setReturnValue(txSession, 1);
|
given(con.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE)).willReturn(nonTxSession);
|
||||||
txSession.getTransacted();
|
|
||||||
txSessionControl.setReturnValue(true, 2);
|
|
||||||
txSession.close();
|
|
||||||
txSessionControl.setVoidCallable(1);
|
|
||||||
con.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE);
|
|
||||||
conControl.setReturnValue(nonTxSession, 1);
|
|
||||||
nonTxSession.close();
|
|
||||||
nonTxSessionControl.setVoidCallable(1);
|
|
||||||
con.start();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.stop();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
con.close();
|
|
||||||
conControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
cfControl.replay();
|
|
||||||
conControl.replay();
|
|
||||||
txSessionControl.replay();
|
|
||||||
nonTxSessionControl.replay();
|
|
||||||
|
|
||||||
CachingConnectionFactory scf = new CachingConnectionFactory(cf);
|
CachingConnectionFactory scf = new CachingConnectionFactory(cf);
|
||||||
scf.setReconnectOnException(false);
|
scf.setReconnectOnException(false);
|
||||||
|
|
@ -638,10 +470,11 @@ public class SingleConnectionFactoryTests extends TestCase {
|
||||||
con2.close(); // should be ignored
|
con2.close(); // should be ignored
|
||||||
scf.destroy(); // should trigger actual close
|
scf.destroy(); // should trigger actual close
|
||||||
|
|
||||||
cfControl.verify();
|
verify(txSession).close();
|
||||||
conControl.verify();
|
verify(nonTxSession).close();
|
||||||
txSessionControl.verify();
|
verify(con).start();
|
||||||
nonTxSessionControl.verify();
|
verify(con).stop();
|
||||||
|
verify(con).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -16,6 +16,16 @@
|
||||||
|
|
||||||
package org.springframework.jms.core;
|
package org.springframework.jms.core;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.BDDMockito.willThrow;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.reset;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -32,11 +42,9 @@ import javax.jms.Queue;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
import javax.naming.Context;
|
import javax.naming.Context;
|
||||||
import javax.naming.NamingException;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
import org.springframework.jms.InvalidClientIDException;
|
import org.springframework.jms.InvalidClientIDException;
|
||||||
import org.springframework.jms.InvalidDestinationException;
|
import org.springframework.jms.InvalidDestinationException;
|
||||||
import org.springframework.jms.InvalidSelectorException;
|
import org.springframework.jms.InvalidSelectorException;
|
||||||
|
|
@ -66,22 +74,13 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
|
||||||
* @author Andre Biryukov
|
* @author Andre Biryukov
|
||||||
* @author Mark Pollack
|
* @author Mark Pollack
|
||||||
*/
|
*/
|
||||||
public class JmsTemplateTests extends TestCase {
|
public class JmsTemplateTests {
|
||||||
|
|
||||||
private Context mockJndiContext;
|
private Context jndiContext;
|
||||||
private MockControl mockJndiControl;
|
private ConnectionFactory connectionFactory;
|
||||||
|
private Connection connection;
|
||||||
private MockControl connectionFactoryControl;
|
private Session session;
|
||||||
private ConnectionFactory mockConnectionFactory;
|
private Destination queue;
|
||||||
|
|
||||||
private MockControl connectionControl;
|
|
||||||
private Connection mockConnection;
|
|
||||||
|
|
||||||
private MockControl sessionControl;
|
|
||||||
private Session mockSession;
|
|
||||||
|
|
||||||
private MockControl queueControl;
|
|
||||||
private Destination mockQueue;
|
|
||||||
|
|
||||||
private int deliveryMode = DeliveryMode.PERSISTENT;
|
private int deliveryMode = DeliveryMode.PERSISTENT;
|
||||||
private int priority = 9;
|
private int priority = 9;
|
||||||
|
|
@ -91,41 +90,19 @@ public class JmsTemplateTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Create the mock objects for testing.
|
* Create the mock objects for testing.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Before
|
||||||
protected void setUp() throws Exception {
|
public void setupMocks() throws Exception {
|
||||||
mockJndiControl = MockControl.createControl(Context.class);
|
jndiContext = mock(Context.class);
|
||||||
mockJndiContext = (Context) this.mockJndiControl.getMock();
|
connectionFactory = mock(ConnectionFactory.class);
|
||||||
|
connection = mock(Connection.class);
|
||||||
|
session = mock(Session.class);
|
||||||
|
queue = mock(Queue.class);
|
||||||
|
|
||||||
createMockforDestination();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
|
given(connection.createSession(useTransactedTemplate(),
|
||||||
mockJndiContext.close();
|
Session.AUTO_ACKNOWLEDGE)).willReturn(session);
|
||||||
mockJndiControl.replay();
|
given(session.getTransacted()).willReturn(useTransactedSession());
|
||||||
}
|
given(jndiContext.lookup("testDestination")).willReturn(queue);
|
||||||
|
|
||||||
private void createMockforDestination() throws JMSException, NamingException {
|
|
||||||
connectionFactoryControl = MockControl.createControl(ConnectionFactory.class);
|
|
||||||
mockConnectionFactory = (ConnectionFactory) connectionFactoryControl.getMock();
|
|
||||||
|
|
||||||
connectionControl = MockControl.createControl(Connection.class);
|
|
||||||
mockConnection = (Connection) connectionControl.getMock();
|
|
||||||
|
|
||||||
sessionControl = MockControl.createControl(Session.class);
|
|
||||||
mockSession = (Session) sessionControl.getMock();
|
|
||||||
|
|
||||||
queueControl = MockControl.createControl(Queue.class);
|
|
||||||
mockQueue = (Queue) queueControl.getMock();
|
|
||||||
|
|
||||||
mockConnectionFactory.createConnection();
|
|
||||||
connectionFactoryControl.setReturnValue(mockConnection);
|
|
||||||
connectionFactoryControl.replay();
|
|
||||||
|
|
||||||
mockConnection.createSession(useTransactedTemplate(), Session.AUTO_ACKNOWLEDGE);
|
|
||||||
connectionControl.setReturnValue(mockSession);
|
|
||||||
mockSession.getTransacted();
|
|
||||||
sessionControl.setReturnValue(useTransactedSession());
|
|
||||||
|
|
||||||
mockJndiContext.lookup("testDestination");
|
|
||||||
mockJndiControl.setReturnValue(mockQueue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private JmsTemplate createTemplate() {
|
private JmsTemplate createTemplate() {
|
||||||
|
|
@ -134,7 +111,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
destMan.setJndiTemplate(new JndiTemplate() {
|
destMan.setJndiTemplate(new JndiTemplate() {
|
||||||
@Override
|
@Override
|
||||||
protected Context createInitialContext() {
|
protected Context createInitialContext() {
|
||||||
return mockJndiContext;
|
return jndiContext;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
template.setDestinationResolver(destMan);
|
template.setDestinationResolver(destMan);
|
||||||
|
|
@ -151,6 +128,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExceptionStackTrace() {
|
public void testExceptionStackTrace() {
|
||||||
JMSException jmsEx = new JMSException("could not connect");
|
JMSException jmsEx = new JMSException("could not connect");
|
||||||
Exception innerEx = new Exception("host not found");
|
Exception innerEx = new Exception("host not found");
|
||||||
|
|
@ -163,29 +141,14 @@ public class JmsTemplateTests extends TestCase {
|
||||||
assertTrue("inner jms exception not found", trace.indexOf("host not found") > 0);
|
assertTrue("inner jms exception not found", trace.indexOf("host not found") > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testProducerCallback() throws Exception {
|
public void testProducerCallback() throws Exception {
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
|
|
||||||
MockControl messageProducerControl = MockControl.createControl(MessageProducer.class);
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
MessageProducer mockMessageProducer = (MessageProducer) messageProducerControl.getMock();
|
given(session.createProducer(null)).willReturn(messageProducer);
|
||||||
|
given(messageProducer.getPriority()).willReturn(4);
|
||||||
mockSession.createProducer(null);
|
|
||||||
sessionControl.setReturnValue(mockMessageProducer);
|
|
||||||
|
|
||||||
mockMessageProducer.getPriority();
|
|
||||||
messageProducerControl.setReturnValue(4);
|
|
||||||
|
|
||||||
mockMessageProducer.close();
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
messageProducerControl.replay();
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
template.execute(new ProducerCallback() {
|
template.execute(new ProducerCallback() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -196,40 +159,21 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
verify(messageProducer).close();
|
||||||
connectionControl.verify();
|
verify(session).close();
|
||||||
sessionControl.verify();
|
verify(connection).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testProducerCallbackWithIdAndTimestampDisabled() throws Exception {
|
public void testProducerCallbackWithIdAndTimestampDisabled() throws Exception {
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
template.setMessageIdEnabled(false);
|
template.setMessageIdEnabled(false);
|
||||||
template.setMessageTimestampEnabled(false);
|
template.setMessageTimestampEnabled(false);
|
||||||
|
|
||||||
MockControl messageProducerControl = MockControl.createControl(MessageProducer.class);
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
MessageProducer mockMessageProducer = (MessageProducer) messageProducerControl.getMock();
|
given(session.createProducer(null)).willReturn(messageProducer);
|
||||||
|
given(messageProducer.getPriority()).willReturn(4);
|
||||||
mockSession.createProducer(null);
|
|
||||||
sessionControl.setReturnValue(mockMessageProducer);
|
|
||||||
|
|
||||||
mockMessageProducer.setDisableMessageID(true);
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockMessageProducer.setDisableMessageTimestamp(true);
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockMessageProducer.getPriority();
|
|
||||||
messageProducerControl.setReturnValue(4);
|
|
||||||
|
|
||||||
mockMessageProducer.close();
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
messageProducerControl.replay();
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
template.execute(new ProducerCallback() {
|
template.execute(new ProducerCallback() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -240,26 +184,20 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
verify(messageProducer).setDisableMessageID(true);
|
||||||
connectionControl.verify();
|
verify(messageProducer).setDisableMessageTimestamp(true);
|
||||||
sessionControl.verify();
|
verify(messageProducer).close();
|
||||||
|
verify(session).close();
|
||||||
|
verify(connection).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the method execute(SessionCallback action).
|
* Test the method execute(SessionCallback action).
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSessionCallback() throws Exception {
|
public void testSessionCallback() throws Exception {
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
|
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
template.execute(new SessionCallback() {
|
template.execute(new SessionCallback() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -269,35 +207,16 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
verify(session).close();
|
||||||
connectionControl.verify();
|
verify(connection).close();
|
||||||
sessionControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSessionCallbackWithinSynchronizedTransaction() throws Exception {
|
public void testSessionCallbackWithinSynchronizedTransaction() throws Exception {
|
||||||
SingleConnectionFactory scf = new SingleConnectionFactory(mockConnectionFactory);
|
SingleConnectionFactory scf = new SingleConnectionFactory(connectionFactory);
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(scf);
|
template.setConnectionFactory(scf);
|
||||||
|
|
||||||
mockConnection.start();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
// We're gonna call getTransacted 3 times, i.e. 2 more times.
|
|
||||||
mockSession.getTransacted();
|
|
||||||
sessionControl.setReturnValue(useTransactedSession(), 2);
|
|
||||||
if (useTransactedTemplate()) {
|
|
||||||
mockSession.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
}
|
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
mockConnection.stop();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
TransactionSynchronizationManager.initSynchronization();
|
TransactionSynchronizationManager.initSynchronization();
|
||||||
try {
|
try {
|
||||||
template.execute(new SessionCallback() {
|
template.execute(new SessionCallback() {
|
||||||
|
|
@ -315,8 +234,8 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertSame(mockSession, ConnectionFactoryUtils.getTransactionalSession(scf, null, false));
|
assertSame(session, ConnectionFactoryUtils.getTransactionalSession(scf, null, false));
|
||||||
assertSame(mockSession, ConnectionFactoryUtils.getTransactionalSession(scf, scf.createConnection(), false));
|
assertSame(session, ConnectionFactoryUtils.getTransactionalSession(scf, scf.createConnection(), false));
|
||||||
|
|
||||||
TransactionAwareConnectionFactoryProxy tacf = new TransactionAwareConnectionFactoryProxy(scf);
|
TransactionAwareConnectionFactoryProxy tacf = new TransactionAwareConnectionFactoryProxy(scf);
|
||||||
Connection tac = tacf.createConnection();
|
Connection tac = tacf.createConnection();
|
||||||
|
|
@ -339,15 +258,20 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
|
assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
verify(connection).start();
|
||||||
connectionControl.verify();
|
if (useTransactedTemplate()) {
|
||||||
sessionControl.verify();
|
verify(session).commit();
|
||||||
|
}
|
||||||
|
verify(session).close();
|
||||||
|
verify(connection).stop();
|
||||||
|
verify(connection).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test sending to a destination using the method
|
* Test sending to a destination using the method
|
||||||
* send(Destination d, MessageCreator messageCreator)
|
* send(Destination d, MessageCreator messageCreator)
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDestination() throws Exception {
|
public void testSendDestination() throws Exception {
|
||||||
doTestSendDestination(true, false, true, false);
|
doTestSendDestination(true, false, true, false);
|
||||||
}
|
}
|
||||||
|
|
@ -356,6 +280,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
* Test seding to a destination using the method
|
* Test seding to a destination using the method
|
||||||
* send(String d, MessageCreator messageCreator)
|
* send(String d, MessageCreator messageCreator)
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDestinationName() throws Exception {
|
public void testSendDestinationName() throws Exception {
|
||||||
doTestSendDestination(false, false, true, false);
|
doTestSendDestination(false, false, true, false);
|
||||||
}
|
}
|
||||||
|
|
@ -364,6 +289,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
* Test sending to a destination using the method
|
* Test sending to a destination using the method
|
||||||
* send(Destination d, MessageCreator messageCreator) using QOS parameters.
|
* send(Destination d, MessageCreator messageCreator) using QOS parameters.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDestinationWithQOS() throws Exception {
|
public void testSendDestinationWithQOS() throws Exception {
|
||||||
doTestSendDestination(true, false, false, true);
|
doTestSendDestination(true, false, false, true);
|
||||||
}
|
}
|
||||||
|
|
@ -372,6 +298,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
* Test sending to a destination using the method
|
* Test sending to a destination using the method
|
||||||
* send(String d, MessageCreator messageCreator) using QOS parameters.
|
* send(String d, MessageCreator messageCreator) using QOS parameters.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDestinationNameWithQOS() throws Exception {
|
public void testSendDestinationNameWithQOS() throws Exception {
|
||||||
doTestSendDestination(false, false, false, true);
|
doTestSendDestination(false, false, false, true);
|
||||||
}
|
}
|
||||||
|
|
@ -379,6 +306,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Test sending to the default destination.
|
* Test sending to the default destination.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDefaultDestination() throws Exception {
|
public void testSendDefaultDestination() throws Exception {
|
||||||
doTestSendDestination(true, true, true, true);
|
doTestSendDestination(true, true, true, true);
|
||||||
}
|
}
|
||||||
|
|
@ -386,6 +314,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Test sending to the default destination name.
|
* Test sending to the default destination name.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDefaultDestinationName() throws Exception {
|
public void testSendDefaultDestinationName() throws Exception {
|
||||||
doTestSendDestination(false, true, true, true);
|
doTestSendDestination(false, true, true, true);
|
||||||
}
|
}
|
||||||
|
|
@ -393,6 +322,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Test sending to the default destination using explicit QOS parameters.
|
* Test sending to the default destination using explicit QOS parameters.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDefaultDestinationWithQOS() throws Exception {
|
public void testSendDefaultDestinationWithQOS() throws Exception {
|
||||||
doTestSendDestination(true, true, false, false);
|
doTestSendDestination(true, true, false, false);
|
||||||
}
|
}
|
||||||
|
|
@ -400,6 +330,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Test sending to the default destination name using explicit QOS parameters.
|
* Test sending to the default destination name using explicit QOS parameters.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testSendDefaultDestinationNameWithQOS() throws Exception {
|
public void testSendDefaultDestinationNameWithQOS() throws Exception {
|
||||||
doTestSendDestination(false, true, false, false);
|
doTestSendDestination(false, true, false, false);
|
||||||
}
|
}
|
||||||
|
|
@ -414,13 +345,13 @@ public class JmsTemplateTests extends TestCase {
|
||||||
boolean ignoreQOS, boolean disableIdAndTimestamp) throws Exception {
|
boolean ignoreQOS, boolean disableIdAndTimestamp) throws Exception {
|
||||||
|
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
|
|
||||||
String destinationName = "testDestination";
|
String destinationName = "testDestination";
|
||||||
|
|
||||||
if (useDefaultDestination) {
|
if (useDefaultDestination) {
|
||||||
if (explicitDestination) {
|
if (explicitDestination) {
|
||||||
template.setDefaultDestination(mockQueue);
|
template.setDefaultDestination(queue);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
template.setDefaultDestinationName(destinationName);
|
template.setDefaultDestinationName(destinationName);
|
||||||
|
|
@ -431,51 +362,18 @@ public class JmsTemplateTests extends TestCase {
|
||||||
template.setMessageTimestampEnabled(false);
|
template.setMessageTimestampEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
MockControl messageProducerControl = MockControl.createControl(MessageProducer.class);
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
MessageProducer mockMessageProducer = (MessageProducer) messageProducerControl.getMock();
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
|
|
||||||
MockControl messageControl = MockControl.createControl(TextMessage.class);
|
given(session.createProducer(queue)).willReturn(messageProducer);
|
||||||
TextMessage mockMessage = (TextMessage) messageControl.getMock();
|
given(session.createTextMessage("just testing")).willReturn(textMessage);
|
||||||
|
|
||||||
mockSession.createProducer(mockQueue);
|
if (!ignoreQOS) {
|
||||||
sessionControl.setReturnValue(mockMessageProducer);
|
|
||||||
mockSession.createTextMessage("just testing");
|
|
||||||
sessionControl.setReturnValue(mockMessage);
|
|
||||||
|
|
||||||
if (useTransactedTemplate()) {
|
|
||||||
mockSession.commit();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (disableIdAndTimestamp) {
|
|
||||||
mockMessageProducer.setDisableMessageID(true);
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockMessageProducer.setDisableMessageTimestamp(true);
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ignoreQOS) {
|
|
||||||
mockMessageProducer.send(mockMessage);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
template.setExplicitQosEnabled(true);
|
template.setExplicitQosEnabled(true);
|
||||||
template.setDeliveryMode(deliveryMode);
|
template.setDeliveryMode(deliveryMode);
|
||||||
template.setPriority(priority);
|
template.setPriority(priority);
|
||||||
template.setTimeToLive(timeToLive);
|
template.setTimeToLive(timeToLive);
|
||||||
mockMessageProducer.send(mockMessage, deliveryMode, priority, timeToLive);
|
|
||||||
}
|
}
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
mockMessageProducer.close();
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
messageProducerControl.replay();
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
if (useDefaultDestination) {
|
if (useDefaultDestination) {
|
||||||
template.send(new MessageCreator() {
|
template.send(new MessageCreator() {
|
||||||
|
|
@ -487,7 +385,7 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (explicitDestination) {
|
if (explicitDestination) {
|
||||||
template.send(mockQueue, new MessageCreator() {
|
template.send(queue, new MessageCreator() {
|
||||||
@Override
|
@Override
|
||||||
public Message createMessage(Session session) throws JMSException {
|
public Message createMessage(Session session) throws JMSException {
|
||||||
return session.createTextMessage("just testing");
|
return session.createTextMessage("just testing");
|
||||||
|
|
@ -504,119 +402,131 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
if (useTransactedTemplate()) {
|
||||||
connectionControl.verify();
|
verify(session).commit();
|
||||||
sessionControl.verify();
|
|
||||||
messageProducerControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (disableIdAndTimestamp) {
|
||||||
|
verify(messageProducer).setDisableMessageID(true);
|
||||||
|
verify(messageProducer).setDisableMessageTimestamp(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ignoreQOS) {
|
||||||
|
verify(messageProducer).send(textMessage);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
verify(messageProducer).send(textMessage, deliveryMode, priority, timeToLive);
|
||||||
|
}
|
||||||
|
verify(messageProducer).close();
|
||||||
|
verify(session).close();
|
||||||
|
verify(connection).close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testConverter() throws Exception {
|
public void testConverter() throws Exception {
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
template.setMessageConverter(new SimpleMessageConverter());
|
template.setMessageConverter(new SimpleMessageConverter());
|
||||||
String s = "Hello world";
|
String s = "Hello world";
|
||||||
|
|
||||||
MockControl messageProducerControl = MockControl.createControl(MessageProducer.class);
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
MessageProducer mockMessageProducer = (MessageProducer) messageProducerControl.getMock();
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage mockMessage = (TextMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
mockSession.createProducer(mockQueue);
|
given(session.createProducer(queue)).willReturn(messageProducer);
|
||||||
sessionControl.setReturnValue(mockMessageProducer);
|
given(session.createTextMessage("Hello world")).willReturn(textMessage);
|
||||||
mockSession.createTextMessage("Hello world");
|
|
||||||
sessionControl.setReturnValue(mockMessage);
|
|
||||||
|
|
||||||
mockMessageProducer.send(mockMessage);
|
template.convertAndSend(queue, s);
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
mockMessageProducer.close();
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
|
verify(messageProducer).send(textMessage);
|
||||||
|
verify(messageProducer).close();
|
||||||
if (useTransactedTemplate()) {
|
if (useTransactedTemplate()) {
|
||||||
mockSession.commit();
|
verify(session).commit();
|
||||||
sessionControl.setVoidCallable(1);
|
}
|
||||||
}
|
verify(session).close();
|
||||||
|
verify(connection).close();
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
messageProducerControl.replay();
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
template.convertAndSend(mockQueue, s);
|
|
||||||
|
|
||||||
messageProducerControl.verify();
|
|
||||||
sessionControl.verify();
|
|
||||||
connectionControl.verify();
|
|
||||||
connectionFactoryControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDefaultDestination() throws Exception {
|
public void testReceiveDefaultDestination() throws Exception {
|
||||||
doTestReceive(true, true, false, false, false, false, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
doTestReceive(true, true, false, false, false, false, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDefaultDestinationName() throws Exception {
|
public void testReceiveDefaultDestinationName() throws Exception {
|
||||||
doTestReceive(false, true, false, false, false, false, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
doTestReceive(false, true, false, false, false, false, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDestination() throws Exception {
|
public void testReceiveDestination() throws Exception {
|
||||||
doTestReceive(true, false, false, false, false, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
doTestReceive(true, false, false, false, false, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDestinationWithClientAcknowledge() throws Exception {
|
public void testReceiveDestinationWithClientAcknowledge() throws Exception {
|
||||||
doTestReceive(true, false, false, true, false, false, 1000);
|
doTestReceive(true, false, false, true, false, false, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDestinationName() throws Exception {
|
public void testReceiveDestinationName() throws Exception {
|
||||||
doTestReceive(false, false, false, false, false, true, 1000);
|
doTestReceive(false, false, false, false, false, true, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDefaultDestinationWithSelector() throws Exception {
|
public void testReceiveDefaultDestinationWithSelector() throws Exception {
|
||||||
doTestReceive(true, true, false, false, true, true, 1000);
|
doTestReceive(true, true, false, false, true, true, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDefaultDestinationNameWithSelector() throws Exception {
|
public void testReceiveDefaultDestinationNameWithSelector() throws Exception {
|
||||||
doTestReceive(false, true, false, false, true, true, JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT);
|
doTestReceive(false, true, false, false, true, true, JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDestinationWithSelector() throws Exception {
|
public void testReceiveDestinationWithSelector() throws Exception {
|
||||||
doTestReceive(true, false, false, false, true, false, 1000);
|
doTestReceive(true, false, false, false, true, false, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDestinationWithClientAcknowledgeWithSelector() throws Exception {
|
public void testReceiveDestinationWithClientAcknowledgeWithSelector() throws Exception {
|
||||||
doTestReceive(true, false, false, true, true, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
doTestReceive(true, false, false, true, true, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveDestinationNameWithSelector() throws Exception {
|
public void testReceiveDestinationNameWithSelector() throws Exception {
|
||||||
doTestReceive(false, false, false, false, true, false, JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT);
|
doTestReceive(false, false, false, false, true, false, JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDefaultDestination() throws Exception {
|
public void testReceiveAndConvertDefaultDestination() throws Exception {
|
||||||
doTestReceive(true, true, true, false, false, false, 1000);
|
doTestReceive(true, true, true, false, false, false, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDefaultDestinationName() throws Exception {
|
public void testReceiveAndConvertDefaultDestinationName() throws Exception {
|
||||||
doTestReceive(false, true, true, false, false, false, 1000);
|
doTestReceive(false, true, true, false, false, false, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDestinationName() throws Exception {
|
public void testReceiveAndConvertDestinationName() throws Exception {
|
||||||
doTestReceive(false, false, true, false, false, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
doTestReceive(false, false, true, false, false, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDestination() throws Exception {
|
public void testReceiveAndConvertDestination() throws Exception {
|
||||||
doTestReceive(true, false, true, false, false, true, 1000);
|
doTestReceive(true, false, true, false, false, true, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDefaultDestinationWithSelector() throws Exception {
|
public void testReceiveAndConvertDefaultDestinationWithSelector() throws Exception {
|
||||||
doTestReceive(true, true, true, false, true, true, JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT);
|
doTestReceive(true, true, true, false, true, true, JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDestinationNameWithSelector() throws Exception {
|
public void testReceiveAndConvertDestinationNameWithSelector() throws Exception {
|
||||||
doTestReceive(false, false, true, false, true, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
doTestReceive(false, false, true, false, true, true, JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testReceiveAndConvertDestinationWithSelector() throws Exception {
|
public void testReceiveAndConvertDestinationWithSelector() throws Exception {
|
||||||
doTestReceive(true, false, true, false, true, false, 1000);
|
doTestReceive(true, false, true, false, true, false, 1000);
|
||||||
}
|
}
|
||||||
|
|
@ -627,13 +537,13 @@ public class JmsTemplateTests extends TestCase {
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
|
|
||||||
String destinationName = "testDestination";
|
String destinationName = "testDestination";
|
||||||
|
|
||||||
if (useDefaultDestination) {
|
if (useDefaultDestination) {
|
||||||
if (explicitDestination) {
|
if (explicitDestination) {
|
||||||
template.setDefaultDestination(mockQueue);
|
template.setDefaultDestination(queue);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
template.setDefaultDestinationName(destinationName);
|
template.setDefaultDestinationName(destinationName);
|
||||||
|
|
@ -644,67 +554,34 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
template.setReceiveTimeout(timeout);
|
template.setReceiveTimeout(timeout);
|
||||||
|
|
||||||
mockConnection.start();
|
MessageConsumer messageConsumer = mock(MessageConsumer.class);
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
MockControl messageConsumerControl = MockControl.createControl(MessageConsumer.class);
|
|
||||||
MessageConsumer mockMessageConsumer = (MessageConsumer) messageConsumerControl.getMock();
|
|
||||||
|
|
||||||
String selectorString = "selector";
|
String selectorString = "selector";
|
||||||
mockSession.createConsumer(mockQueue, messageSelector ? selectorString : null);
|
given(session.createConsumer(queue,
|
||||||
sessionControl.setReturnValue(mockMessageConsumer);
|
messageSelector ? selectorString : null)).willReturn(messageConsumer);
|
||||||
|
|
||||||
if (useTransactedTemplate()) {
|
if (!useTransactedTemplate() && !useTransactedSession()) {
|
||||||
mockSession.commit();
|
given(session.getAcknowledgeMode()).willReturn(
|
||||||
sessionControl.setVoidCallable(1);
|
clientAcknowledge ? Session.CLIENT_ACKNOWLEDGE
|
||||||
}
|
: Session.AUTO_ACKNOWLEDGE);
|
||||||
else if (!useTransactedSession()) {
|
|
||||||
mockSession.getAcknowledgeMode();
|
|
||||||
if (clientAcknowledge) {
|
|
||||||
sessionControl.setReturnValue(Session.CLIENT_ACKNOWLEDGE, 1);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sessionControl.setReturnValue(Session.AUTO_ACKNOWLEDGE, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mockSession.close();
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
MockControl messageControl = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage mockMessage = (TextMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
if (testConverter) {
|
if (testConverter) {
|
||||||
mockMessage.getText();
|
given(textMessage.getText()).willReturn("Hello World!");
|
||||||
messageControl.setReturnValue("Hello World!");
|
|
||||||
}
|
}
|
||||||
if (!useTransactedSession() && clientAcknowledge) {
|
|
||||||
mockMessage.acknowledge();
|
|
||||||
messageControl.setVoidCallable(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
if (timeout == JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT) {
|
if (timeout == JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT) {
|
||||||
mockMessageConsumer.receiveNoWait();
|
given(messageConsumer.receiveNoWait()).willReturn(textMessage);
|
||||||
}
|
}
|
||||||
else if (timeout == JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT) {
|
else if (timeout == JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT) {
|
||||||
mockMessageConsumer.receive();
|
given(messageConsumer.receive()).willReturn(textMessage);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mockMessageConsumer.receive(timeout);
|
given(messageConsumer.receive(timeout)).willReturn(textMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
messageConsumerControl.setReturnValue(mockMessage);
|
|
||||||
mockMessageConsumer.close();
|
|
||||||
messageConsumerControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
messageConsumerControl.replay();
|
|
||||||
|
|
||||||
Message message = null;
|
Message message = null;
|
||||||
String textFromMessage = null;
|
String textFromMessage = null;
|
||||||
|
|
||||||
|
|
@ -721,12 +598,12 @@ public class JmsTemplateTests extends TestCase {
|
||||||
else if (explicitDestination) {
|
else if (explicitDestination) {
|
||||||
if (testConverter) {
|
if (testConverter) {
|
||||||
textFromMessage = (String)
|
textFromMessage = (String)
|
||||||
(messageSelector ? template.receiveSelectedAndConvert(mockQueue, selectorString) :
|
(messageSelector ? template.receiveSelectedAndConvert(queue, selectorString) :
|
||||||
template.receiveAndConvert(mockQueue));
|
template.receiveAndConvert(queue));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
message = (messageSelector ? template.receiveSelected(mockQueue, selectorString) :
|
message = (messageSelector ? template.receiveSelected(queue, selectorString) :
|
||||||
template.receive(mockQueue));
|
template.receive(queue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -741,105 +618,107 @@ public class JmsTemplateTests extends TestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
|
||||||
connectionControl.verify();
|
|
||||||
sessionControl.verify();
|
|
||||||
messageConsumerControl.verify();
|
|
||||||
messageControl.verify();
|
|
||||||
|
|
||||||
if (testConverter) {
|
if (testConverter) {
|
||||||
assertEquals("Message text should be equal", "Hello World!", textFromMessage);
|
assertEquals("Message text should be equal", "Hello World!", textFromMessage);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
assertEquals("Messages should refer to the same object", message, mockMessage);
|
assertEquals("Messages should refer to the same object", message, textMessage);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
verify(connection).start();
|
||||||
|
verify(connection).close();
|
||||||
|
if (useTransactedTemplate()) {
|
||||||
|
verify(session).commit();
|
||||||
|
}
|
||||||
|
verify(session).close();
|
||||||
|
if (!useTransactedSession() && clientAcknowledge) {
|
||||||
|
verify(textMessage).acknowledge();
|
||||||
|
}
|
||||||
|
verify(messageConsumer).close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIllegalStateException() throws Exception {
|
public void testIllegalStateException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.IllegalStateException(""), org.springframework.jms.IllegalStateException.class);
|
doTestJmsException(new javax.jms.IllegalStateException(""), org.springframework.jms.IllegalStateException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInvalidClientIDException() throws Exception {
|
public void testInvalidClientIDException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.InvalidClientIDException(""), InvalidClientIDException.class);
|
doTestJmsException(new javax.jms.InvalidClientIDException(""), InvalidClientIDException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInvalidDestinationException() throws Exception {
|
public void testInvalidDestinationException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.InvalidDestinationException(""), InvalidDestinationException.class);
|
doTestJmsException(new javax.jms.InvalidDestinationException(""), InvalidDestinationException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInvalidSelectorException() throws Exception {
|
public void testInvalidSelectorException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.InvalidSelectorException(""), InvalidSelectorException.class);
|
doTestJmsException(new javax.jms.InvalidSelectorException(""), InvalidSelectorException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testJmsSecurityException() throws Exception {
|
public void testJmsSecurityException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.JMSSecurityException(""), JmsSecurityException.class);
|
doTestJmsException(new javax.jms.JMSSecurityException(""), JmsSecurityException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMessageEOFException() throws Exception {
|
public void testMessageEOFException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.MessageEOFException(""), MessageEOFException.class);
|
doTestJmsException(new javax.jms.MessageEOFException(""), MessageEOFException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMessageFormatException() throws Exception {
|
public void testMessageFormatException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.MessageFormatException(""), MessageFormatException.class);
|
doTestJmsException(new javax.jms.MessageFormatException(""), MessageFormatException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMessageNotReadableException() throws Exception {
|
public void testMessageNotReadableException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.MessageNotReadableException(""), MessageNotReadableException.class);
|
doTestJmsException(new javax.jms.MessageNotReadableException(""), MessageNotReadableException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMessageNotWriteableException() throws Exception {
|
public void testMessageNotWriteableException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.MessageNotWriteableException(""), MessageNotWriteableException.class);
|
doTestJmsException(new javax.jms.MessageNotWriteableException(""), MessageNotWriteableException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testResourceAllocationException() throws Exception {
|
public void testResourceAllocationException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.ResourceAllocationException(""), ResourceAllocationException.class);
|
doTestJmsException(new javax.jms.ResourceAllocationException(""), ResourceAllocationException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTransactionInProgressException() throws Exception {
|
public void testTransactionInProgressException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.TransactionInProgressException(""), TransactionInProgressException.class);
|
doTestJmsException(new javax.jms.TransactionInProgressException(""), TransactionInProgressException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTransactionRolledBackException() throws Exception {
|
public void testTransactionRolledBackException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.TransactionRolledBackException(""), TransactionRolledBackException.class);
|
doTestJmsException(new javax.jms.TransactionRolledBackException(""), TransactionRolledBackException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUncategorizedJmsException() throws Exception {
|
public void testUncategorizedJmsException() throws Exception {
|
||||||
doTestJmsException(new javax.jms.JMSException(""), UncategorizedJmsException.class);
|
doTestJmsException(new javax.jms.JMSException(""), UncategorizedJmsException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doTestJmsException(JMSException original, Class thrownExceptionClass) throws Exception {
|
protected void doTestJmsException(JMSException original, Class thrownExceptionClass) throws Exception {
|
||||||
JmsTemplate template = createTemplate();
|
JmsTemplate template = createTemplate();
|
||||||
template.setConnectionFactory(mockConnectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
template.setMessageConverter(new SimpleMessageConverter());
|
template.setMessageConverter(new SimpleMessageConverter());
|
||||||
String s = "Hello world";
|
String s = "Hello world";
|
||||||
|
|
||||||
MockControl messageProducerControl = MockControl.createControl(MessageProducer.class);
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
MessageProducer mockMessageProducer = (MessageProducer) messageProducerControl.getMock();
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage mockMessage = (TextMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
sessionControl.reset();
|
reset(session);
|
||||||
mockSession.createProducer(mockQueue);
|
given(session.createProducer(queue)).willReturn(messageProducer);
|
||||||
sessionControl.setReturnValue(mockMessageProducer);
|
given(session.createTextMessage("Hello world")).willReturn(textMessage);
|
||||||
mockSession.createTextMessage("Hello world");
|
|
||||||
sessionControl.setReturnValue(mockMessage);
|
|
||||||
|
|
||||||
mockMessageProducer.send(mockMessage);
|
willThrow(original).given(messageProducer).send(textMessage);
|
||||||
messageProducerControl.setThrowable(original, 1);
|
|
||||||
mockMessageProducer.close();
|
|
||||||
messageProducerControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
mockSession.close();
|
|
||||||
sessionControl.setVoidCallable(1);
|
|
||||||
mockConnection.close();
|
|
||||||
connectionControl.setVoidCallable(1);
|
|
||||||
|
|
||||||
messageProducerControl.replay();
|
|
||||||
sessionControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.convertAndSend(mockQueue, s);
|
template.convertAndSend(queue, s);
|
||||||
fail("Should have thrown JmsException");
|
fail("Should have thrown JmsException");
|
||||||
}
|
}
|
||||||
catch (JmsException wrappedEx) {
|
catch (JmsException wrappedEx) {
|
||||||
|
|
@ -848,10 +727,9 @@ public class JmsTemplateTests extends TestCase {
|
||||||
assertEquals(original, wrappedEx.getCause());
|
assertEquals(original, wrappedEx.getCause());
|
||||||
}
|
}
|
||||||
|
|
||||||
messageProducerControl.verify();
|
verify(messageProducer).close();
|
||||||
sessionControl.verify();
|
verify(session).close();
|
||||||
connectionControl.verify();
|
verify(connection).close();
|
||||||
connectionFactoryControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -15,26 +15,26 @@
|
||||||
*/
|
*/
|
||||||
package org.springframework.jms.core.support;
|
package org.springframework.jms.core.support;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.jms.ConnectionFactory;
|
import javax.jms.ConnectionFactory;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.junit.Test;
|
||||||
import org.easymock.MockControl;
|
|
||||||
|
|
||||||
import org.springframework.jms.core.JmsTemplate;
|
import org.springframework.jms.core.JmsTemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Mark Pollack
|
* @author Mark Pollack
|
||||||
* @since 24.9.2004
|
* @since 24.9.2004
|
||||||
*/
|
*/
|
||||||
public class JmsGatewaySupportTests extends TestCase {
|
public class JmsGatewaySupportTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testJmsGatewaySupportWithConnectionFactory() throws Exception {
|
public void testJmsGatewaySupportWithConnectionFactory() throws Exception {
|
||||||
MockControl connectionFactoryControl = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory mockConnectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory mockConnectionFactory = (ConnectionFactory) connectionFactoryControl.getMock();
|
|
||||||
connectionFactoryControl.replay();
|
|
||||||
final List test = new ArrayList();
|
final List test = new ArrayList();
|
||||||
JmsGatewaySupport gateway = new JmsGatewaySupport() {
|
JmsGatewaySupport gateway = new JmsGatewaySupport() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -47,9 +47,9 @@ public class JmsGatewaySupportTests extends TestCase {
|
||||||
assertEquals("Correct ConnectionFactory", mockConnectionFactory, gateway.getConnectionFactory());
|
assertEquals("Correct ConnectionFactory", mockConnectionFactory, gateway.getConnectionFactory());
|
||||||
assertEquals("Correct JmsTemplate", mockConnectionFactory, gateway.getJmsTemplate().getConnectionFactory());
|
assertEquals("Correct JmsTemplate", mockConnectionFactory, gateway.getJmsTemplate().getConnectionFactory());
|
||||||
assertEquals("initGatway called", test.size(), 1);
|
assertEquals("initGatway called", test.size(), 1);
|
||||||
connectionFactoryControl.verify();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testJmsGatewaySupportWithJmsTemplate() throws Exception {
|
public void testJmsGatewaySupportWithJmsTemplate() throws Exception {
|
||||||
JmsTemplate template = new JmsTemplate();
|
JmsTemplate template = new JmsTemplate();
|
||||||
final List test = new ArrayList();
|
final List test = new ArrayList();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,7 +16,14 @@
|
||||||
|
|
||||||
package org.springframework.jms.listener;
|
package org.springframework.jms.listener;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
|
@ -29,12 +36,8 @@ import javax.jms.MessageConsumer;
|
||||||
import javax.jms.MessageListener;
|
import javax.jms.MessageListener;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
|
|
||||||
import org.easymock.EasyMock;
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
import org.easymock.internal.AlwaysMatcher;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.context.support.GenericApplicationContext;
|
import org.springframework.context.support.GenericApplicationContext;
|
||||||
import org.springframework.core.task.TaskExecutor;
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.jms.StubQueue;
|
import org.springframework.jms.StubQueue;
|
||||||
|
|
@ -91,38 +94,20 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testContextRefreshedEventDoesNotStartTheConnectionIfAutoStartIsSetToFalse() throws Exception {
|
public void testContextRefreshedEventDoesNotStartTheConnectionIfAutoStartIsSetToFalse() throws Exception {
|
||||||
MockControl mockMessageConsumer = MockControl.createControl(MessageConsumer.class);
|
MessageConsumer messageConsumer = mock(MessageConsumer.class);
|
||||||
MessageConsumer messageConsumer = (MessageConsumer) mockMessageConsumer.getMock();
|
Session session = mock(Session.class);
|
||||||
messageConsumer.setMessageListener(null);
|
|
||||||
// anon. inner class passed in, so just expect a call...
|
|
||||||
mockMessageConsumer.setMatcher(new AlwaysMatcher());
|
|
||||||
mockMessageConsumer.setVoidCallable();
|
|
||||||
mockMessageConsumer.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
this.container.setConnectionFactory(connectionFactory);
|
this.container.setConnectionFactory(connectionFactory);
|
||||||
this.container.setDestinationName(DESTINATION_NAME);
|
this.container.setDestinationName(DESTINATION_NAME);
|
||||||
|
|
@ -134,49 +119,26 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
context.getBeanFactory().registerSingleton("messageListenerContainer", this.container);
|
context.getBeanFactory().registerSingleton("messageListenerContainer", this.container);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
|
|
||||||
mockMessageConsumer.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockSession.verify();
|
|
||||||
mockConnection.verify();
|
|
||||||
mockConnectionFactory.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testContextRefreshedEventStartsTheConnectionByDefault() throws Exception {
|
public void testContextRefreshedEventStartsTheConnectionByDefault() throws Exception {
|
||||||
MockControl mockMessageConsumer = MockControl.createControl(MessageConsumer.class);
|
MessageConsumer messageConsumer = mock(MessageConsumer.class);
|
||||||
MessageConsumer messageConsumer = (MessageConsumer) mockMessageConsumer.getMock();
|
Session session = mock(Session.class);
|
||||||
messageConsumer.setMessageListener(null);
|
|
||||||
// anon. inner class passed in, so just expect a call...
|
|
||||||
mockMessageConsumer.setMatcher(new AlwaysMatcher());
|
|
||||||
mockMessageConsumer.setVoidCallable();
|
|
||||||
mockMessageConsumer.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
// and the connection is start()ed after the listener is registered...
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
this.container.setConnectionFactory(connectionFactory);
|
this.container.setConnectionFactory(connectionFactory);
|
||||||
this.container.setDestinationName(DESTINATION_NAME);
|
this.container.setDestinationName(DESTINATION_NAME);
|
||||||
|
|
@ -187,48 +149,31 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
context.getBeanFactory().registerSingleton("messageListenerContainer", this.container);
|
context.getBeanFactory().registerSingleton("messageListenerContainer", this.container);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
|
|
||||||
mockMessageConsumer.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockSession.verify();
|
verify(connection).start();
|
||||||
mockConnection.verify();
|
|
||||||
mockConnectionFactory.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCorrectSessionExposedForSessionAwareMessageListenerInvocation() throws Exception {
|
public void testCorrectSessionExposedForSessionAwareMessageListenerInvocation() throws Exception {
|
||||||
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
final Session session = mock(Session.class);
|
||||||
final Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
// an exception is thrown, so the rollback logic is being applied here...
|
// an exception is thrown, so the rollback logic is being applied here...
|
||||||
session.getTransacted();
|
given(session.getTransacted()).willReturn(false);
|
||||||
mockSession.setReturnValue(false);
|
given(session.getAcknowledgeMode()).willReturn(Session.AUTO_ACKNOWLEDGE);
|
||||||
session.getAcknowledgeMode();
|
|
||||||
mockSession.setReturnValue(Session.AUTO_ACKNOWLEDGE);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
// and the connection is start()ed after the listener is registered...
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
final ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
final ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
final HashSet failure = new HashSet();
|
final HashSet failure = new HashSet();
|
||||||
|
|
||||||
|
|
@ -250,52 +195,33 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
this.container.afterPropertiesSet();
|
this.container.afterPropertiesSet();
|
||||||
this.container.start();
|
this.container.start();
|
||||||
|
|
||||||
MockControl mockMessage = MockControl.createControl(Message.class);
|
final Message message = mock(Message.class);
|
||||||
final Message message = (Message) mockMessage.getMock();
|
|
||||||
mockMessage.replay();
|
|
||||||
messageConsumer.sendMessage(message);
|
messageConsumer.sendMessage(message);
|
||||||
|
|
||||||
if (!failure.isEmpty()) {
|
if (!failure.isEmpty()) {
|
||||||
fail(failure.iterator().next().toString());
|
fail(failure.iterator().next().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
mockMessage.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockSession.verify();
|
verify(connection).start();
|
||||||
mockConnection.verify();
|
|
||||||
mockConnectionFactory.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTaskExecutorCorrectlyInvokedWhenSpecified() throws Exception {
|
public void testTaskExecutorCorrectlyInvokedWhenSpecified() throws Exception {
|
||||||
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
final Session session = mock(Session.class);
|
||||||
final Session session = (Session) mockSession.getMock();
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
given(session.getTransacted()).willReturn(false);
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.getAcknowledgeMode()).willReturn(Session.AUTO_ACKNOWLEDGE);
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
session.getTransacted();
|
|
||||||
mockSession.setReturnValue(false);
|
|
||||||
session.getAcknowledgeMode();
|
|
||||||
mockSession.setReturnValue(Session.AUTO_ACKNOWLEDGE);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
connection.setExceptionListener(this.container);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
|
||||||
mockConnection.setReturnValue(session);
|
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
final ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
final ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
final TestMessageListener listener = new TestMessageListener();
|
final TestMessageListener listener = new TestMessageListener();
|
||||||
|
|
||||||
|
|
@ -314,53 +240,36 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
this.container.afterPropertiesSet();
|
this.container.afterPropertiesSet();
|
||||||
this.container.start();
|
this.container.start();
|
||||||
|
|
||||||
MockControl mockMessage = MockControl.createControl(Message.class);
|
final Message message = mock(Message.class);
|
||||||
final Message message = (Message) mockMessage.getMock();
|
|
||||||
mockMessage.replay();
|
|
||||||
messageConsumer.sendMessage(message);
|
messageConsumer.sendMessage(message);
|
||||||
|
|
||||||
assertTrue(listener.executorInvoked);
|
assertTrue(listener.executorInvoked);
|
||||||
assertTrue(listener.listenerInvoked);
|
assertTrue(listener.listenerInvoked);
|
||||||
mockMessage.verify();
|
|
||||||
mockSession.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockConnection.verify();
|
verify(connection).start();
|
||||||
mockConnectionFactory.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRegisteredExceptionListenerIsInvokedOnException() throws Exception {
|
public void testRegisteredExceptionListenerIsInvokedOnException() throws Exception {
|
||||||
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
// an exception is thrown, so the rollback logic is being applied here...
|
// an exception is thrown, so the rollback logic is being applied here...
|
||||||
session.getTransacted();
|
given(session.getTransacted()).willReturn(false);
|
||||||
mockSession.setReturnValue(false);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
// and the connection is start()ed after the listener is registered...
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
final JMSException theException = new JMSException(EXCEPTION_MESSAGE);
|
final JMSException theException = new JMSException(EXCEPTION_MESSAGE);
|
||||||
|
|
||||||
|
|
@ -373,61 +282,44 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
MockControl mockExceptionListener = MockControl.createControl(ExceptionListener.class);
|
ExceptionListener exceptionListener = mock(ExceptionListener.class);
|
||||||
ExceptionListener exceptionListener = (ExceptionListener) mockExceptionListener.getMock();
|
|
||||||
exceptionListener.onException(theException);
|
|
||||||
mockExceptionListener.setVoidCallable();
|
|
||||||
mockExceptionListener.replay();
|
|
||||||
|
|
||||||
this.container.setExceptionListener(exceptionListener);
|
this.container.setExceptionListener(exceptionListener);
|
||||||
this.container.afterPropertiesSet();
|
this.container.afterPropertiesSet();
|
||||||
this.container.start();
|
this.container.start();
|
||||||
|
|
||||||
// manually trigger an Exception with the above bad MessageListener...
|
// manually trigger an Exception with the above bad MessageListener...
|
||||||
MockControl mockMessage = MockControl.createControl(Message.class);
|
final Message message = mock(Message.class);
|
||||||
final Message message = (Message) mockMessage.getMock();
|
|
||||||
mockMessage.replay();
|
|
||||||
|
|
||||||
// a Throwable from a MessageListener MUST simply be swallowed...
|
// a Throwable from a MessageListener MUST simply be swallowed...
|
||||||
messageConsumer.sendMessage(message);
|
messageConsumer.sendMessage(message);
|
||||||
|
|
||||||
mockExceptionListener.verify();
|
|
||||||
mockMessage.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockSession.verify();
|
verify(connection).start();
|
||||||
mockConnection.verify();
|
verify(exceptionListener).onException(theException);
|
||||||
mockConnectionFactory.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRegisteredErrorHandlerIsInvokedOnException() throws Exception {
|
public void testRegisteredErrorHandlerIsInvokedOnException() throws Exception {
|
||||||
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
||||||
|
|
||||||
Session session = EasyMock.createMock(Session.class);
|
Session session = mock(Session.class);
|
||||||
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
EasyMock.expectLastCall().andReturn(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
EasyMock.expectLastCall().andReturn(messageConsumer);
|
|
||||||
// an exception is thrown, so the rollback logic is being applied here...
|
// an exception is thrown, so the rollback logic is being applied here...
|
||||||
session.getTransacted();
|
given(session.getTransacted()).willReturn(false);
|
||||||
EasyMock.expectLastCall().andReturn(false);
|
|
||||||
EasyMock.replay(session);
|
|
||||||
|
|
||||||
Connection connection = EasyMock.createMock(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
EasyMock.expectLastCall().andReturn(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
|
||||||
connection.start();
|
|
||||||
EasyMock.replay(connection);
|
|
||||||
|
|
||||||
ConnectionFactory connectionFactory = EasyMock.createMock(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
connectionFactory.createConnection();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
EasyMock.expectLastCall().andReturn(connection);
|
|
||||||
EasyMock.replay(connectionFactory);
|
|
||||||
|
|
||||||
final IllegalStateException theException = new IllegalStateException("intentional test failure");
|
final IllegalStateException theException = new IllegalStateException("intentional test failure");
|
||||||
|
|
||||||
|
|
@ -440,58 +332,42 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ErrorHandler errorHandler = EasyMock.createMock(ErrorHandler.class);
|
ErrorHandler errorHandler = mock(ErrorHandler.class);
|
||||||
errorHandler.handleError(theException);
|
|
||||||
EasyMock.expectLastCall();
|
|
||||||
EasyMock.replay(errorHandler);
|
|
||||||
this.container.setErrorHandler(errorHandler);
|
this.container.setErrorHandler(errorHandler);
|
||||||
this.container.afterPropertiesSet();
|
this.container.afterPropertiesSet();
|
||||||
this.container.start();
|
this.container.start();
|
||||||
|
|
||||||
// manually trigger an Exception with the above bad MessageListener...
|
// manually trigger an Exception with the above bad MessageListener...
|
||||||
Message message = EasyMock.createMock(Message.class);
|
Message message = mock(Message.class);
|
||||||
EasyMock.replay(message);
|
|
||||||
|
|
||||||
// a Throwable from a MessageListener MUST simply be swallowed...
|
// a Throwable from a MessageListener MUST simply be swallowed...
|
||||||
messageConsumer.sendMessage(message);
|
messageConsumer.sendMessage(message);
|
||||||
|
|
||||||
EasyMock.verify(errorHandler, message, session, connection, connectionFactory);
|
verify(connection).setExceptionListener(this.container);
|
||||||
|
verify(connection).start();
|
||||||
|
verify(errorHandler).handleError(theException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNoRollbackOccursIfSessionIsNotTransactedAndThatExceptionsDo_NOT_Propagate() throws Exception {
|
public void testNoRollbackOccursIfSessionIsNotTransactedAndThatExceptionsDo_NOT_Propagate() throws Exception {
|
||||||
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
// an exception is thrown, so the rollback logic is being applied here...
|
// an exception is thrown, so the rollback logic is being applied here...
|
||||||
session.getTransacted();
|
given(session.getTransacted()).willReturn(false);
|
||||||
mockSession.setReturnValue(false);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
// and the connection is start()ed after the listener is registered...
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
this.container.setConnectionFactory(connectionFactory);
|
this.container.setConnectionFactory(connectionFactory);
|
||||||
this.container.setDestinationName(DESTINATION_NAME);
|
this.container.setDestinationName(DESTINATION_NAME);
|
||||||
|
|
@ -505,17 +381,13 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
this.container.start();
|
this.container.start();
|
||||||
|
|
||||||
// manually trigger an Exception with the above bad MessageListener...
|
// manually trigger an Exception with the above bad MessageListener...
|
||||||
MockControl mockMessage = MockControl.createControl(Message.class);
|
final Message message = mock(Message.class);
|
||||||
final Message message = (Message) mockMessage.getMock();
|
|
||||||
mockMessage.replay();
|
|
||||||
|
|
||||||
// a Throwable from a MessageListener MUST simply be swallowed...
|
// a Throwable from a MessageListener MUST simply be swallowed...
|
||||||
messageConsumer.sendMessage(message);
|
messageConsumer.sendMessage(message);
|
||||||
|
|
||||||
mockMessage.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockSession.verify();
|
verify(connection).start();
|
||||||
mockConnection.verify();
|
|
||||||
mockConnectionFactory.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -524,39 +396,22 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
|
|
||||||
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
final SimpleMessageConsumer messageConsumer = new SimpleMessageConsumer();
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
// an exception is thrown, so the rollback logic is being applied here...
|
// an exception is thrown, so the rollback logic is being applied here...
|
||||||
session.getTransacted();
|
given(session.getTransacted()).willReturn(true);
|
||||||
mockSession.setReturnValue(true);
|
|
||||||
// Session is rolled back 'cos it is transacted...
|
|
||||||
session.rollback();
|
|
||||||
mockSession.setVoidCallable();
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
// and the connection is start()ed after the listener is registered...
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
this.container.setConnectionFactory(connectionFactory);
|
this.container.setConnectionFactory(connectionFactory);
|
||||||
this.container.setDestinationName(DESTINATION_NAME);
|
this.container.setDestinationName(DESTINATION_NAME);
|
||||||
|
|
@ -570,65 +425,34 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
this.container.start();
|
this.container.start();
|
||||||
|
|
||||||
// manually trigger an Exception with the above bad MessageListener...
|
// manually trigger an Exception with the above bad MessageListener...
|
||||||
MockControl mockMessage = MockControl.createControl(Message.class);
|
final Message message = mock(Message.class);
|
||||||
final Message message = (Message) mockMessage.getMock();
|
|
||||||
mockMessage.replay();
|
|
||||||
|
|
||||||
// a Throwable from a MessageListener MUST simply be swallowed...
|
// a Throwable from a MessageListener MUST simply be swallowed...
|
||||||
messageConsumer.sendMessage(message);
|
messageConsumer.sendMessage(message);
|
||||||
|
|
||||||
mockMessage.verify();
|
// Session is rolled back 'cos it is transacted...
|
||||||
mockSession.verify();
|
verify(session).rollback();
|
||||||
mockConnection.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockConnectionFactory.verify();
|
verify(connection).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDestroyClosesConsumersSessionsAndConnectionInThatOrder() throws Exception {
|
public void testDestroyClosesConsumersSessionsAndConnectionInThatOrder() throws Exception {
|
||||||
MockControl mockMessageConsumer = MockControl.createControl(MessageConsumer.class);
|
MessageConsumer messageConsumer = mock(MessageConsumer.class);
|
||||||
MessageConsumer messageConsumer = (MessageConsumer) mockMessageConsumer.getMock();
|
Session session = mock(Session.class);
|
||||||
messageConsumer.setMessageListener(null);
|
|
||||||
// anon. inner class passed in, so just expect a call...
|
|
||||||
mockMessageConsumer.setMatcher(new AlwaysMatcher());
|
|
||||||
mockMessageConsumer.setVoidCallable();
|
|
||||||
// closing down...
|
|
||||||
messageConsumer.close();
|
|
||||||
mockMessageConsumer.setVoidCallable();
|
|
||||||
mockMessageConsumer.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
// Queue gets created in order to create MessageConsumer for that Destination...
|
// Queue gets created in order to create MessageConsumer for that Destination...
|
||||||
session.createQueue(DESTINATION_NAME);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(QUEUE_DESTINATION);
|
||||||
mockSession.setReturnValue(QUEUE_DESTINATION);
|
|
||||||
// and then the MessageConsumer gets created...
|
// and then the MessageConsumer gets created...
|
||||||
session.createConsumer(QUEUE_DESTINATION, null); // no MessageSelector...
|
given(session.createConsumer(QUEUE_DESTINATION, null)).willReturn(messageConsumer); // no MessageSelector...
|
||||||
mockSession.setReturnValue(messageConsumer);
|
|
||||||
// closing down...
|
|
||||||
session.close();
|
|
||||||
mockSession.setVoidCallable();
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockConnection = MockControl.createControl(Connection.class);
|
Connection connection = mock(Connection.class);
|
||||||
Connection connection = (Connection) mockConnection.getMock();
|
|
||||||
connection.setExceptionListener(this.container);
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// session gets created in order to register MessageListener...
|
// session gets created in order to register MessageListener...
|
||||||
connection.createSession(this.container.isSessionTransacted(), this.container.getSessionAcknowledgeMode());
|
given(connection.createSession(this.container.isSessionTransacted(),
|
||||||
mockConnection.setReturnValue(session);
|
this.container.getSessionAcknowledgeMode())).willReturn(session);
|
||||||
// and the connection is start()ed after the listener is registered...
|
// and the connection is start()ed after the listener is registered...
|
||||||
connection.start();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
// closing down...
|
|
||||||
connection.close();
|
|
||||||
mockConnection.setVoidCallable();
|
|
||||||
mockConnection.replay();
|
|
||||||
|
|
||||||
MockControl mockConnectionFactory = MockControl.createControl(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
ConnectionFactory connectionFactory = (ConnectionFactory) mockConnectionFactory.getMock();
|
given(connectionFactory.createConnection()).willReturn(connection);
|
||||||
connectionFactory.createConnection();
|
|
||||||
mockConnectionFactory.setReturnValue(connection);
|
|
||||||
mockConnectionFactory.replay();
|
|
||||||
|
|
||||||
this.container.setConnectionFactory(connectionFactory);
|
this.container.setConnectionFactory(connectionFactory);
|
||||||
this.container.setDestinationName(DESTINATION_NAME);
|
this.container.setDestinationName(DESTINATION_NAME);
|
||||||
|
|
@ -638,10 +462,11 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
|
||||||
this.container.start();
|
this.container.start();
|
||||||
this.container.destroy();
|
this.container.destroy();
|
||||||
|
|
||||||
mockMessageConsumer.verify();
|
verify(messageConsumer).close();
|
||||||
mockSession.verify();
|
verify(session).close();
|
||||||
mockConnection.verify();
|
verify(connection).setExceptionListener(this.container);
|
||||||
mockConnectionFactory.verify();
|
verify(connection).start();
|
||||||
|
verify(connection).close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -17,6 +17,13 @@
|
||||||
package org.springframework.jms.listener.adapter;
|
package org.springframework.jms.listener.adapter;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.BDDMockito.willThrow;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
|
||||||
import javax.jms.BytesMessage;
|
import javax.jms.BytesMessage;
|
||||||
import javax.jms.InvalidDestinationException;
|
import javax.jms.InvalidDestinationException;
|
||||||
|
|
@ -30,8 +37,9 @@ import javax.jms.Topic;
|
||||||
import javax.jms.TopicPublisher;
|
import javax.jms.TopicPublisher;
|
||||||
import javax.jms.TopicSession;
|
import javax.jms.TopicSession;
|
||||||
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
|
import org.mockito.stubbing.Answer;
|
||||||
import org.springframework.jms.support.converter.SimpleMessageConverter102;
|
import org.springframework.jms.support.converter.SimpleMessageConverter102;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -40,6 +48,7 @@ import org.springframework.jms.support.converter.SimpleMessageConverter102;
|
||||||
* @author Rick Evans
|
* @author Rick Evans
|
||||||
* @author Chris Beams
|
* @author Chris Beams
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public final class MessageListenerAdapter102Tests {
|
public final class MessageListenerAdapter102Tests {
|
||||||
|
|
||||||
private static final String TEXT = "The Runaways";
|
private static final String TEXT = "The Runaways";
|
||||||
|
|
@ -50,48 +59,36 @@ public final class MessageListenerAdapter102Tests {
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageContentsDelegateForBytesMessage() throws Exception {
|
public void testWithMessageContentsDelegateForBytesMessage() throws Exception {
|
||||||
|
|
||||||
MockControl mockBytesMessage = MockControl.createControl(BytesMessage.class);
|
BytesMessage bytesMessage = mock(BytesMessage.class);
|
||||||
BytesMessage bytesMessage = (BytesMessage) mockBytesMessage.getMock();
|
|
||||||
// BytesMessage contents must be unwrapped...
|
// BytesMessage contents must be unwrapped...
|
||||||
bytesMessage.readBytes(null);
|
given(bytesMessage.readBytes(any(byte[].class))).willAnswer(new Answer<Integer>() {
|
||||||
mockBytesMessage.setMatcher(MockControl.ALWAYS_MATCHER);
|
@Override
|
||||||
mockBytesMessage.setReturnValue(TEXT.getBytes().length);
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
mockBytesMessage.replay();
|
byte[] bytes = (byte[]) invocation.getArguments()[0];
|
||||||
|
ByteArrayInputStream inputStream = new ByteArrayInputStream(TEXT.getBytes());
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageContentsDelegate.class);
|
return inputStream.read(bytes);
|
||||||
MessageContentsDelegate delegate = (MessageContentsDelegate) mockDelegate.getMock();
|
}
|
||||||
delegate.handleMessage(TEXT.getBytes());
|
});
|
||||||
mockDelegate.setMatcher(MockControl.ALWAYS_MATCHER);
|
MessageContentsDelegate delegate = mock(MessageContentsDelegate.class);
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate);
|
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate);
|
||||||
adapter.onMessage(bytesMessage);
|
adapter.onMessage(bytesMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(TEXT.getBytes());
|
||||||
mockBytesMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageDelegate() throws Exception {
|
public void testWithMessageDelegate() throws Exception {
|
||||||
|
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
MessageDelegate delegate = mock(MessageDelegate.class);
|
||||||
mockTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageDelegate.class);
|
|
||||||
MessageDelegate delegate = (MessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(textMessage);
|
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate);
|
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate);
|
||||||
// we DON'T want the default SimpleMessageConversion happening...
|
// we DON'T want the default SimpleMessageConversion happening...
|
||||||
adapter.setMessageConverter(null);
|
adapter.setMessageConverter(null);
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(textMessage);
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -104,69 +101,38 @@ public final class MessageListenerAdapter102Tests {
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegate_DoesNotSendReturnTextMessageIfNoSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegate_DoesNotSendReturnTextMessageIfNoSessionSupplied() throws Exception {
|
||||||
|
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
|
||||||
mockTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
given(delegate.handleMessage(textMessage)).willReturn(TEXT);
|
||||||
delegate.handleMessage(textMessage);
|
|
||||||
mockDelegate.setReturnValue(TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate);
|
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate);
|
||||||
// we DON'T want the default SimpleMessageConversion happening...
|
// we DON'T want the default SimpleMessageConversion happening...
|
||||||
adapter.setMessageConverter(null);
|
adapter.setMessageConverter(null);
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(textMessage);
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateWithDefaultDestination_SendsReturnTextMessageWhenSessionSuppliedForQueue() throws Exception {
|
public void testWithResponsiveMessageDelegateWithDefaultDestination_SendsReturnTextMessageWhenSessionSuppliedForQueue() throws Exception {
|
||||||
|
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(null);
|
||||||
mockSentTextMessage.setReturnValue(null); // we want to fall back to the default...
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
QueueSender queueSender = mock(QueueSender.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
QueueSession session = mock(QueueSession.class);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
mockResponseTextMessage.replay();
|
given(session.createSender(destination)).willReturn(queueSender);
|
||||||
|
|
||||||
MockControl mockQueueSender = MockControl.createControl(QueueSender.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
QueueSender queueSender = (QueueSender) mockQueueSender.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
queueSender.send(responseTextMessage);
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
queueSender.close();
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
mockQueueSender.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
|
||||||
QueueSession session = (QueueSession) mockSession.getMock();
|
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createSender(destination);
|
|
||||||
mockSession.setReturnValue(queueSender);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -177,58 +143,30 @@ public final class MessageListenerAdapter102Tests {
|
||||||
adapter.setDefaultResponseDestination(destination);
|
adapter.setDefaultResponseDestination(destination);
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(queueSender).send(responseTextMessage);
|
||||||
mockResponseTextMessage.verify();
|
verify(queueSender).close();
|
||||||
mockSession.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockDestination.verify();
|
|
||||||
mockQueueSender.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateWithDefaultDestination_SendsReturnTextMessageWhenSessionSuppliedForTopic() throws Exception {
|
public void testWithResponsiveMessageDelegateWithDefaultDestination_SendsReturnTextMessageWhenSessionSuppliedForTopic() throws Exception {
|
||||||
|
|
||||||
MockControl mockDestination = MockControl.createControl(Topic.class);
|
Topic destination = mock(Topic.class);
|
||||||
Topic destination = (Topic) mockDestination.getMock();
|
TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(null); // we want to fall back to the default...
|
||||||
mockSentTextMessage.setReturnValue(null); // we want to fall back to the default...
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
TopicPublisher topicPublisher = mock(TopicPublisher.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
TopicSession session = mock(TopicSession.class);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
mockResponseTextMessage.replay();
|
given(session.createPublisher(destination)).willReturn(topicPublisher);
|
||||||
|
|
||||||
MockControl mockTopicPublisher = MockControl.createControl(TopicPublisher.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
TopicPublisher topicPublisher = (TopicPublisher) mockTopicPublisher.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
topicPublisher.publish(responseTextMessage);
|
|
||||||
mockTopicPublisher.setVoidCallable();
|
|
||||||
topicPublisher.close();
|
|
||||||
mockTopicPublisher.setVoidCallable();
|
|
||||||
mockTopicPublisher.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(TopicSession.class);
|
|
||||||
TopicSession session = (TopicSession) mockSession.getMock();
|
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createPublisher(destination);
|
|
||||||
mockSession.setReturnValue(topicPublisher);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -239,58 +177,30 @@ public final class MessageListenerAdapter102Tests {
|
||||||
adapter.setDefaultResponseDestination(destination);
|
adapter.setDefaultResponseDestination(destination);
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(topicPublisher).publish(responseTextMessage);
|
||||||
mockResponseTextMessage.verify();
|
verify(topicPublisher).close();
|
||||||
mockSession.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockDestination.verify();
|
|
||||||
mockTopicPublisher.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
||||||
|
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(destination);
|
||||||
mockSentTextMessage.setReturnValue(destination);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
QueueSender queueSender = mock(QueueSender.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
QueueSession session = mock(QueueSession.class);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
mockResponseTextMessage.replay();
|
given(session.createSender(destination)).willReturn(queueSender);
|
||||||
|
|
||||||
MockControl mockQueueSender = MockControl.createControl(QueueSender.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
QueueSender queueSender = (QueueSender) mockQueueSender.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
queueSender.send(responseTextMessage);
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
queueSender.close();
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
mockQueueSender.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
|
||||||
QueueSession session = (QueueSession) mockSession.getMock();
|
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createSender(destination);
|
|
||||||
mockSession.setReturnValue(queueSender);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -300,44 +210,29 @@ public final class MessageListenerAdapter102Tests {
|
||||||
};
|
};
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockSentTextMessage.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockResponseTextMessage.verify();
|
verify(queueSender).send(responseTextMessage);
|
||||||
mockSession.verify();
|
verify(queueSender).close();
|
||||||
mockDestination.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockQueueSender.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateNoDefaultDestinationAndNoReplyToDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateNoDefaultDestinationAndNoReplyToDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(null);
|
||||||
mockSentTextMessage.setReturnValue(null);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
|
||||||
mockResponseTextMessage.setVoidCallable();
|
|
||||||
mockResponseTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
final QueueSession session = mock(QueueSession.class);
|
||||||
final QueueSession session = (QueueSession) mockSession.getMock();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
final MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -350,57 +245,31 @@ public final class MessageListenerAdapter102Tests {
|
||||||
fail("expected InvalidDestinationException");
|
fail("expected InvalidDestinationException");
|
||||||
} catch (InvalidDestinationException ex) { /* expected */ }
|
} catch (InvalidDestinationException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockResponseTextMessage.verify();
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied_AndSendingThrowsJMSException() throws Exception {
|
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied_AndSendingThrowsJMSException() throws Exception {
|
||||||
|
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(destination);
|
||||||
mockSentTextMessage.setReturnValue(destination);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
QueueSender queueSender = mock(QueueSender.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
willThrow(new JMSException("Doe!")).given(queueSender).send(responseTextMessage);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
|
||||||
mockResponseTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockQueueSender = MockControl.createControl(QueueSender.class);
|
|
||||||
QueueSender queueSender = (QueueSender) mockQueueSender.getMock();
|
|
||||||
queueSender.send(responseTextMessage);
|
|
||||||
mockQueueSender.setThrowable(new JMSException("Dow!"));
|
|
||||||
// ensure that regardless of a JMSException the producer is closed...
|
// ensure that regardless of a JMSException the producer is closed...
|
||||||
queueSender.close();
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
mockQueueSender.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
final QueueSession session = mock(QueueSession.class);
|
||||||
final QueueSession session = (QueueSession) mockSession.getMock();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
given(session.createSender(destination)).willReturn(queueSender);
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createSender(destination);
|
|
||||||
mockSession.setReturnValue(queueSender);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
final MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -413,30 +282,20 @@ public final class MessageListenerAdapter102Tests {
|
||||||
fail("expected JMSException");
|
fail("expected JMSException");
|
||||||
} catch (JMSException ex) { /* expected */ }
|
} catch (JMSException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockSentTextMessage.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockResponseTextMessage.verify();
|
verify(queueSender).close();
|
||||||
mockSession.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockDestination.verify();
|
|
||||||
mockQueueSender.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateDoesNotSendReturnTextMessageWhenSessionSupplied_AndListenerMethodThrowsException() throws Exception {
|
public void testWithResponsiveMessageDelegateDoesNotSendReturnTextMessageWhenSessionSupplied_AndListenerMethodThrowsException() throws Exception {
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
final QueueSession session = mock(QueueSession.class);
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
final QueueSession session = (QueueSession) mockSession.getMock();
|
willThrow(new IllegalArgumentException("Doe!")).given(delegate).handleMessage(sentTextMessage);
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setThrowable(new IllegalArgumentException("Dow!"));
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
final MessageListenerAdapter102 adapter = new MessageListenerAdapter102(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -448,10 +307,6 @@ public final class MessageListenerAdapter102Tests {
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
fail("expected ListenerExecutionFailedException");
|
fail("expected ListenerExecutionFailedException");
|
||||||
} catch (ListenerExecutionFailedException ex) { /* expected */ }
|
} catch (ListenerExecutionFailedException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockSentTextMessage.verify();
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,8 +16,19 @@
|
||||||
|
|
||||||
package org.springframework.jms.listener.adapter;
|
package org.springframework.jms.listener.adapter;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.BDDMockito.willThrow;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.jms.BytesMessage;
|
import javax.jms.BytesMessage;
|
||||||
|
|
@ -33,9 +44,9 @@ import javax.jms.QueueSession;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
|
import org.mockito.stubbing.Answer;
|
||||||
import org.springframework.jms.support.converter.MessageConversionException;
|
import org.springframework.jms.support.converter.MessageConversionException;
|
||||||
import org.springframework.jms.support.converter.SimpleMessageConverter;
|
import org.springframework.jms.support.converter.SimpleMessageConverter;
|
||||||
|
|
||||||
|
|
@ -59,161 +70,110 @@ public class MessageListenerAdapterTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageContentsDelegateForTextMessage() throws Exception {
|
public void testWithMessageContentsDelegateForTextMessage() throws Exception {
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
|
||||||
// TextMessage contents must be unwrapped...
|
// TextMessage contents must be unwrapped...
|
||||||
textMessage.getText();
|
given(textMessage.getText()).willReturn(TEXT);
|
||||||
mockTextMessage.setReturnValue(TEXT);
|
|
||||||
mockTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageContentsDelegate.class);
|
MessageContentsDelegate delegate = mock(MessageContentsDelegate.class);
|
||||||
MessageContentsDelegate delegate = (MessageContentsDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(TEXT);
|
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(TEXT);
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageContentsDelegateForBytesMessage() throws Exception {
|
public void testWithMessageContentsDelegateForBytesMessage() throws Exception {
|
||||||
MockControl mockBytesMessage = MockControl.createControl(BytesMessage.class);
|
BytesMessage bytesMessage = mock(BytesMessage.class);
|
||||||
BytesMessage bytesMessage = (BytesMessage) mockBytesMessage.getMock();
|
|
||||||
// BytesMessage contents must be unwrapped...
|
// BytesMessage contents must be unwrapped...
|
||||||
bytesMessage.getBodyLength();
|
given(bytesMessage.getBodyLength()).willReturn(new Long(TEXT.getBytes().length));
|
||||||
mockBytesMessage.setReturnValue(TEXT.getBytes().length);
|
given(bytesMessage.readBytes(any(byte[].class))).willAnswer(new Answer<Integer>() {
|
||||||
bytesMessage.readBytes(null);
|
@Override
|
||||||
mockBytesMessage.setMatcher(MockControl.ALWAYS_MATCHER);
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
mockBytesMessage.setReturnValue(TEXT.getBytes().length);
|
byte[] bytes = (byte[]) invocation.getArguments()[0];
|
||||||
mockBytesMessage.replay();
|
ByteArrayInputStream inputStream = new ByteArrayInputStream(TEXT.getBytes());
|
||||||
|
return inputStream.read(bytes);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageContentsDelegate.class);
|
MessageContentsDelegate delegate = mock(MessageContentsDelegate.class);
|
||||||
MessageContentsDelegate delegate = (MessageContentsDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(TEXT.getBytes());
|
|
||||||
mockDelegate.setMatcher(MockControl.ALWAYS_MATCHER);
|
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
||||||
adapter.onMessage(bytesMessage);
|
adapter.onMessage(bytesMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(TEXT.getBytes());
|
||||||
mockBytesMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageContentsDelegateForObjectMessage() throws Exception {
|
public void testWithMessageContentsDelegateForObjectMessage() throws Exception {
|
||||||
MockControl mockObjectMessage = MockControl.createControl(ObjectMessage.class);
|
ObjectMessage objectMessage = mock(ObjectMessage.class);
|
||||||
ObjectMessage objectMessage = (ObjectMessage) mockObjectMessage.getMock();
|
given(objectMessage.getObject()).willReturn(NUMBER);
|
||||||
objectMessage.getObject();
|
|
||||||
mockObjectMessage.setReturnValue(NUMBER);
|
|
||||||
mockObjectMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageContentsDelegate.class);
|
MessageContentsDelegate delegate = mock(MessageContentsDelegate.class);
|
||||||
MessageContentsDelegate delegate = (MessageContentsDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(NUMBER);
|
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
||||||
adapter.onMessage(objectMessage);
|
adapter.onMessage(objectMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(NUMBER);
|
||||||
mockObjectMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageContentsDelegateForObjectMessageWithPlainObject() throws Exception {
|
public void testWithMessageContentsDelegateForObjectMessageWithPlainObject() throws Exception {
|
||||||
MockControl mockObjectMessage = MockControl.createControl(ObjectMessage.class);
|
ObjectMessage objectMessage = mock(ObjectMessage.class);
|
||||||
ObjectMessage objectMessage = (ObjectMessage) mockObjectMessage.getMock();
|
given(objectMessage.getObject()).willReturn(OBJECT);
|
||||||
objectMessage.getObject();
|
|
||||||
mockObjectMessage.setReturnValue(OBJECT);
|
|
||||||
mockObjectMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageContentsDelegate.class);
|
MessageContentsDelegate delegate = mock(MessageContentsDelegate.class);
|
||||||
MessageContentsDelegate delegate = (MessageContentsDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(OBJECT);
|
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
||||||
adapter.onMessage(objectMessage);
|
adapter.onMessage(objectMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(OBJECT);
|
||||||
mockObjectMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithMessageDelegate() throws Exception {
|
public void testWithMessageDelegate() throws Exception {
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
|
||||||
mockTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageDelegate.class);
|
MessageDelegate delegate = mock(MessageDelegate.class);
|
||||||
MessageDelegate delegate = (MessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(textMessage);
|
|
||||||
mockDelegate.setVoidCallable();
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
||||||
// we DON'T want the default SimpleMessageConversion happening...
|
// we DON'T want the default SimpleMessageConversion happening...
|
||||||
adapter.setMessageConverter(null);
|
adapter.setMessageConverter(null);
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(delegate).handleMessage(textMessage);
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWhenTheAdapterItselfIsTheDelegate() throws Exception {
|
public void testWhenTheAdapterItselfIsTheDelegate() throws Exception {
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
|
||||||
// TextMessage contents must be unwrapped...
|
// TextMessage contents must be unwrapped...
|
||||||
textMessage.getText();
|
given(textMessage.getText()).willReturn(TEXT);
|
||||||
mockTextMessage.setReturnValue(TEXT);
|
|
||||||
mockTextMessage.replay();
|
|
||||||
|
|
||||||
StubMessageListenerAdapter adapter = new StubMessageListenerAdapter();
|
StubMessageListenerAdapter adapter = new StubMessageListenerAdapter();
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
assertTrue(adapter.wasCalled());
|
assertTrue(adapter.wasCalled());
|
||||||
|
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRainyDayWithNoApplicableHandlingMethods() throws Exception {
|
public void testRainyDayWithNoApplicableHandlingMethods() throws Exception {
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
|
||||||
// TextMessage contents must be unwrapped...
|
// TextMessage contents must be unwrapped...
|
||||||
textMessage.getText();
|
given(textMessage.getText()).willReturn(TEXT);
|
||||||
mockTextMessage.setReturnValue(TEXT);
|
|
||||||
mockTextMessage.replay();
|
|
||||||
|
|
||||||
StubMessageListenerAdapter adapter = new StubMessageListenerAdapter();
|
StubMessageListenerAdapter adapter = new StubMessageListenerAdapter();
|
||||||
adapter.setDefaultListenerMethod("walnutsRock");
|
adapter.setDefaultListenerMethod("walnutsRock");
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
assertFalse(adapter.wasCalled());
|
assertFalse(adapter.wasCalled());
|
||||||
|
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testThatAnExceptionThrownFromTheHandlingMethodIsSimplySwallowedByDefault() throws Exception {
|
public void testThatAnExceptionThrownFromTheHandlingMethodIsSimplySwallowedByDefault() throws Exception {
|
||||||
final IllegalArgumentException exception = new IllegalArgumentException();
|
final IllegalArgumentException exception = new IllegalArgumentException();
|
||||||
|
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
MessageDelegate delegate = mock(MessageDelegate.class);
|
||||||
mockTextMessage.replay();
|
willThrow(exception).given(delegate).handleMessage(textMessage);
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(MessageDelegate.class);
|
|
||||||
MessageDelegate delegate = (MessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(textMessage);
|
|
||||||
mockDelegate.setThrowable(exception);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -230,9 +190,6 @@ public class MessageListenerAdapterTests {
|
||||||
// we DON'T want the default SimpleMessageConversion happening...
|
// we DON'T want the default SimpleMessageConversion happening...
|
||||||
adapter.setMessageConverter(null);
|
adapter.setMessageConverter(null);
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -257,68 +214,35 @@ public class MessageListenerAdapterTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegate_DoesNotSendReturnTextMessageIfNoSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegate_DoesNotSendReturnTextMessageIfNoSessionSupplied() throws Exception {
|
||||||
MockControl mockTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage textMessage = mock(TextMessage.class);
|
||||||
TextMessage textMessage = (TextMessage) mockTextMessage.getMock();
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
mockTextMessage.replay();
|
given(delegate.handleMessage(textMessage)).willReturn(TEXT);
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(textMessage);
|
|
||||||
mockDelegate.setReturnValue(TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
|
||||||
// we DON'T want the default SimpleMessageConversion happening...
|
// we DON'T want the default SimpleMessageConversion happening...
|
||||||
adapter.setMessageConverter(null);
|
adapter.setMessageConverter(null);
|
||||||
adapter.onMessage(textMessage);
|
adapter.onMessage(textMessage);
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockTextMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateWithDefaultDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateWithDefaultDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
CORRELATION_ID);
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(null); // we want to fall back to the default...
|
||||||
mockSentTextMessage.setReturnValue(null); // we want to fall back to the default...
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
|
||||||
mockResponseTextMessage.setVoidCallable();
|
|
||||||
mockResponseTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockQueueSender = MockControl.createControl(QueueSender.class);
|
QueueSender queueSender = mock(QueueSender.class);
|
||||||
QueueSender queueSender = (QueueSender) mockQueueSender.getMock();
|
Session session = mock(Session.class);
|
||||||
queueSender.send(responseTextMessage);
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
mockQueueSender.setVoidCallable();
|
given(session.createProducer(destination)).willReturn(queueSender);
|
||||||
queueSender.close();
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
mockQueueSender.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createProducer(destination);
|
|
||||||
mockSession.setReturnValue(queueSender);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -329,59 +253,30 @@ public class MessageListenerAdapterTests {
|
||||||
adapter.setDefaultResponseDestination(destination);
|
adapter.setDefaultResponseDestination(destination);
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(queueSender).send(responseTextMessage);
|
||||||
mockResponseTextMessage.verify();
|
verify(queueSender).close();
|
||||||
mockSession.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockDestination.verify();
|
|
||||||
mockQueueSender.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(null);
|
||||||
mockSentTextMessage.setReturnValue(null);
|
given(sentTextMessage.getJMSMessageID()).willReturn(CORRELATION_ID);
|
||||||
sentTextMessage.getJMSMessageID();
|
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(destination);
|
||||||
mockSentTextMessage.setReturnValue(destination);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
Session session = mock(Session.class);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
mockResponseTextMessage.replay();
|
given(session.createProducer(destination)).willReturn(messageProducer);
|
||||||
|
|
||||||
MockControl mockMessageProducer = MockControl.createControl(MessageProducer.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
MessageProducer messageProducer = (MessageProducer) mockMessageProducer.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
messageProducer.send(responseTextMessage);
|
|
||||||
mockMessageProducer.setVoidCallable();
|
|
||||||
messageProducer.close();
|
|
||||||
mockMessageProducer.setVoidCallable();
|
|
||||||
mockMessageProducer.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createProducer(destination);
|
|
||||||
mockSession.setReturnValue(messageProducer);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -391,43 +286,26 @@ public class MessageListenerAdapterTests {
|
||||||
};
|
};
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(messageProducer).send(responseTextMessage);
|
||||||
mockResponseTextMessage.verify();
|
verify(messageProducer).close();
|
||||||
mockSession.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockDestination.verify();
|
|
||||||
mockMessageProducer.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateNoDefaultDestinationAndNoReplyToDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateNoDefaultDestinationAndNoReplyToDestination_SendsReturnTextMessageWhenSessionSupplied() throws Exception {
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(null);
|
||||||
mockSentTextMessage.setReturnValue(null);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
final QueueSession session = mock(QueueSession.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
|
||||||
mockResponseTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
final QueueSession session = (QueueSession) mockSession.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -440,56 +318,30 @@ public class MessageListenerAdapterTests {
|
||||||
fail("expected InvalidDestinationException");
|
fail("expected InvalidDestinationException");
|
||||||
} catch(InvalidDestinationException ex) { /* expected */ }
|
} catch(InvalidDestinationException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockResponseTextMessage.verify();
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied_AndSendingThrowsJMSException() throws Exception {
|
public void testWithResponsiveMessageDelegateNoDefaultDestination_SendsReturnTextMessageWhenSessionSupplied_AndSendingThrowsJMSException() throws Exception {
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(destination);
|
||||||
mockSentTextMessage.setReturnValue(destination);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseTextMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseTextMessage = mock(TextMessage.class);
|
||||||
TextMessage responseTextMessage = (TextMessage) mockResponseTextMessage.getMock();
|
MessageProducer messageProducer = mock(MessageProducer.class);
|
||||||
responseTextMessage.setJMSCorrelationID(CORRELATION_ID);
|
willThrow(new JMSException("Doe!")).given(messageProducer).send(responseTextMessage);
|
||||||
mockResponseTextMessage.setVoidCallable();
|
|
||||||
mockResponseTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockMessageProducer = MockControl.createControl(MessageProducer.class);
|
final QueueSession session = mock(QueueSession.class);
|
||||||
MessageProducer messageProducer = (MessageProducer) mockMessageProducer.getMock();
|
given(session.createTextMessage(RESPONSE_TEXT)).willReturn(responseTextMessage);
|
||||||
messageProducer.send(responseTextMessage);
|
given(session.createProducer(destination)).willReturn(messageProducer);
|
||||||
mockMessageProducer.setThrowable(new JMSException("Dow!"));
|
|
||||||
// ensure that regardless of a JMSException the producer is closed...
|
|
||||||
messageProducer.close();
|
|
||||||
mockMessageProducer.setVoidCallable();
|
|
||||||
mockMessageProducer.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
final QueueSession session = (QueueSession) mockSession.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
session.createTextMessage(RESPONSE_TEXT);
|
|
||||||
mockSession.setReturnValue(responseTextMessage);
|
|
||||||
session.createProducer(destination);
|
|
||||||
mockSession.setReturnValue(messageProducer);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -502,29 +354,18 @@ public class MessageListenerAdapterTests {
|
||||||
fail("expected JMSException");
|
fail("expected JMSException");
|
||||||
} catch(JMSException ex) { /* expected */ }
|
} catch(JMSException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
verify(responseTextMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockSentTextMessage.verify();
|
verify(messageProducer).close();
|
||||||
mockResponseTextMessage.verify();
|
verify(delegate).handleMessage(sentTextMessage);
|
||||||
mockSession.verify();
|
|
||||||
mockDestination.verify();
|
|
||||||
mockMessageProducer.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateDoesNotSendReturnTextMessageWhenSessionSupplied_AndListenerMethodThrowsException() throws Exception {
|
public void testWithResponsiveMessageDelegateDoesNotSendReturnTextMessageWhenSessionSupplied_AndListenerMethodThrowsException() throws Exception {
|
||||||
MockControl mockMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage message = mock(TextMessage.class);
|
||||||
final TextMessage message = (TextMessage) mockMessage.getMock();
|
final QueueSession session = mock(QueueSession.class);
|
||||||
mockMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
final QueueSession session = (QueueSession) mockSession.getMock();
|
willThrow(new IllegalArgumentException("Doe!")).given(delegate).handleMessage(message);
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(message);
|
|
||||||
mockDelegate.setThrowable(new IllegalArgumentException("Dow!"));
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -536,20 +377,12 @@ public class MessageListenerAdapterTests {
|
||||||
adapter.onMessage(message, session);
|
adapter.onMessage(message, session);
|
||||||
fail("expected ListenerExecutionFailedException");
|
fail("expected ListenerExecutionFailedException");
|
||||||
} catch(ListenerExecutionFailedException ex) { /* expected */ }
|
} catch(ListenerExecutionFailedException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockMessage.verify();
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFailsIfNoDefaultListenerMethodNameIsSupplied() throws Exception {
|
public void testFailsIfNoDefaultListenerMethodNameIsSupplied() throws Exception {
|
||||||
MockControl mockMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage message = mock(TextMessage.class);
|
||||||
final TextMessage message = (TextMessage) mockMessage.getMock();
|
given(message.getText()).willReturn(TEXT);
|
||||||
message.getText();
|
|
||||||
mockMessage.setReturnValue(TEXT);
|
|
||||||
|
|
||||||
mockMessage.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter() {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -559,18 +392,12 @@ public class MessageListenerAdapterTests {
|
||||||
};
|
};
|
||||||
adapter.setDefaultListenerMethod(null);
|
adapter.setDefaultListenerMethod(null);
|
||||||
adapter.onMessage(message);
|
adapter.onMessage(message);
|
||||||
|
|
||||||
mockMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFailsWhenOverriddenGetListenerMethodNameReturnsNull() throws Exception {
|
public void testFailsWhenOverriddenGetListenerMethodNameReturnsNull() throws Exception {
|
||||||
MockControl mockMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage message = mock(TextMessage.class);
|
||||||
final TextMessage message = (TextMessage) mockMessage.getMock();
|
given(message.getText()).willReturn(TEXT);
|
||||||
message.getText();
|
|
||||||
mockMessage.setReturnValue(TEXT);
|
|
||||||
|
|
||||||
mockMessage.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter() {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -584,25 +411,14 @@ public class MessageListenerAdapterTests {
|
||||||
};
|
};
|
||||||
adapter.setDefaultListenerMethod(null);
|
adapter.setDefaultListenerMethod(null);
|
||||||
adapter.onMessage(message);
|
adapter.onMessage(message);
|
||||||
|
|
||||||
mockMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateWhenReturnTypeIsNotAJMSMessageAndNoMessageConverterIsSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateWhenReturnTypeIsNotAJMSMessageAndNoMessageConverterIsSupplied() throws Exception {
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
final Session session = mock(Session.class);
|
||||||
mockSentTextMessage.replay();
|
ResponsiveMessageDelegate delegate = mock(ResponsiveMessageDelegate.class);
|
||||||
|
given(delegate.handleMessage(sentTextMessage)).willReturn(RESPONSE_TEXT);
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) mockSession.getMock();
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveMessageDelegate.class);
|
|
||||||
ResponsiveMessageDelegate delegate = (ResponsiveMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(RESPONSE_TEXT);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -615,53 +431,25 @@ public class MessageListenerAdapterTests {
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
fail("expected MessageConversionException");
|
fail("expected MessageConversionException");
|
||||||
} catch(MessageConversionException ex) { /* expected */ }
|
} catch(MessageConversionException ex) { /* expected */ }
|
||||||
|
|
||||||
mockDelegate.verify();
|
|
||||||
mockSentTextMessage.verify();
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithResponsiveMessageDelegateWhenReturnTypeIsAJMSMessageAndNoMessageConverterIsSupplied() throws Exception {
|
public void testWithResponsiveMessageDelegateWhenReturnTypeIsAJMSMessageAndNoMessageConverterIsSupplied() throws Exception {
|
||||||
MockControl mockDestination = MockControl.createControl(Queue.class);
|
Queue destination = mock(Queue.class);
|
||||||
Queue destination = (Queue) mockDestination.getMock();
|
final TextMessage sentTextMessage = mock(TextMessage.class);
|
||||||
mockDestination.replay();
|
|
||||||
|
|
||||||
MockControl mockSentTextMessage = MockControl.createControl(TextMessage.class);
|
|
||||||
final TextMessage sentTextMessage = (TextMessage) mockSentTextMessage.getMock();
|
|
||||||
// correlation ID is queried when response is being created...
|
// correlation ID is queried when response is being created...
|
||||||
sentTextMessage.getJMSCorrelationID();
|
given(sentTextMessage.getJMSCorrelationID()).willReturn(CORRELATION_ID);
|
||||||
mockSentTextMessage.setReturnValue(CORRELATION_ID);
|
|
||||||
// Reply-To is queried when response is being created...
|
// Reply-To is queried when response is being created...
|
||||||
sentTextMessage.getJMSReplyTo();
|
given(sentTextMessage.getJMSReplyTo()).willReturn(destination);
|
||||||
mockSentTextMessage.setReturnValue(destination);
|
|
||||||
mockSentTextMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockResponseMessage = MockControl.createControl(TextMessage.class);
|
TextMessage responseMessage = mock(TextMessage.class);
|
||||||
TextMessage responseMessage = (TextMessage) mockResponseMessage.getMock();
|
QueueSender queueSender = mock(QueueSender.class);
|
||||||
responseMessage.setJMSCorrelationID(CORRELATION_ID);
|
|
||||||
mockResponseMessage.setVoidCallable();
|
|
||||||
mockResponseMessage.replay();
|
|
||||||
|
|
||||||
MockControl mockQueueSender = MockControl.createControl(QueueSender.class);
|
Session session = mock(Session.class);
|
||||||
QueueSender queueSender = (QueueSender) mockQueueSender.getMock();
|
given(session.createProducer(destination)).willReturn(queueSender);
|
||||||
queueSender.send(responseMessage);
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
queueSender.close();
|
|
||||||
mockQueueSender.setVoidCallable();
|
|
||||||
mockQueueSender.replay();
|
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
ResponsiveJmsTextMessageReturningMessageDelegate delegate = mock(ResponsiveJmsTextMessageReturningMessageDelegate.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
given(delegate.handleMessage(sentTextMessage)).willReturn(responseMessage);
|
||||||
session.createProducer(destination);
|
|
||||||
mockSession.setReturnValue(queueSender);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDelegate = MockControl.createControl(ResponsiveJmsTextMessageReturningMessageDelegate.class);
|
|
||||||
ResponsiveJmsTextMessageReturningMessageDelegate delegate = (ResponsiveJmsTextMessageReturningMessageDelegate) mockDelegate.getMock();
|
|
||||||
delegate.handleMessage(sentTextMessage);
|
|
||||||
mockDelegate.setReturnValue(responseMessage);
|
|
||||||
mockDelegate.replay();
|
|
||||||
|
|
||||||
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
final MessageListenerAdapter adapter = new MessageListenerAdapter(delegate) {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -672,12 +460,9 @@ public class MessageListenerAdapterTests {
|
||||||
adapter.setMessageConverter(null);
|
adapter.setMessageConverter(null);
|
||||||
adapter.onMessage(sentTextMessage, session);
|
adapter.onMessage(sentTextMessage, session);
|
||||||
|
|
||||||
mockDestination.verify();
|
verify(responseMessage).setJMSCorrelationID(CORRELATION_ID);
|
||||||
mockDelegate.verify();
|
verify(queueSender).send(responseMessage);
|
||||||
mockSentTextMessage.verify();
|
verify(queueSender).close();
|
||||||
mockSession.verify();
|
|
||||||
mockQueueSender.verify();
|
|
||||||
mockResponseMessage.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,14 @@
|
||||||
|
|
||||||
package org.springframework.jms.listener.endpoint;
|
package org.springframework.jms.listener.endpoint;
|
||||||
|
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import javax.jms.Destination;
|
import javax.jms.Destination;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
import org.springframework.jca.StubResourceAdapter;
|
import org.springframework.jca.StubResourceAdapter;
|
||||||
import org.springframework.jms.StubQueue;
|
import org.springframework.jms.StubQueue;
|
||||||
import org.springframework.jms.support.destination.DestinationResolver;
|
import org.springframework.jms.support.destination.DestinationResolver;
|
||||||
|
|
@ -60,12 +62,10 @@ public class DefaultJmsActivationSpecFactoryTests extends TestCase {
|
||||||
public void testWebSphereResourceAdapterSetup() throws Exception {
|
public void testWebSphereResourceAdapterSetup() throws Exception {
|
||||||
Destination destination = new StubQueue();
|
Destination destination = new StubQueue();
|
||||||
|
|
||||||
MockControl control = MockControl.createControl(DestinationResolver.class);
|
DestinationResolver destinationResolver = mock(DestinationResolver.class);
|
||||||
DestinationResolver destinationResolver = (DestinationResolver) control.getMock();
|
|
||||||
|
|
||||||
destinationResolver.resolveDestinationName(null, "destinationname", false);
|
given(destinationResolver.resolveDestinationName(null, "destinationname",
|
||||||
control.setReturnValue(destination);
|
false)).willReturn(destination);
|
||||||
control.replay();
|
|
||||||
|
|
||||||
DefaultJmsActivationSpecFactory activationSpecFactory = new DefaultJmsActivationSpecFactory();
|
DefaultJmsActivationSpecFactory activationSpecFactory = new DefaultJmsActivationSpecFactory();
|
||||||
activationSpecFactory.setDestinationResolver(destinationResolver);
|
activationSpecFactory.setDestinationResolver(destinationResolver);
|
||||||
|
|
@ -73,8 +73,6 @@ public class DefaultJmsActivationSpecFactoryTests extends TestCase {
|
||||||
StubWebSphereActivationSpecImpl spec = (StubWebSphereActivationSpecImpl) activationSpecFactory
|
StubWebSphereActivationSpecImpl spec = (StubWebSphereActivationSpecImpl) activationSpecFactory
|
||||||
.createActivationSpec(new StubWebSphereResourceAdapterImpl(), activationSpecConfig);
|
.createActivationSpec(new StubWebSphereResourceAdapterImpl(), activationSpecConfig);
|
||||||
|
|
||||||
control.verify();
|
|
||||||
|
|
||||||
assertEquals(destination, spec.getDestination());
|
assertEquals(destination, spec.getDestination());
|
||||||
assertEquals(5, spec.getMaxConcurrency());
|
assertEquals(5, spec.getMaxConcurrency());
|
||||||
assertEquals(3, spec.getMaxBatchSize());
|
assertEquals(3, spec.getMaxBatchSize());
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,16 @@
|
||||||
|
|
||||||
package org.springframework.jms.remoting;
|
package org.springframework.jms.remoting;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
|
|
||||||
import javax.jms.Destination;
|
import javax.jms.Destination;
|
||||||
import javax.jms.JMSException;
|
import javax.jms.JMSException;
|
||||||
import javax.jms.Message;
|
import javax.jms.Message;
|
||||||
|
|
@ -30,71 +37,47 @@ import javax.jms.QueueConnectionFactory;
|
||||||
import javax.jms.QueueSession;
|
import javax.jms.QueueSession;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.junit.Before;
|
||||||
import org.easymock.MockControl;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.tests.sample.beans.ITestBean;
|
|
||||||
import org.springframework.tests.sample.beans.TestBean;
|
|
||||||
import org.springframework.jms.support.converter.MessageConversionException;
|
import org.springframework.jms.support.converter.MessageConversionException;
|
||||||
import org.springframework.jms.support.converter.SimpleMessageConverter;
|
import org.springframework.jms.support.converter.SimpleMessageConverter;
|
||||||
|
import org.springframework.tests.sample.beans.ITestBean;
|
||||||
|
import org.springframework.tests.sample.beans.TestBean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
*/
|
*/
|
||||||
public class JmsInvokerTests extends TestCase {
|
public class JmsInvokerTests {
|
||||||
|
|
||||||
private MockControl connectionFactoryControl;
|
|
||||||
private QueueConnectionFactory mockConnectionFactory;
|
private QueueConnectionFactory mockConnectionFactory;
|
||||||
|
|
||||||
private MockControl connectionControl;
|
|
||||||
private QueueConnection mockConnection;
|
private QueueConnection mockConnection;
|
||||||
|
|
||||||
private MockControl sessionControl;
|
|
||||||
private QueueSession mockSession;
|
private QueueSession mockSession;
|
||||||
|
|
||||||
private MockControl queueControl;
|
|
||||||
private Queue mockQueue;
|
private Queue mockQueue;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp() throws Exception {
|
public void setUpMocks() throws Exception {
|
||||||
connectionFactoryControl = MockControl.createControl(QueueConnectionFactory.class);
|
mockConnectionFactory = mock(QueueConnectionFactory.class);
|
||||||
mockConnectionFactory = (QueueConnectionFactory) connectionFactoryControl.getMock();
|
mockConnection = mock(QueueConnection.class);
|
||||||
|
mockSession = mock(QueueSession.class);
|
||||||
|
mockQueue = mock(Queue.class);
|
||||||
|
|
||||||
connectionControl = MockControl.createControl(QueueConnection.class);
|
given(mockConnectionFactory.createConnection()).willReturn(mockConnection);
|
||||||
mockConnection = (QueueConnection) connectionControl.getMock();
|
given(mockConnection.createSession(false, Session.AUTO_ACKNOWLEDGE)).willReturn(mockSession);
|
||||||
|
|
||||||
sessionControl = MockControl.createControl(QueueSession.class);
|
|
||||||
mockSession = (QueueSession) sessionControl.getMock();
|
|
||||||
|
|
||||||
queueControl = MockControl.createControl(Queue.class);
|
|
||||||
mockQueue = (Queue) queueControl.getMock();
|
|
||||||
|
|
||||||
mockConnectionFactory.createConnection();
|
|
||||||
connectionFactoryControl.setReturnValue(mockConnection, 8);
|
|
||||||
|
|
||||||
mockConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
connectionControl.setReturnValue(mockSession, 8);
|
|
||||||
|
|
||||||
mockConnection.start();
|
|
||||||
connectionControl.setVoidCallable(8);
|
|
||||||
|
|
||||||
connectionFactoryControl.replay();
|
|
||||||
connectionControl.replay();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testJmsInvokerProxyFactoryBeanAndServiceExporter() throws Throwable {
|
public void testJmsInvokerProxyFactoryBeanAndServiceExporter() throws Throwable {
|
||||||
sessionControl.replay();
|
|
||||||
|
|
||||||
doTestJmsInvokerProxyFactoryBeanAndServiceExporter(false);
|
doTestJmsInvokerProxyFactoryBeanAndServiceExporter(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testJmsInvokerProxyFactoryBeanAndServiceExporterWithDynamicQueue() throws Throwable {
|
public void testJmsInvokerProxyFactoryBeanAndServiceExporterWithDynamicQueue() throws Throwable {
|
||||||
mockSession.createQueue("myQueue");
|
given(mockSession.createQueue("myQueue")).willReturn(mockQueue);
|
||||||
sessionControl.setReturnValue(mockQueue, 8);
|
|
||||||
sessionControl.replay();
|
|
||||||
|
|
||||||
doTestJmsInvokerProxyFactoryBeanAndServiceExporter(true);
|
doTestJmsInvokerProxyFactoryBeanAndServiceExporter(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -110,14 +93,10 @@ public class JmsInvokerTests extends TestCase {
|
||||||
JmsInvokerProxyFactoryBean pfb = new JmsInvokerProxyFactoryBean() {
|
JmsInvokerProxyFactoryBean pfb = new JmsInvokerProxyFactoryBean() {
|
||||||
@Override
|
@Override
|
||||||
protected Message doExecuteRequest(Session session, Queue queue, Message requestMessage) throws JMSException {
|
protected Message doExecuteRequest(Session session, Queue queue, Message requestMessage) throws JMSException {
|
||||||
MockControl exporterSessionControl = MockControl.createControl(Session.class);
|
Session mockExporterSession = mock(Session.class);
|
||||||
Session mockExporterSession = (Session) exporterSessionControl.getMock();
|
|
||||||
ResponseStoringProducer mockProducer = new ResponseStoringProducer();
|
ResponseStoringProducer mockProducer = new ResponseStoringProducer();
|
||||||
mockExporterSession.createProducer(requestMessage.getJMSReplyTo());
|
given(mockExporterSession.createProducer(requestMessage.getJMSReplyTo())).willReturn(mockProducer);
|
||||||
exporterSessionControl.setReturnValue(mockProducer);
|
|
||||||
exporterSessionControl.replay();
|
|
||||||
exporter.onMessage(requestMessage, mockExporterSession);
|
exporter.onMessage(requestMessage, mockExporterSession);
|
||||||
exporterSessionControl.verify();
|
|
||||||
assertTrue(mockProducer.closed);
|
assertTrue(mockProducer.closed);
|
||||||
return mockProducer.response;
|
return mockProducer.response;
|
||||||
}
|
}
|
||||||
|
|
@ -156,10 +135,6 @@ public class JmsInvokerTests extends TestCase {
|
||||||
catch (IllegalAccessException ex) {
|
catch (IllegalAccessException ex) {
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
|
|
||||||
connectionFactoryControl.verify();
|
|
||||||
connectionControl.verify();
|
|
||||||
sessionControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,16 +16,24 @@
|
||||||
|
|
||||||
package org.springframework.jms.support;
|
package org.springframework.jms.support;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import org.easymock.ArgumentsMatcher;
|
import static org.junit.Assert.assertThat;
|
||||||
import org.easymock.MockControl;
|
import static org.mockito.BDDMockito.given;
|
||||||
import org.springframework.jms.support.converter.SimpleMessageConverter102;
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import javax.jms.BytesMessage;
|
import javax.jms.BytesMessage;
|
||||||
import javax.jms.JMSException;
|
import javax.jms.JMSException;
|
||||||
import javax.jms.Message;
|
import javax.jms.Message;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import java.util.Arrays;
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
|
import org.mockito.stubbing.Answer;
|
||||||
|
import org.springframework.jms.support.converter.SimpleMessageConverter102;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the {@link SimpleMessageConverter102} class.
|
* Unit tests for the {@link SimpleMessageConverter102} class.
|
||||||
|
|
@ -33,46 +41,28 @@ import java.util.Arrays;
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
* @author Rick Evans
|
* @author Rick Evans
|
||||||
*/
|
*/
|
||||||
public final class SimpleMessageConverter102Tests extends TestCase {
|
public final class SimpleMessageConverter102Tests {
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testByteArrayConversion102() throws JMSException {
|
public void testByteArrayConversion102() throws JMSException {
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
BytesMessage message = mock(BytesMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(BytesMessage.class);
|
|
||||||
BytesMessage message = (BytesMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
byte[] content = new byte[5000];
|
byte[] content = new byte[5000];
|
||||||
|
new Random().nextBytes(content);
|
||||||
|
|
||||||
session.createBytesMessage();
|
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content);
|
||||||
sessionControl.setReturnValue(message, 1);
|
given(session.createBytesMessage()).willReturn(message);
|
||||||
message.writeBytes(content);
|
given(message.readBytes(any(byte[].class))).willAnswer(new Answer<Integer>() {
|
||||||
messageControl.setVoidCallable(1);
|
|
||||||
message.readBytes(new byte[SimpleMessageConverter102.BUFFER_SIZE]);
|
|
||||||
messageControl.setMatcher(new ArgumentsMatcher() {
|
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Object[] arg0, Object[] arg1) {
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
byte[] one = (byte[]) arg0[0];
|
return byteArrayInputStream.read((byte[])invocation.getArguments()[0]);
|
||||||
byte[] two = (byte[]) arg1[0];
|
|
||||||
return Arrays.equals(one, two);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString(Object[] arg0) {
|
|
||||||
return "bla";
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
messageControl.setReturnValue(SimpleMessageConverter102.BUFFER_SIZE, 1);
|
|
||||||
message.readBytes(new byte[SimpleMessageConverter102.BUFFER_SIZE]);
|
|
||||||
messageControl.setReturnValue(5000 - SimpleMessageConverter102.BUFFER_SIZE, 1);
|
|
||||||
sessionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter102 converter = new SimpleMessageConverter102();
|
SimpleMessageConverter102 converter = new SimpleMessageConverter102();
|
||||||
Message msg = converter.toMessage(content, session);
|
Message msg = converter.toMessage(content, session);
|
||||||
assertEquals(content.length, ((byte[]) converter.fromMessage(msg)).length);
|
assertThat((byte[])converter.fromMessage(msg), equalTo(content));
|
||||||
|
|
||||||
sessionControl.verify();
|
|
||||||
messageControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,9 +16,15 @@
|
||||||
|
|
||||||
package org.springframework.jms.support;
|
package org.springframework.jms.support;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -31,9 +37,9 @@ import javax.jms.ObjectMessage;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
|
|
||||||
import org.easymock.ArgumentsMatcher;
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
|
import org.mockito.stubbing.Answer;
|
||||||
import org.springframework.jms.support.converter.MessageConversionException;
|
import org.springframework.jms.support.converter.MessageConversionException;
|
||||||
import org.springframework.jms.support.converter.SimpleMessageConverter;
|
import org.springframework.jms.support.converter.SimpleMessageConverter;
|
||||||
|
|
||||||
|
|
@ -48,127 +54,79 @@ public final class SimpleMessageConverterTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStringConversion() throws JMSException {
|
public void testStringConversion() throws JMSException {
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
TextMessage message = mock(TextMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(TextMessage.class);
|
|
||||||
TextMessage message = (TextMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
String content = "test";
|
String content = "test";
|
||||||
|
|
||||||
session.createTextMessage(content);
|
given(session.createTextMessage(content)).willReturn(message);
|
||||||
sessionControl.setReturnValue(message, 1);
|
given(message.getText()).willReturn(content);
|
||||||
message.getText();
|
|
||||||
messageControl.setReturnValue(content, 1);
|
|
||||||
sessionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter converter = new SimpleMessageConverter();
|
SimpleMessageConverter converter = new SimpleMessageConverter();
|
||||||
Message msg = converter.toMessage(content, session);
|
Message msg = converter.toMessage(content, session);
|
||||||
assertEquals(content, converter.fromMessage(msg));
|
assertEquals(content, converter.fromMessage(msg));
|
||||||
|
|
||||||
sessionControl.verify();
|
|
||||||
messageControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testByteArrayConversion() throws JMSException {
|
public void testByteArrayConversion() throws JMSException {
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
BytesMessage message = mock(BytesMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(BytesMessage.class);
|
|
||||||
BytesMessage message = (BytesMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
byte[] content = "test".getBytes();
|
byte[] content = "test".getBytes();
|
||||||
|
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content);
|
||||||
|
|
||||||
session.createBytesMessage();
|
given(session.createBytesMessage()).willReturn(message);
|
||||||
sessionControl.setReturnValue(message, 1);
|
given(message.getBodyLength()).willReturn((long) content.length);
|
||||||
message.writeBytes(content);
|
given(message.readBytes(any(byte[].class))).willAnswer(new Answer<Integer>() {
|
||||||
messageControl.setVoidCallable(1);
|
|
||||||
message.getBodyLength();
|
|
||||||
messageControl.setReturnValue(content.length, 1);
|
|
||||||
message.readBytes(new byte[content.length]);
|
|
||||||
messageControl.setMatcher(new ArgumentsMatcher() {
|
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Object[] arg0, Object[] arg1) {
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
byte[] one = (byte[]) arg0[0];
|
return byteArrayInputStream.read((byte[]) invocation.getArguments()[0]);
|
||||||
byte[] two = (byte[]) arg1[0];
|
|
||||||
return Arrays.equals(one, two);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString(Object[] arg0) {
|
|
||||||
return "bla";
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
messageControl.setReturnValue(content.length, 1);
|
|
||||||
sessionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter converter = new SimpleMessageConverter();
|
SimpleMessageConverter converter = new SimpleMessageConverter();
|
||||||
Message msg = converter.toMessage(content, session);
|
Message msg = converter.toMessage(content, session);
|
||||||
assertEquals(content.length, ((byte[]) converter.fromMessage(msg)).length);
|
assertEquals(content.length, ((byte[]) converter.fromMessage(msg)).length);
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(message).writeBytes(content);
|
||||||
messageControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMapConversion() throws JMSException {
|
public void testMapConversion() throws JMSException {
|
||||||
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
MapMessage message = mock(MapMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(MapMessage.class);
|
|
||||||
MapMessage message = (MapMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
Map content = new HashMap();
|
Map content = new HashMap();
|
||||||
content.put("key1", "value1");
|
content.put("key1", "value1");
|
||||||
content.put("key2", "value2");
|
content.put("key2", "value2");
|
||||||
|
|
||||||
session.createMapMessage();
|
given(session.createMapMessage()).willReturn(message);
|
||||||
sessionControl.setReturnValue(message, 1);
|
given(message.getMapNames()).willReturn(Collections.enumeration(content.keySet()));
|
||||||
message.setObject("key1", "value1");
|
given(message.getObject("key1")).willReturn("value1");
|
||||||
messageControl.setVoidCallable(1);
|
given(message.getObject("key2")).willReturn("value2");
|
||||||
message.setObject("key2", "value2");
|
|
||||||
messageControl.setVoidCallable(1);
|
|
||||||
message.getMapNames();
|
|
||||||
messageControl.setReturnValue(Collections.enumeration(content.keySet()));
|
|
||||||
message.getObject("key1");
|
|
||||||
messageControl.setReturnValue("value1", 1);
|
|
||||||
message.getObject("key2");
|
|
||||||
messageControl.setReturnValue("value2", 1);
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter converter = new SimpleMessageConverter();
|
SimpleMessageConverter converter = new SimpleMessageConverter();
|
||||||
Message msg = converter.toMessage(content, session);
|
Message msg = converter.toMessage(content, session);
|
||||||
assertEquals(content, converter.fromMessage(msg));
|
assertEquals(content, converter.fromMessage(msg));
|
||||||
|
|
||||||
sessionControl.verify();
|
verify(message).setObject("key1", "value1");
|
||||||
messageControl.verify();
|
verify(message).setObject("key2", "value2");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializableConversion() throws JMSException {
|
public void testSerializableConversion() throws JMSException {
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
ObjectMessage message = mock(ObjectMessage.class);
|
||||||
MockControl messageControl = MockControl.createControl(ObjectMessage.class);
|
|
||||||
ObjectMessage message = (ObjectMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
Integer content = new Integer(5);
|
Integer content = new Integer(5);
|
||||||
|
|
||||||
session.createObjectMessage(content);
|
given(session.createObjectMessage(content)).willReturn(message);
|
||||||
sessionControl.setReturnValue(message, 1);
|
given(message.getObject()).willReturn(content);
|
||||||
message.getObject();
|
|
||||||
messageControl.setReturnValue(content, 1);
|
|
||||||
sessionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter converter = new SimpleMessageConverter();
|
SimpleMessageConverter converter = new SimpleMessageConverter();
|
||||||
Message msg = converter.toMessage(content, session);
|
Message msg = converter.toMessage(content, session);
|
||||||
assertEquals(content, converter.fromMessage(msg));
|
assertEquals(content, converter.fromMessage(msg));
|
||||||
|
|
||||||
sessionControl.verify();
|
|
||||||
messageControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected=MessageConversionException.class)
|
@Test(expected=MessageConversionException.class)
|
||||||
|
|
@ -184,50 +142,30 @@ public final class SimpleMessageConverterTests {
|
||||||
@Test
|
@Test
|
||||||
public void testToMessageSimplyReturnsMessageAsIsIfSuppliedWithMessage() throws JMSException {
|
public void testToMessageSimplyReturnsMessageAsIsIfSuppliedWithMessage() throws JMSException {
|
||||||
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) sessionControl.getMock();
|
ObjectMessage message = mock(ObjectMessage.class);
|
||||||
|
|
||||||
MockControl messageControl = MockControl.createControl(ObjectMessage.class);
|
|
||||||
ObjectMessage message = (ObjectMessage) messageControl.getMock();
|
|
||||||
|
|
||||||
sessionControl.replay();
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter converter = new SimpleMessageConverter();
|
SimpleMessageConverter converter = new SimpleMessageConverter();
|
||||||
Message msg = converter.toMessage(message, session);
|
Message msg = converter.toMessage(message, session);
|
||||||
assertSame(message, msg);
|
assertSame(message, msg);
|
||||||
|
|
||||||
sessionControl.verify();
|
|
||||||
messageControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFromMessageSimplyReturnsMessageAsIsIfSuppliedWithMessage() throws JMSException {
|
public void testFromMessageSimplyReturnsMessageAsIsIfSuppliedWithMessage() throws JMSException {
|
||||||
|
|
||||||
MockControl messageControl = MockControl.createControl(Message.class);
|
Message message = mock(Message.class);
|
||||||
Message message = (Message) messageControl.getMock();
|
|
||||||
|
|
||||||
messageControl.replay();
|
|
||||||
|
|
||||||
SimpleMessageConverter converter = new SimpleMessageConverter();
|
SimpleMessageConverter converter = new SimpleMessageConverter();
|
||||||
Object msg = converter.fromMessage(message);
|
Object msg = converter.fromMessage(message);
|
||||||
assertSame(message, msg);
|
assertSame(message, msg);
|
||||||
|
|
||||||
messageControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMapConversionWhereMapHasNonStringTypesForKeys() throws JMSException {
|
public void testMapConversionWhereMapHasNonStringTypesForKeys() throws JMSException {
|
||||||
|
|
||||||
MockControl messageControl = MockControl.createControl(MapMessage.class);
|
MapMessage message = mock(MapMessage.class);
|
||||||
MapMessage message = (MapMessage) messageControl.getMock();
|
final Session session = mock(Session.class);
|
||||||
messageControl.replay();
|
given(session.createMapMessage()).willReturn(message);
|
||||||
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
session.createMapMessage();
|
|
||||||
sessionControl.setReturnValue(message);
|
|
||||||
sessionControl.replay();
|
|
||||||
|
|
||||||
final Map content = new HashMap();
|
final Map content = new HashMap();
|
||||||
content.put(new Integer(1), "value1");
|
content.put(new Integer(1), "value1");
|
||||||
|
|
@ -237,22 +175,14 @@ public final class SimpleMessageConverterTests {
|
||||||
converter.toMessage(content, session);
|
converter.toMessage(content, session);
|
||||||
fail("expected MessageConversionException");
|
fail("expected MessageConversionException");
|
||||||
} catch (MessageConversionException ex) { /* expected */ }
|
} catch (MessageConversionException ex) { /* expected */ }
|
||||||
|
|
||||||
sessionControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMapConversionWhereMapHasNNullForKey() throws JMSException {
|
public void testMapConversionWhereMapHasNNullForKey() throws JMSException {
|
||||||
|
|
||||||
MockControl messageControl = MockControl.createControl(MapMessage.class);
|
MapMessage message = mock(MapMessage.class);
|
||||||
MapMessage message = (MapMessage) messageControl.getMock();
|
final Session session = mock(Session.class);
|
||||||
messageControl.replay();
|
given(session.createMapMessage()).willReturn(message);
|
||||||
|
|
||||||
MockControl sessionControl = MockControl.createControl(Session.class);
|
|
||||||
final Session session = (Session) sessionControl.getMock();
|
|
||||||
session.createMapMessage();
|
|
||||||
sessionControl.setReturnValue(message);
|
|
||||||
sessionControl.replay();
|
|
||||||
|
|
||||||
final Map content = new HashMap();
|
final Map content = new HashMap();
|
||||||
content.put(null, "value1");
|
content.put(null, "value1");
|
||||||
|
|
@ -262,8 +192,6 @@ public final class SimpleMessageConverterTests {
|
||||||
converter.toMessage(content, session);
|
converter.toMessage(content, session);
|
||||||
fail("expected MessageConversionException");
|
fail("expected MessageConversionException");
|
||||||
} catch (MessageConversionException ex) { /* expected */ }
|
} catch (MessageConversionException ex) { /* expected */ }
|
||||||
|
|
||||||
sessionControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,21 +16,27 @@
|
||||||
|
|
||||||
package org.springframework.jms.support.converter;
|
package org.springframework.jms.support.converter;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Matchers.isA;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.jms.BytesMessage;
|
import javax.jms.BytesMessage;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
|
|
||||||
import org.easymock.Capture;
|
|
||||||
import org.easymock.EasyMock;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
import static org.easymock.EasyMock.*;
|
import org.mockito.stubbing.Answer;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Arjen Poutsma
|
* @author Arjen Poutsma
|
||||||
|
|
@ -44,7 +50,7 @@ public class MappingJackson2MessageConverterTests {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
sessionMock = createMock(Session.class);
|
sessionMock = mock(Session.class);
|
||||||
converter = new MappingJackson2MessageConverter();
|
converter = new MappingJackson2MessageConverter();
|
||||||
converter.setEncodingPropertyName("__encoding__");
|
converter.setEncodingPropertyName("__encoding__");
|
||||||
converter.setTypeIdPropertyName("__typeid__");
|
converter.setTypeIdPropertyName("__typeid__");
|
||||||
|
|
@ -52,128 +58,94 @@ public class MappingJackson2MessageConverterTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toBytesMessage() throws Exception {
|
public void toBytesMessage() throws Exception {
|
||||||
BytesMessage bytesMessageMock = createMock(BytesMessage.class);
|
BytesMessage bytesMessageMock = mock(BytesMessage.class);
|
||||||
Date toBeMarshalled = new Date();
|
Date toBeMarshalled = new Date();
|
||||||
|
|
||||||
expect(sessionMock.createBytesMessage()).andReturn(bytesMessageMock);
|
given(sessionMock.createBytesMessage()).willReturn(bytesMessageMock);
|
||||||
bytesMessageMock.setStringProperty("__encoding__", "UTF-8");
|
|
||||||
bytesMessageMock.setStringProperty("__typeid__", Date.class.getName());
|
|
||||||
bytesMessageMock.writeBytes(isA(byte[].class));
|
|
||||||
|
|
||||||
replay(sessionMock, bytesMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
|
||||||
verify(sessionMock, bytesMessageMock);
|
verify(bytesMessageMock).setStringProperty("__encoding__", "UTF-8");
|
||||||
|
verify(bytesMessageMock).setStringProperty("__typeid__", Date.class.getName());
|
||||||
|
verify(bytesMessageMock).writeBytes(isA(byte[].class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromBytesMessage() throws Exception {
|
public void fromBytesMessage() throws Exception {
|
||||||
BytesMessage bytesMessageMock = createMock(BytesMessage.class);
|
BytesMessage bytesMessageMock = mock(BytesMessage.class);
|
||||||
Map<String, String> unmarshalled = Collections.singletonMap("foo",
|
Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar");
|
||||||
"bar");
|
|
||||||
|
|
||||||
final byte[] bytes = "{\"foo\":\"bar\"}".getBytes();
|
byte[] bytes = "{\"foo\":\"bar\"}".getBytes();
|
||||||
@SuppressWarnings("serial")
|
final ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);
|
||||||
Capture<byte[]> captured = new Capture<byte[]>() {
|
|
||||||
|
given(bytesMessageMock.getStringProperty("__typeid__")).willReturn(
|
||||||
|
Object.class.getName());
|
||||||
|
given(bytesMessageMock.propertyExists("__encoding__")).willReturn(false);
|
||||||
|
given(bytesMessageMock.getBodyLength()).willReturn(new Long(bytes.length));
|
||||||
|
given(bytesMessageMock.readBytes(any(byte[].class))).willAnswer(
|
||||||
|
new Answer<Integer>() {
|
||||||
@Override
|
@Override
|
||||||
public void setValue(byte[] value) {
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
super.setValue(value);
|
return byteStream.read((byte[]) invocation.getArguments()[0]);
|
||||||
System.arraycopy(bytes, 0, value, 0, bytes.length);
|
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
expect(
|
|
||||||
bytesMessageMock.getStringProperty("__typeid__"))
|
|
||||||
.andReturn(Object.class.getName());
|
|
||||||
expect(
|
|
||||||
bytesMessageMock.propertyExists("__encoding__"))
|
|
||||||
.andReturn(false);
|
|
||||||
expect(bytesMessageMock.getBodyLength()).andReturn(
|
|
||||||
new Long(bytes.length));
|
|
||||||
expect(bytesMessageMock.readBytes(EasyMock.capture(captured)))
|
|
||||||
.andReturn(bytes.length);
|
|
||||||
|
|
||||||
replay(sessionMock, bytesMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(bytesMessageMock);
|
Object result = converter.fromMessage(bytesMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(sessionMock, bytesMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toTextMessageWithObject() throws Exception {
|
public void toTextMessageWithObject() throws Exception {
|
||||||
converter.setTargetType(MessageType.TEXT);
|
converter.setTargetType(MessageType.TEXT);
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Date toBeMarshalled = new Date();
|
Date toBeMarshalled = new Date();
|
||||||
|
|
||||||
textMessageMock.setStringProperty("__typeid__", Date.class.getName());
|
given(sessionMock.createTextMessage(isA(String.class))).willReturn(
|
||||||
expect(sessionMock.createTextMessage(isA(String.class))).andReturn( textMessageMock);
|
textMessageMock);
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
verify(textMessageMock).setStringProperty("__typeid__", Date.class.getName());
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toTextMessageWithMap() throws Exception {
|
public void toTextMessageWithMap() throws Exception {
|
||||||
converter.setTargetType(MessageType.TEXT);
|
converter.setTargetType(MessageType.TEXT);
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Map<String, String> toBeMarshalled = new HashMap<String, String>();
|
Map<String, String> toBeMarshalled = new HashMap<String, String>();
|
||||||
toBeMarshalled.put("foo", "bar");
|
toBeMarshalled.put("foo", "bar");
|
||||||
|
|
||||||
textMessageMock.setStringProperty("__typeid__", HashMap.class.getName());
|
given(sessionMock.createTextMessage(isA(String.class))).willReturn(
|
||||||
expect(sessionMock.createTextMessage(isA(String.class))).andReturn(
|
|
||||||
textMessageMock);
|
textMessageMock);
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
verify(textMessageMock).setStringProperty("__typeid__", HashMap.class.getName());
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromTextMessageAsObject() throws Exception {
|
public void fromTextMessageAsObject() throws Exception {
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Map<String, String> unmarshalled = Collections.singletonMap("foo",
|
Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar");
|
||||||
"bar");
|
|
||||||
|
|
||||||
String text = "{\"foo\":\"bar\"}";
|
String text = "{\"foo\":\"bar\"}";
|
||||||
expect(
|
given(textMessageMock.getStringProperty("__typeid__")).willReturn(
|
||||||
textMessageMock.getStringProperty("__typeid__"))
|
Object.class.getName());
|
||||||
.andReturn(Object.class.getName());
|
given(textMessageMock.getText()).willReturn(text);
|
||||||
expect(textMessageMock.getText()).andReturn(text);
|
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(textMessageMock);
|
Object result = converter.fromMessage(textMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromTextMessageAsMap() throws Exception {
|
public void fromTextMessageAsMap() throws Exception {
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Map<String, String> unmarshalled = Collections.singletonMap("foo",
|
Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar");
|
||||||
"bar");
|
|
||||||
|
|
||||||
String text = "{\"foo\":\"bar\"}";
|
String text = "{\"foo\":\"bar\"}";
|
||||||
expect(
|
given(textMessageMock.getStringProperty("__typeid__")).willReturn(
|
||||||
textMessageMock.getStringProperty("__typeid__"))
|
HashMap.class.getName());
|
||||||
.andReturn(HashMap.class.getName());
|
given(textMessageMock.getText()).willReturn(text);
|
||||||
expect(textMessageMock.getText()).andReturn(text);
|
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(textMessageMock);
|
Object result = converter.fromMessage(textMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,20 +16,26 @@
|
||||||
|
|
||||||
package org.springframework.jms.support.converter;
|
package org.springframework.jms.support.converter;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Matchers.isA;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.jms.BytesMessage;
|
import javax.jms.BytesMessage;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
|
|
||||||
import org.easymock.Capture;
|
|
||||||
import org.easymock.EasyMock;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
import static org.easymock.EasyMock.*;
|
import org.mockito.stubbing.Answer;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Arjen Poutsma
|
* @author Arjen Poutsma
|
||||||
|
|
@ -43,7 +49,7 @@ public class MappingJacksonMessageConverterTests {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
sessionMock = createMock(Session.class);
|
sessionMock = mock(Session.class);
|
||||||
converter = new MappingJacksonMessageConverter();
|
converter = new MappingJacksonMessageConverter();
|
||||||
converter.setEncodingPropertyName("__encoding__");
|
converter.setEncodingPropertyName("__encoding__");
|
||||||
converter.setTypeIdPropertyName("__typeid__");
|
converter.setTypeIdPropertyName("__typeid__");
|
||||||
|
|
@ -51,128 +57,96 @@ public class MappingJacksonMessageConverterTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toBytesMessage() throws Exception {
|
public void toBytesMessage() throws Exception {
|
||||||
BytesMessage bytesMessageMock = createMock(BytesMessage.class);
|
BytesMessage bytesMessageMock = mock(BytesMessage.class);
|
||||||
Object toBeMarshalled = new Object();
|
Object toBeMarshalled = new Object();
|
||||||
|
|
||||||
expect(sessionMock.createBytesMessage()).andReturn(bytesMessageMock);
|
given(sessionMock.createBytesMessage()).willReturn(bytesMessageMock);
|
||||||
bytesMessageMock.setStringProperty("__encoding__", "UTF-8");
|
|
||||||
bytesMessageMock.setStringProperty("__typeid__", Object.class.getName());
|
|
||||||
bytesMessageMock.writeBytes(isA(byte[].class));
|
|
||||||
|
|
||||||
replay(sessionMock, bytesMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
|
||||||
verify(sessionMock, bytesMessageMock);
|
verify(bytesMessageMock).setStringProperty("__encoding__", "UTF-8");
|
||||||
|
verify(bytesMessageMock).setStringProperty("__typeid__", Object.class.getName());
|
||||||
|
verify(bytesMessageMock).writeBytes(isA(byte[].class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public void fromBytesMessage() throws Exception {
|
public void fromBytesMessage() throws Exception {
|
||||||
BytesMessage bytesMessageMock = createMock(BytesMessage.class);
|
BytesMessage bytesMessageMock = mock(BytesMessage.class);
|
||||||
Map<String, String> unmarshalled = Collections.singletonMap("foo",
|
Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar");
|
||||||
"bar");
|
|
||||||
|
byte[] bytes = "{\"foo\":\"bar\"}".getBytes();
|
||||||
|
final ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);
|
||||||
|
|
||||||
|
given(bytesMessageMock.getStringProperty("__typeid__")).willReturn(
|
||||||
|
Object.class.getName());
|
||||||
|
given(bytesMessageMock.propertyExists("__encoding__")).willReturn(false);
|
||||||
|
given(bytesMessageMock.getBodyLength()).willReturn(new Long(bytes.length));
|
||||||
|
given(bytesMessageMock.readBytes(any(byte[].class))).willAnswer(
|
||||||
|
new Answer<Integer>() {
|
||||||
|
|
||||||
final byte[] bytes = "{\"foo\":\"bar\"}".getBytes();
|
|
||||||
Capture<byte[]> captured = new Capture<byte[]>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void setValue(byte[] value) {
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
super.setValue(value);
|
return byteStream.read((byte[]) invocation.getArguments()[0]);
|
||||||
System.arraycopy(bytes, 0, value, 0, bytes.length);
|
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
expect(
|
|
||||||
bytesMessageMock.getStringProperty("__typeid__"))
|
|
||||||
.andReturn(Object.class.getName());
|
|
||||||
expect(
|
|
||||||
bytesMessageMock.propertyExists("__encoding__"))
|
|
||||||
.andReturn(false);
|
|
||||||
expect(bytesMessageMock.getBodyLength()).andReturn(
|
|
||||||
new Long(bytes.length));
|
|
||||||
expect(bytesMessageMock.readBytes(EasyMock.capture(captured)))
|
|
||||||
.andReturn(bytes.length);
|
|
||||||
|
|
||||||
replay(sessionMock, bytesMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(bytesMessageMock);
|
Object result = converter.fromMessage(bytesMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(sessionMock, bytesMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toTextMessageWithObject() throws Exception {
|
public void toTextMessageWithObject() throws Exception {
|
||||||
converter.setTargetType(MessageType.TEXT);
|
converter.setTargetType(MessageType.TEXT);
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Object toBeMarshalled = new Object();
|
Object toBeMarshalled = new Object();
|
||||||
|
|
||||||
textMessageMock.setStringProperty("__typeid__", Object.class.getName());
|
given(sessionMock.createTextMessage(isA(String.class))).willReturn(
|
||||||
expect(sessionMock.createTextMessage(isA(String.class))).andReturn( textMessageMock);
|
textMessageMock);
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
verify(textMessageMock).setStringProperty("__typeid__", Object.class.getName());
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toTextMessageWithMap() throws Exception {
|
public void toTextMessageWithMap() throws Exception {
|
||||||
converter.setTargetType(MessageType.TEXT);
|
converter.setTargetType(MessageType.TEXT);
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Map<String, String> toBeMarshalled = new HashMap<String, String>();
|
Map<String, String> toBeMarshalled = new HashMap<String, String>();
|
||||||
toBeMarshalled.put("foo", "bar");
|
toBeMarshalled.put("foo", "bar");
|
||||||
|
given(sessionMock.createTextMessage(isA(String.class))).willReturn(
|
||||||
textMessageMock.setStringProperty("__typeid__", HashMap.class.getName());
|
|
||||||
expect(sessionMock.createTextMessage(isA(String.class))).andReturn(
|
|
||||||
textMessageMock);
|
textMessageMock);
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
|
||||||
verify(sessionMock, textMessageMock);
|
verify(textMessageMock).setStringProperty("__typeid__", HashMap.class.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromTextMessageAsObject() throws Exception {
|
public void fromTextMessageAsObject() throws Exception {
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Map<String, String> unmarshalled = Collections.singletonMap("foo",
|
Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar");
|
||||||
"bar");
|
|
||||||
|
|
||||||
String text = "{\"foo\":\"bar\"}";
|
String text = "{\"foo\":\"bar\"}";
|
||||||
expect(
|
given(textMessageMock.getStringProperty("__typeid__")).willReturn(
|
||||||
textMessageMock.getStringProperty("__typeid__"))
|
Object.class.getName());
|
||||||
.andReturn(Object.class.getName());
|
given(textMessageMock.getText()).willReturn(text);
|
||||||
expect(textMessageMock.getText()).andReturn(text);
|
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(textMessageMock);
|
Object result = converter.fromMessage(textMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromTextMessageAsMap() throws Exception {
|
public void fromTextMessageAsMap() throws Exception {
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Map<String, String> unmarshalled = Collections.singletonMap("foo",
|
Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar");
|
||||||
"bar");
|
|
||||||
|
|
||||||
String text = "{\"foo\":\"bar\"}";
|
String text = "{\"foo\":\"bar\"}";
|
||||||
expect(
|
given(textMessageMock.getStringProperty("__typeid__")).willReturn(
|
||||||
textMessageMock.getStringProperty("__typeid__"))
|
HashMap.class.getName());
|
||||||
.andReturn(HashMap.class.getName());
|
given(textMessageMock.getText()).willReturn(text);
|
||||||
expect(textMessageMock.getText()).andReturn(text);
|
|
||||||
|
|
||||||
replay(sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(textMessageMock);
|
Object result = converter.fromMessage(textMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2009 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,17 +16,21 @@
|
||||||
|
|
||||||
package org.springframework.jms.support.converter;
|
package org.springframework.jms.support.converter;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Matchers.eq;
|
||||||
|
import static org.mockito.Matchers.isA;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import javax.jms.BytesMessage;
|
import javax.jms.BytesMessage;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
import javax.xml.transform.Result;
|
import javax.xml.transform.Result;
|
||||||
import javax.xml.transform.Source;
|
import javax.xml.transform.Source;
|
||||||
|
|
||||||
import static org.easymock.EasyMock.*;
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.oxm.Marshaller;
|
import org.springframework.oxm.Marshaller;
|
||||||
import org.springframework.oxm.Unmarshaller;
|
import org.springframework.oxm.Unmarshaller;
|
||||||
|
|
||||||
|
|
@ -45,76 +49,60 @@ public class MarshallingMessageConverterTests {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
marshallerMock = createMock(Marshaller.class);
|
marshallerMock = mock(Marshaller.class);
|
||||||
unmarshallerMock = createMock(Unmarshaller.class);
|
unmarshallerMock = mock(Unmarshaller.class);
|
||||||
sessionMock = createMock(Session.class);
|
sessionMock = mock(Session.class);
|
||||||
converter = new MarshallingMessageConverter(marshallerMock, unmarshallerMock);
|
converter = new MarshallingMessageConverter(marshallerMock, unmarshallerMock);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toBytesMessage() throws Exception {
|
public void toBytesMessage() throws Exception {
|
||||||
BytesMessage bytesMessageMock = createMock(BytesMessage.class);
|
BytesMessage bytesMessageMock = mock(BytesMessage.class);
|
||||||
Object toBeMarshalled = new Object();
|
Object toBeMarshalled = new Object();
|
||||||
|
given(sessionMock.createBytesMessage()).willReturn(bytesMessageMock);
|
||||||
expect(sessionMock.createBytesMessage()).andReturn(bytesMessageMock);
|
|
||||||
marshallerMock.marshal(eq(toBeMarshalled), isA(Result.class));
|
|
||||||
bytesMessageMock.writeBytes(isA(byte[].class));
|
|
||||||
|
|
||||||
replay(marshallerMock, unmarshallerMock, sessionMock, bytesMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
|
||||||
verify(marshallerMock, unmarshallerMock, sessionMock, bytesMessageMock);
|
verify(marshallerMock).marshal(eq(toBeMarshalled), isA(Result.class));
|
||||||
|
verify(bytesMessageMock).writeBytes(isA(byte[].class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromBytesMessage() throws Exception {
|
public void fromBytesMessage() throws Exception {
|
||||||
BytesMessage bytesMessageMock = createMock(BytesMessage.class);
|
BytesMessage bytesMessageMock = mock(BytesMessage.class);
|
||||||
Object unmarshalled = new Object();
|
Object unmarshalled = new Object();
|
||||||
|
|
||||||
expect(bytesMessageMock.getBodyLength()).andReturn(10L);
|
given(bytesMessageMock.getBodyLength()).willReturn(10L);
|
||||||
expect(bytesMessageMock.readBytes(isA(byte[].class))).andReturn(0);
|
given(bytesMessageMock.readBytes(isA(byte[].class))).willReturn(0);
|
||||||
expect(unmarshallerMock.unmarshal(isA(Source.class))).andReturn(unmarshalled);
|
given(unmarshallerMock.unmarshal(isA(Source.class))).willReturn(unmarshalled);
|
||||||
|
|
||||||
replay(marshallerMock, unmarshallerMock, sessionMock, bytesMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(bytesMessageMock);
|
Object result = converter.fromMessage(bytesMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(marshallerMock, unmarshallerMock, sessionMock, bytesMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toTextMessage() throws Exception {
|
public void toTextMessage() throws Exception {
|
||||||
converter.setTargetType(MessageType.TEXT);
|
converter.setTargetType(MessageType.TEXT);
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Object toBeMarshalled = new Object();
|
Object toBeMarshalled = new Object();
|
||||||
|
|
||||||
expect(sessionMock.createTextMessage(isA(String.class))).andReturn(textMessageMock);
|
given(sessionMock.createTextMessage(isA(String.class))).willReturn(textMessageMock);
|
||||||
marshallerMock.marshal(eq(toBeMarshalled), isA(Result.class));
|
|
||||||
|
|
||||||
replay(marshallerMock, unmarshallerMock, sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
converter.toMessage(toBeMarshalled, sessionMock);
|
converter.toMessage(toBeMarshalled, sessionMock);
|
||||||
|
|
||||||
verify(marshallerMock, unmarshallerMock, sessionMock, textMessageMock);
|
verify(marshallerMock).marshal(eq(toBeMarshalled), isA(Result.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fromTextMessage() throws Exception {
|
public void fromTextMessage() throws Exception {
|
||||||
TextMessage textMessageMock = createMock(TextMessage.class);
|
TextMessage textMessageMock = mock(TextMessage.class);
|
||||||
Object unmarshalled = new Object();
|
Object unmarshalled = new Object();
|
||||||
|
|
||||||
String text = "foo";
|
String text = "foo";
|
||||||
expect(textMessageMock.getText()).andReturn(text);
|
given(textMessageMock.getText()).willReturn(text);
|
||||||
expect(unmarshallerMock.unmarshal(isA(Source.class))).andReturn(unmarshalled);
|
given(unmarshallerMock.unmarshal(isA(Source.class))).willReturn(unmarshalled);
|
||||||
|
|
||||||
replay(marshallerMock, unmarshallerMock, sessionMock, textMessageMock);
|
|
||||||
|
|
||||||
Object result = converter.fromMessage(textMessageMock);
|
Object result = converter.fromMessage(textMessageMock);
|
||||||
assertEquals("Invalid result", result, unmarshalled);
|
assertEquals("Invalid result", result, unmarshalled);
|
||||||
|
|
||||||
verify(marshallerMock, unmarshallerMock, sessionMock, textMessageMock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,6 +16,9 @@
|
||||||
|
|
||||||
package org.springframework.jms.support.destination;
|
package org.springframework.jms.support.destination;
|
||||||
|
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import javax.jms.Destination;
|
import javax.jms.Destination;
|
||||||
import javax.jms.JMSException;
|
import javax.jms.JMSException;
|
||||||
import javax.jms.Queue;
|
import javax.jms.Queue;
|
||||||
|
|
@ -25,7 +28,6 @@ import javax.jms.Topic;
|
||||||
import javax.jms.TopicSession;
|
import javax.jms.TopicSession;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.easymock.MockControl;
|
|
||||||
|
|
||||||
import org.springframework.jms.StubQueue;
|
import org.springframework.jms.StubQueue;
|
||||||
import org.springframework.jms.StubTopic;
|
import org.springframework.jms.StubTopic;
|
||||||
|
|
@ -39,63 +41,31 @@ public class DynamicDestinationResolverTests extends TestCase {
|
||||||
|
|
||||||
|
|
||||||
public void testResolveWithPubSubTopicSession() throws Exception {
|
public void testResolveWithPubSubTopicSession() throws Exception {
|
||||||
|
|
||||||
Topic expectedDestination = new StubTopic();
|
Topic expectedDestination = new StubTopic();
|
||||||
|
TopicSession session = mock(TopicSession.class);
|
||||||
MockControl mockSession = MockControl.createControl(TopicSession.class);
|
given(session.createTopic(DESTINATION_NAME)).willReturn(expectedDestination);
|
||||||
TopicSession session = (TopicSession) mockSession.getMock();
|
|
||||||
session.createTopic(DESTINATION_NAME);
|
|
||||||
mockSession.setReturnValue(expectedDestination);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
testResolveDestination(session, expectedDestination, true);
|
testResolveDestination(session, expectedDestination, true);
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testResolveWithPubSubVanillaSession() throws Exception {
|
public void testResolveWithPubSubVanillaSession() throws Exception {
|
||||||
|
|
||||||
Topic expectedDestination = new StubTopic();
|
Topic expectedDestination = new StubTopic();
|
||||||
|
Session session = mock(Session.class);
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
given(session.createTopic(DESTINATION_NAME)).willReturn(expectedDestination);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
session.createTopic(DESTINATION_NAME);
|
|
||||||
mockSession.setReturnValue(expectedDestination);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
testResolveDestination(session, expectedDestination, true);
|
testResolveDestination(session, expectedDestination, true);
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testResolveWithPointToPointQueueSession() throws Exception {
|
public void testResolveWithPointToPointQueueSession() throws Exception {
|
||||||
|
|
||||||
Queue expectedDestination = new StubQueue();
|
Queue expectedDestination = new StubQueue();
|
||||||
|
Session session = mock(QueueSession.class);
|
||||||
MockControl mockSession = MockControl.createControl(QueueSession.class);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(expectedDestination);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
session.createQueue(DESTINATION_NAME);
|
|
||||||
mockSession.setReturnValue(expectedDestination);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
testResolveDestination(session, expectedDestination, false);
|
testResolveDestination(session, expectedDestination, false);
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testResolveWithPointToPointVanillaSession() throws Exception {
|
public void testResolveWithPointToPointVanillaSession() throws Exception {
|
||||||
|
|
||||||
Queue expectedDestination = new StubQueue();
|
Queue expectedDestination = new StubQueue();
|
||||||
|
Session session = mock(Session.class);
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
given(session.createQueue(DESTINATION_NAME)).willReturn(expectedDestination);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
session.createQueue(DESTINATION_NAME);
|
|
||||||
mockSession.setReturnValue(expectedDestination);
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
testResolveDestination(session, expectedDestination, false);
|
testResolveDestination(session, expectedDestination, false);
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void testResolveDestination(Session session, Destination expectedDestination, boolean isPubSub) throws JMSException {
|
private static void testResolveDestination(Session session, Destination expectedDestination, boolean isPubSub) throws JMSException {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,8 +16,9 @@
|
||||||
|
|
||||||
package org.springframework.jms.support.destination;
|
package org.springframework.jms.support.destination;
|
||||||
|
|
||||||
import static org.easymock.EasyMock.*;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import javax.jms.ConnectionFactory;
|
import javax.jms.ConnectionFactory;
|
||||||
|
|
||||||
|
|
@ -31,8 +32,7 @@ public class JmsDestinationAccessorTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testChokesIfDestinationResolverIsetToNullExplcitly() throws Exception {
|
public void testChokesIfDestinationResolverIsetToNullExplcitly() throws Exception {
|
||||||
ConnectionFactory connectionFactory = createMock(ConnectionFactory.class);
|
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
|
||||||
replay(connectionFactory);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JmsDestinationAccessor accessor = new StubJmsDestinationAccessor();
|
JmsDestinationAccessor accessor = new StubJmsDestinationAccessor();
|
||||||
|
|
@ -40,9 +40,11 @@ public class JmsDestinationAccessorTests {
|
||||||
accessor.setDestinationResolver(null);
|
accessor.setDestinationResolver(null);
|
||||||
accessor.afterPropertiesSet();
|
accessor.afterPropertiesSet();
|
||||||
fail("expected IllegalArgumentException");
|
fail("expected IllegalArgumentException");
|
||||||
} catch (IllegalArgumentException ex) { /* expected */ }
|
}
|
||||||
|
catch (IllegalArgumentException ex) {
|
||||||
|
// expected
|
||||||
|
}
|
||||||
|
|
||||||
verify(connectionFactory);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,13 +16,17 @@
|
||||||
|
|
||||||
package org.springframework.jms.support.destination;
|
package org.springframework.jms.support.destination;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import javax.jms.Destination;
|
import javax.jms.Destination;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.naming.NamingException;
|
import javax.naming.NamingException;
|
||||||
|
|
||||||
import org.easymock.MockControl;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.jms.StubTopic;
|
import org.springframework.jms.StubTopic;
|
||||||
|
|
||||||
|
|
@ -40,24 +44,18 @@ public class JndiDestinationResolverTests {
|
||||||
@Test
|
@Test
|
||||||
public void testHitsCacheSecondTimeThrough() throws Exception {
|
public void testHitsCacheSecondTimeThrough() throws Exception {
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
JndiDestinationResolver resolver = new OneTimeLookupJndiDestinationResolver();
|
JndiDestinationResolver resolver = new OneTimeLookupJndiDestinationResolver();
|
||||||
Destination destination = resolver.resolveDestinationName(session, DESTINATION_NAME, true);
|
Destination destination = resolver.resolveDestinationName(session, DESTINATION_NAME, true);
|
||||||
assertNotNull(destination);
|
assertNotNull(destination);
|
||||||
assertSame(DESTINATION, destination);
|
assertSame(DESTINATION, destination);
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDoesNotUseCacheIfCachingIsTurnedOff() throws Exception {
|
public void testDoesNotUseCacheIfCachingIsTurnedOff() throws Exception {
|
||||||
|
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
CountingCannedJndiDestinationResolver resolver
|
CountingCannedJndiDestinationResolver resolver
|
||||||
= new CountingCannedJndiDestinationResolver();
|
= new CountingCannedJndiDestinationResolver();
|
||||||
|
|
@ -71,21 +69,15 @@ public class JndiDestinationResolverTests {
|
||||||
assertNotNull(destination);
|
assertNotNull(destination);
|
||||||
assertSame(DESTINATION, destination);
|
assertSame(DESTINATION, destination);
|
||||||
assertEquals(2, resolver.getCallCount());
|
assertEquals(2, resolver.getCallCount());
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDelegatesToFallbackIfNotResolvedInJndi() throws Exception {
|
public void testDelegatesToFallbackIfNotResolvedInJndi() throws Exception {
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
Session session = mock(Session.class);
|
||||||
Session session = (Session) mockSession.getMock();
|
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDestinationResolver = MockControl.createControl(DestinationResolver.class);
|
DestinationResolver dynamicResolver = mock(DestinationResolver.class);
|
||||||
DestinationResolver dynamicResolver = (DestinationResolver) mockDestinationResolver.getMock();
|
given(dynamicResolver.resolveDestinationName(session, DESTINATION_NAME,
|
||||||
dynamicResolver.resolveDestinationName(session, DESTINATION_NAME, true);
|
true)).willReturn(DESTINATION);
|
||||||
mockDestinationResolver.setReturnValue(DESTINATION);
|
|
||||||
mockDestinationResolver.replay();
|
|
||||||
|
|
||||||
JndiDestinationResolver resolver = new JndiDestinationResolver() {
|
JndiDestinationResolver resolver = new JndiDestinationResolver() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -99,20 +91,12 @@ public class JndiDestinationResolverTests {
|
||||||
|
|
||||||
assertNotNull(destination);
|
assertNotNull(destination);
|
||||||
assertSame(DESTINATION, destination);
|
assertSame(DESTINATION, destination);
|
||||||
|
|
||||||
mockSession.verify();
|
|
||||||
mockDestinationResolver.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDoesNotDelegateToFallbackIfNotResolvedInJndi() throws Exception {
|
public void testDoesNotDelegateToFallbackIfNotResolvedInJndi() throws Exception {
|
||||||
MockControl mockSession = MockControl.createControl(Session.class);
|
final Session session = mock(Session.class);
|
||||||
final Session session = (Session) mockSession.getMock();
|
DestinationResolver dynamicResolver = mock(DestinationResolver.class);
|
||||||
mockSession.replay();
|
|
||||||
|
|
||||||
MockControl mockDestinationResolver = MockControl.createControl(DestinationResolver.class);
|
|
||||||
DestinationResolver dynamicResolver = (DestinationResolver) mockDestinationResolver.getMock();
|
|
||||||
mockDestinationResolver.replay();
|
|
||||||
|
|
||||||
final JndiDestinationResolver resolver = new JndiDestinationResolver() {
|
final JndiDestinationResolver resolver = new JndiDestinationResolver() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -125,10 +109,10 @@ public class JndiDestinationResolverTests {
|
||||||
try {
|
try {
|
||||||
resolver.resolveDestinationName(session, DESTINATION_NAME, true);
|
resolver.resolveDestinationName(session, DESTINATION_NAME, true);
|
||||||
fail("expected DestinationResolutionException");
|
fail("expected DestinationResolutionException");
|
||||||
} catch (DestinationResolutionException ex) { /* expected */ }
|
}
|
||||||
|
catch (DestinationResolutionException ex) {
|
||||||
mockSession.verify();
|
// expected
|
||||||
mockDestinationResolver.verify();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue