diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/xml/StepParser.java b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/xml/StepParser.java index 5e4818f5b..980e68b88 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/xml/StepParser.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/xml/StepParser.java @@ -49,7 +49,7 @@ import org.w3c.dom.NamedNodeMap; * * @author Dave Syer * @author Thomas Risberg - * + * @since 2.0 */ public class StepParser { @@ -293,7 +293,6 @@ public class StepParser { Element listenersElement = DomUtils.getChildElementByTagName(element, "listeners"); if (listenersElement != null) { - List listenerRefs = new ArrayList(); List listenerBeans = new ArrayList(); List listenerElements = DomUtils.getChildElementsByTagName(listenersElement, "listener"); @@ -316,7 +315,6 @@ public class StepParser { listenerElement.getTagName() + "> element with attributes: " + attributes); } if (StringUtils.hasText(listenerRef)) { - listenerRefs.add(listenerRef); BeanReference bean = new RuntimeBeanReference(listenerRef); listenerBeans.add(bean); } @@ -340,6 +338,32 @@ public class StepParser { } } + @SuppressWarnings("unchecked") + private void handleStreamsElement(Element element, RootBeanDefinition bd, ParserContext parserContext) { + Element streamsElement = + DomUtils.getChildElementByTagName(element, "streams"); + if (streamsElement != null) { + List listenerBeans = new ArrayList(); + List listenerElements = + DomUtils.getChildElementsByTagName(streamsElement, "listener"); + if (listenerElements != null) { + for (Element listenerElement : listenerElements) { + String listenerRef = listenerElement.getAttribute("ref"); + if (StringUtils.hasText(listenerRef)) { + BeanReference bean = new RuntimeBeanReference(listenerRef); + listenerBeans.add(bean); + } + else { + throw new BeanCreationException("ref not specified for <" + listenerElement.getTagName() + "> element"); + } + } + } + ManagedList arguments = new ManagedList(); + arguments.addAll(listenerBeans); + bd.getPropertyValues().addPropertyValue("streams", arguments); + } + } + /** * @param element * @param parserContext diff --git a/spring-batch-core/src/main/resources/org/springframework/batch/core/configuration/xml/spring-batch-2.0.xsd b/spring-batch-core/src/main/resources/org/springframework/batch/core/configuration/xml/spring-batch-2.0.xsd index 1f1194c1e..2e4d140b3 100644 --- a/spring-batch-core/src/main/resources/org/springframework/batch/core/configuration/xml/spring-batch-2.0.xsd +++ b/spring-batch-core/src/main/resources/org/springframework/batch/core/configuration/xml/spring-batch-2.0.xsd @@ -242,6 +242,23 @@ + + + + + + + + + + + + + + + + + +