SPR-6240 Added namespace support for ErrorHandler strategy on JMS "listener-container" elements.
This commit is contained in:
@@ -28,7 +28,7 @@ import javax.jms.TextMessage;
|
||||
import junit.framework.TestCase;
|
||||
import org.easymock.MockControl;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.TestBean;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.parsing.ComponentDefinition;
|
||||
@@ -41,6 +41,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.jca.endpoint.GenericMessageEndpointManager;
|
||||
import org.springframework.jms.listener.DefaultMessageListenerContainer;
|
||||
import org.springframework.jms.listener.endpoint.JmsMessageEndpointManager;
|
||||
import org.springframework.util.ErrorHandler;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
@@ -133,11 +134,26 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||
control3.verify();
|
||||
}
|
||||
|
||||
public void testErrorHandlers() {
|
||||
ErrorHandler expected = this.context.getBean("testErrorHandler", ErrorHandler.class);
|
||||
ErrorHandler errorHandler1 = getErrorHandler("listener1");
|
||||
ErrorHandler errorHandler2 = getErrorHandler("listener2");
|
||||
ErrorHandler defaultErrorHandler = getErrorHandler(DefaultMessageListenerContainer.class.getName() + "#0");
|
||||
assertSame(expected, errorHandler1);
|
||||
assertSame(expected, errorHandler2);
|
||||
assertNull(defaultErrorHandler);
|
||||
}
|
||||
|
||||
private MessageListener getListener(String containerBeanName) {
|
||||
DefaultMessageListenerContainer container = this.context.getBean(containerBeanName, DefaultMessageListenerContainer.class);
|
||||
return (MessageListener) container.getMessageListener();
|
||||
}
|
||||
|
||||
private ErrorHandler getErrorHandler(String containerBeanName) {
|
||||
DefaultMessageListenerContainer container = this.context.getBean(containerBeanName, DefaultMessageListenerContainer.class);
|
||||
return (ErrorHandler) new DirectFieldAccessor(container).getPropertyValue("errorHandler");
|
||||
}
|
||||
|
||||
public void testComponentRegistration() {
|
||||
assertTrue("Parser should have registered a component named 'listener1'", context.containsComponentDefinition("listener1"));
|
||||
assertTrue("Parser should have registered a component named 'listener2'", context.containsComponentDefinition("listener2"));
|
||||
@@ -231,4 +247,12 @@ public class JmsNamespaceHandlerTests extends TestCase {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static class TestErrorHandler implements ErrorHandler {
|
||||
|
||||
@Override
|
||||
public void handleError(Throwable t) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:jms="http://www.springframework.org/schema/jms"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd">
|
||||
|
||||
<jms:listener-container connection-factory="testConnectionFactory" task-executor="testTaskExecutor"
|
||||
destination-resolver="testDestinationResolver" message-converter="testMessageConverter"
|
||||
transaction-manager="testTransactionManager">
|
||||
transaction-manager="testTransactionManager" error-handler="testErrorHandler">
|
||||
<jms:listener id="listener1" destination="testDestination" ref="testBean1" method="setName"/>
|
||||
<jms:listener id="listener2" destination="testDestination" ref="testBean2" method="setName" response-destination="responseDestination"/>
|
||||
</jms:listener-container>
|
||||
@@ -46,6 +46,8 @@
|
||||
|
||||
<bean id="testTransactionManager" class="org.springframework.transaction.CallCountingTransactionManager"/>
|
||||
|
||||
<bean id="testErrorHandler" class="org.springframework.jms.config.JmsNamespaceHandlerTests$TestErrorHandler"/>
|
||||
|
||||
<bean id="testBean1" class="org.springframework.beans.TestBean"/>
|
||||
|
||||
<bean id="testBean2" class="org.springframework.beans.TestBean"/>
|
||||
|
||||
Reference in New Issue
Block a user