From 2d6a9de873f141ae0b3a2ed6f199780ad939cfc9 Mon Sep 17 00:00:00 2001 From: dhgarrette Date: Thu, 6 Aug 2009 05:20:02 +0000 Subject: [PATCH] BATCH-1360: Throw helpful error from if Tasklet.execute() returns null --- .../batch/core/step/tasklet/TaskletStep.java | 1 + .../core/step/tasklet/TaskletStepTests.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) 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 2cd86e8d4..3f4841b65 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,6 +266,7 @@ public class TaskletStep extends AbstractStep { try { try { result = tasklet.execute(contribution, chunkContext); + Assert.state(result != null, "Tasklet execution must return a non-null RepeatStatus."); } 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 d67b0cc41..3d9c3ba67 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 @@ -843,6 +843,24 @@ public class TaskletStepTests { } + @Test + public void testTaskletExecuteReturnNull() throws Exception { + step.setTasklet(new Tasklet() { + public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { + return null; + } + }); + 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()); + } + private static class JobRepositoryStub extends JobRepositorySupport { private int updateCount = 0;