From 816c4b2532670c4b80d504c06d2410d78bc2eb97 Mon Sep 17 00:00:00 2001 From: trisberg Date: Wed, 12 Nov 2008 02:00:46 +0000 Subject: [PATCH] BATCH-63: added element to --- .../core/configuration/xml/StepParser.java | 30 +++++++++++++++++-- .../configuration/xml/spring-batch-2.0.xsd | 17 +++++++++++ .../StepWithChunkJobParserTests-context.xml | 3 ++ 3 files changed, 47 insertions(+), 3 deletions(-) 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 @@ + + + + + + + + + + + + + + + + + +