From 6a7a0c7e32d14f9a2dac2a4f2faa1f809ec379c1 Mon Sep 17 00:00:00 2001 From: trisberg Date: Tue, 6 Jan 2009 05:36:15 +0000 Subject: [PATCH] BATCH-968: refactored step/tasklet elements, removed simple-task --- .../core/configuration/xml/StepParser.java | 45 +++++++++--------- .../configuration/xml/spring-batch-2.0.xsd | 47 ++++++------------- ...obExecutionListenerParserTests-context.xml | 4 +- ...BasicProcessTaskJobParserTests-context.xml | 14 +++--- ...erantProcessTaskJobParserTests-context.xml | 12 ++--- ...epWithSimpleTaskJobParserTests-context.xml | 13 ++--- 6 files changed, 56 insertions(+), 79 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 9ca1b58e6..a0b308522 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 @@ -65,18 +65,17 @@ public class StepParser { BeanDefinitionBuilder stateBuilder = BeanDefinitionBuilder.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.StepState"); String stepRef = element.getAttribute("name"); + String taskletRef = element.getAttribute("tasklet"); @SuppressWarnings("unchecked") - List simpleTaskElements = (List) DomUtils.getChildElementsByTagName(element, "simple-task"); - @SuppressWarnings("unchecked") - List processTaskElements = (List) DomUtils.getChildElementsByTagName(element, "item-task"); - if (simpleTaskElements.size() > 0) { - Object task = parseSimpleTask(simpleTaskElements.get(0), parserContext); + List processTaskElements = (List) DomUtils.getChildElementsByTagName(element, "tasklet"); + if (StringUtils.hasText(taskletRef)) { + Object task = handleTaskletStep(element, taskletRef, parserContext); stateBuilder.addConstructorArgValue(stepRef); stateBuilder.addConstructorArgValue(task); } else if (processTaskElements.size() > 0) { - Object task = parseProcessTask(processTaskElements.get(0), parserContext); + Object task = handleChunkOrientedTaskletStep(element, processTaskElements.get(0), parserContext); stateBuilder.addConstructorArgValue(stepRef); stateBuilder.addConstructorArgValue(task); } @@ -191,29 +190,29 @@ public class StepParser { } /** - * @param element + * @param stepElement + * @param taskletRef * @param parserContext * @return the TaskletStep bean */ - protected RootBeanDefinition parseSimpleTask(Element element, ParserContext parserContext) { + protected RootBeanDefinition handleTaskletStep(Element stepElement, String taskletRef, ParserContext parserContext) { RootBeanDefinition bd = new RootBeanDefinition("org.springframework.batch.core.step.tasklet.TaskletStep", null, null); - String taskletBeanId = element.getAttribute("tasklet"); - if (StringUtils.hasText(taskletBeanId)) { - RuntimeBeanReference taskletRef = new RuntimeBeanReference(taskletBeanId); - bd.getPropertyValues().addPropertyValue("tasklet", taskletRef); + if (StringUtils.hasText(taskletRef)) { + RuntimeBeanReference taskletBeanRef = new RuntimeBeanReference(taskletRef); + bd.getPropertyValues().addPropertyValue("tasklet", taskletBeanRef); } - String jobRepository = element.getAttribute("job-repository"); - RuntimeBeanReference jobRepositoryRef = new RuntimeBeanReference(jobRepository); - bd.getPropertyValues().addPropertyValue("jobRepository", jobRepositoryRef); + String jobRepositoryRef = stepElement.getAttribute("job-repository"); + RuntimeBeanReference jobRepositoryBeanRef = new RuntimeBeanReference(jobRepositoryRef); + bd.getPropertyValues().addPropertyValue("jobRepository", jobRepositoryBeanRef); - String transactionManager = element.getAttribute("transaction-manager"); - RuntimeBeanReference tx = new RuntimeBeanReference(transactionManager); - bd.getPropertyValues().addPropertyValue("transactionManager", tx); + String transactionManagerRef = stepElement.getAttribute("transaction-manager"); + RuntimeBeanReference transactionManagerBeanRef = new RuntimeBeanReference(transactionManagerRef); + bd.getPropertyValues().addPropertyValue("transactionManager", transactionManagerBeanRef); - handleListenersElement(element, bd, parserContext, "stepExecutionListeners"); + handleListenersElement(stepElement, bd, parserContext, "stepExecutionListeners"); bd.setRole(BeanDefinition.ROLE_SUPPORT); @@ -226,7 +225,7 @@ public class StepParser { * @param parserContext * @return the TaskletStep bean */ - protected RootBeanDefinition parseProcessTask(Element element, ParserContext parserContext) { + protected RootBeanDefinition handleChunkOrientedTaskletStep(Element stepElement, Element element, ParserContext parserContext) { RootBeanDefinition bd; @@ -286,11 +285,11 @@ public class StepParser { bd.getPropertyValues().addPropertyValue("taskExecutor", taskExecutorRef); } - String jobRepository = element.getAttribute("job-repository"); + String jobRepository = stepElement.getAttribute("job-repository"); RuntimeBeanReference jobRepositoryRef = new RuntimeBeanReference(jobRepository); bd.getPropertyValues().addPropertyValue("jobRepository", jobRepositoryRef); - String transactionManager = element.getAttribute("transaction-manager"); + String transactionManager = stepElement.getAttribute("transaction-manager"); RuntimeBeanReference tx = new RuntimeBeanReference(transactionManager); bd.getPropertyValues().addPropertyValue("transactionManager", tx); @@ -328,7 +327,7 @@ public class StepParser { handleExceptionElement(element, parserContext, bd, "fatal-exception-classes", "fatalExceptionClasses", isFaultTolerant); - handleListenersElement(element, bd, parserContext, "listeners"); + handleListenersElement(stepElement, bd, parserContext, "listeners"); handleRetryListenersElement(element, bd, 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 dbfde2269..051650ef3 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 @@ -133,6 +133,13 @@ + + + + The tasklet is a reference to another bean definition that defines implements the Tasklet interface. + + + @@ -210,29 +217,10 @@ - - - - + + + - - - - - - - - - - - - - - - - - - - + - - - - - + + - + - + diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/JobExecutionListenerParserTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/JobExecutionListenerParserTests-context.xml index 7594b5f35..05fa05e7d 100644 --- a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/JobExecutionListenerParserTests-context.xml +++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/JobExecutionListenerParserTests-context.xml @@ -7,9 +7,7 @@ - - - + diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithBasicProcessTaskJobParserTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithBasicProcessTaskJobParserTests-context.xml index b766c4b33..56ae98cfc 100644 --- a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithBasicProcessTaskJobParserTests-context.xml +++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithBasicProcessTaskJobParserTests-context.xml @@ -8,17 +8,17 @@ - - - - - - + + + + + diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithFaultTolerantProcessTaskJobParserTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithFaultTolerantProcessTaskJobParserTests-context.xml index 9db2caa8a..769cfed04 100644 --- a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithFaultTolerantProcessTaskJobParserTests-context.xml +++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithFaultTolerantProcessTaskJobParserTests-context.xml @@ -8,16 +8,12 @@ - - - - - @@ -27,7 +23,11 @@ org.springframework.dao.DataIntegrityViolationException, - + + + + + diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithSimpleTaskJobParserTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithSimpleTaskJobParserTests-context.xml index 7614991ee..71ab090a3 100644 --- a/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithSimpleTaskJobParserTests-context.xml +++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/configuration/xml/StepWithSimpleTaskJobParserTests-context.xml @@ -7,16 +7,13 @@ - - + - - - - - - + + + +