From d2f48495981c6739348c7356ec638f488865cd50 Mon Sep 17 00:00:00 2001 From: dhgarrette Date: Sat, 8 Aug 2009 03:04:07 +0000 Subject: [PATCH] BATCH-1360: Returning null from Tasklet.execute() is treated as RepeatStatus.FINISHED. --- .../batch/core/step/tasklet/TaskletStep.java | 4 +++- .../batch/core/step/tasklet/TaskletStepTests.java | 8 ++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java index 3f4841b65..11ef2c26c 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/tasklet/TaskletStep.java @@ -266,7 +266,9 @@ public class TaskletStep extends AbstractStep { try { try { result = tasklet.execute(contribution, chunkContext); - Assert.state(result != null, "Tasklet execution must return a non-null RepeatStatus."); + if(result == null) { + result = RepeatStatus.FINISHED; + } } catch (Exception e) { if (transactionAttribute.rollbackOn(e)) { diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/TaskletStepTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/TaskletStepTests.java index 3d9c3ba67..abc73cef7 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/TaskletStepTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/TaskletStepTests.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.apache.commons.lang.mutable.MutableInt; import org.junit.Before; import org.junit.Test; import org.springframework.batch.core.BatchStatus; @@ -853,12 +854,7 @@ public class TaskletStepTests { JobExecution jobExecutionContext = new JobExecution(jobInstance); StepExecution stepExecution = new StepExecution(step.getName(), jobExecutionContext); step.execute(stepExecution); - assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); - List exceptions = stepExecution.getFailureExceptions(); - assertEquals(1, exceptions.size()); - Throwable exception = exceptions.get(0); - assertTrue(exception instanceof IllegalStateException); - assertEquals("Tasklet execution must return a non-null RepeatStatus.", exception.getMessage()); + assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); } private static class JobRepositoryStub extends JobRepositorySupport {