From 0400b68afbbacc6229a25c6b278cc8cb23be6dc3 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 28 Oct 2009 14:36:01 +0000 Subject: [PATCH] SPR-6240 Added namespace support for ErrorHandler strategy on JMS "listener-container" elements. --- .../config/JmsListenerContainerParser.java | 10 ++++++- .../jms/config/spring-jms-3.0.xsd | 13 ++++++++++ .../jms/config/JmsNamespaceHandlerTests.java | 26 ++++++++++++++++++- .../jms/config/jmsNamespaceHandlerTests.xml | 8 +++--- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/org.springframework.jms/src/main/java/org/springframework/jms/config/JmsListenerContainerParser.java b/org.springframework.jms/src/main/java/org/springframework/jms/config/JmsListenerContainerParser.java index c6f6bf2df44..bd052175e9e 100644 --- a/org.springframework.jms/src/main/java/org/springframework/jms/config/JmsListenerContainerParser.java +++ b/org.springframework.jms/src/main/java/org/springframework/jms/config/JmsListenerContainerParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,6 +42,8 @@ class JmsListenerContainerParser extends AbstractListenerContainerParser { private static final String TASK_EXECUTOR_ATTRIBUTE = "task-executor"; + private static final String ERROR_HANDLER_ATTRIBUTE = "error-handler"; + private static final String CACHE_ATTRIBUTE = "cache"; @@ -93,6 +95,12 @@ class JmsListenerContainerParser extends AbstractListenerContainerParser { new RuntimeBeanReference(taskExecutorBeanName)); } + String errorHandlerBeanName = containerEle.getAttribute(ERROR_HANDLER_ATTRIBUTE); + if (StringUtils.hasText(errorHandlerBeanName)) { + containerDef.getPropertyValues().addPropertyValue("errorHandler", + new RuntimeBeanReference(errorHandlerBeanName)); + } + String destinationResolverBeanName = containerEle.getAttribute(DESTINATION_RESOLVER_ATTRIBUTE); if (StringUtils.hasText(destinationResolverBeanName)) { containerDef.getPropertyValues().addPropertyValue("destinationResolver", diff --git a/org.springframework.jms/src/main/resources/org/springframework/jms/config/spring-jms-3.0.xsd b/org.springframework.jms/src/main/resources/org/springframework/jms/config/spring-jms-3.0.xsd index c55297de2fa..1ba1f277702 100644 --- a/org.springframework.jms/src/main/resources/org/springframework/jms/config/spring-jms-3.0.xsd +++ b/org.springframework.jms/src/main/resources/org/springframework/jms/config/spring-jms-3.0.xsd @@ -125,6 +125,19 @@ + + + + + + + + + + + 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"> + transaction-manager="testTransactionManager" error-handler="testErrorHandler"> @@ -46,6 +46,8 @@ + +