RESOLVED - BATCH-1143: Standalone <step/> should not be allowed to have "tasklet" attribute and <tasklet/> together
This commit is contained in:
@@ -48,6 +48,35 @@ public abstract class AbstractStepParser {
|
||||
|
||||
private StepListenerParser stepListenerParser = new StepListenerParser();
|
||||
|
||||
/**
|
||||
* @param element
|
||||
* @param parserContext
|
||||
* @return a BeanDefinition if possible
|
||||
*/
|
||||
protected AbstractBeanDefinition parseTasklet(Element element, ParserContext parserContext) {
|
||||
|
||||
String jobRepositoryRef = element.getAttribute("job-repository");
|
||||
String taskletRef = element.getAttribute("tasklet");
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Element> taskletElements = (List<Element>) DomUtils.getChildElementsByTagName(element, "tasklet");
|
||||
AbstractBeanDefinition bd = null;
|
||||
if (StringUtils.hasText(taskletRef)) {
|
||||
if (taskletElements.size() > 0) {
|
||||
parserContext.getReaderContext().error(
|
||||
"The <" + taskletElements.get(0).getNodeName()
|
||||
+ "> element can't be combined with the 'tasklet=\"" + taskletRef
|
||||
+ "\"' attribute specification for <" + element.getNodeName() + ">", element);
|
||||
}
|
||||
bd = parseTaskletRef(element, taskletRef, parserContext, jobRepositoryRef);
|
||||
}
|
||||
else if (taskletElements.size() > 0) {
|
||||
Element taskElement = taskletElements.get(0);
|
||||
bd = parseTaskletElement(element, taskElement, parserContext, jobRepositoryRef);
|
||||
}
|
||||
return bd;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param stepElement
|
||||
* @param taskletRef
|
||||
|
||||
@@ -15,13 +15,9 @@
|
||||
*/
|
||||
package org.springframework.batch.core.configuration.xml;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
import org.springframework.beans.factory.support.GenericBeanDefinition;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.util.xml.DomUtils;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
/**
|
||||
@@ -42,28 +38,14 @@ public class StandaloneStepParser extends AbstractStepParser {
|
||||
* @param parserContext the parser context for the bean factory
|
||||
*/
|
||||
public AbstractBeanDefinition parse(Element element, ParserContext parserContext) {
|
||||
|
||||
String taskletRef = element.getAttribute("tasklet");
|
||||
String jobRepositoryRef = element.getAttribute("job-repository");
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Element> processTaskElements = (List<Element>) DomUtils.getChildElementsByTagName(element, "tasklet");
|
||||
AbstractBeanDefinition bd = null;
|
||||
if (StringUtils.hasText(taskletRef)) {
|
||||
bd = parseTaskletRef(element, taskletRef, parserContext, jobRepositoryRef);
|
||||
}
|
||||
else if (processTaskElements.size() > 0) {
|
||||
Element taskElement = processTaskElements.get(0);
|
||||
bd = parseTaskletElement(element, taskElement, parserContext, jobRepositoryRef);
|
||||
}
|
||||
else {
|
||||
AbstractBeanDefinition bd = parseTasklet(element, parserContext);
|
||||
if (bd == null) {
|
||||
bd = new GenericBeanDefinition();
|
||||
setUpBeanDefinition(element, bd, parserContext, jobRepositoryRef);
|
||||
setUpBeanDefinition(element, bd, parserContext, element.getAttribute("job-repository"));
|
||||
}
|
||||
bd.setAbstract(Boolean.valueOf(element.getAttribute("abstract")));
|
||||
|
||||
return bd;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<tasklet reader="reader" writer="writer" commit-interval="5"/>
|
||||
</step>
|
||||
<step id="s2" ref="standalone2" next="s3"/>
|
||||
<step id="s3" parent="baseStep" tasklet="dummyTasklet" next="s4"/>
|
||||
<step id="s3" tasklet="dummyTasklet" parent="baseStep" next="s4"/>
|
||||
<step id="s4" ref="standalone4"/>
|
||||
</job>
|
||||
|
||||
@@ -19,9 +19,7 @@
|
||||
<tasklet reader="reader" writer="writer" commit-interval="5"/>
|
||||
</step>
|
||||
|
||||
<step id="standalone4" tasklet="dummyTasklet" parent="baseStep">
|
||||
<tasklet reader="reader" writer="writer" commit-interval="5"/>
|
||||
</step>
|
||||
<step id="standalone4" tasklet="dummyTasklet" parent="baseStep"/>
|
||||
|
||||
<step id="baseStep" abstract="true">
|
||||
<listeners>
|
||||
|
||||
Reference in New Issue
Block a user