diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/configuration/xml/FlowParser.java b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/configuration/xml/FlowParser.java index 3ba8a4df1..8d3cb04af 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/configuration/xml/FlowParser.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/configuration/xml/FlowParser.java @@ -167,10 +167,6 @@ public class FlowParser extends AbstractFlowParser { stateDef, parserContext, false)); list.addAll(createTransition(FlowExecutionStatus.UNKNOWN, FlowExecutionStatus.UNKNOWN.getName(), null, null, stateDef, parserContext, false)); - if (!hasNextAttribute) { - list.addAll(createTransition(FlowExecutionStatus.COMPLETED, FlowExecutionStatus.COMPLETED.getName(), null, null, stateDef, parserContext, - false)); - } } if (hasNextAttribute) { @@ -180,6 +176,9 @@ public class FlowParser extends AbstractFlowParser { } list.add(getStateTransitionReference(parserContext, stateDef, null, shortNextAttribute)); + } else { + list.addAll(createTransition(FlowExecutionStatus.COMPLETED, FlowExecutionStatus.COMPLETED.getName(), null, null, stateDef, parserContext, + false)); } return list; diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/DecisionStepTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/DecisionStepTests.java index ef9f2f631..c2609248e 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/DecisionStepTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/DecisionStepTests.java @@ -71,14 +71,14 @@ public class DecisionStepTests { } @Test - public void testDecisionInvalidExitStatus() throws Exception { + public void testDecisionUnmappedExitStatus() throws Exception { ApplicationContext context = new GenericXmlApplicationContext("classpath:/org/springframework/batch/core/jsr/step/DecisionStepTests-decisionInvalidExitStatus-context.xml"); JobLauncher launcher = context.getBean(JobLauncher.class); Job job = context.getBean(Job.class); JobExecution execution = launcher.run(job, new JobParameters()); - assertEquals(BatchStatus.FAILED, execution.getStatus()); + assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); for (org.springframework.batch.core.StepExecution curExecution : execution.getStepExecutions()) {