diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java index 82781ff69..2bb74227e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ChunkOrientedTasklet.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2007 the original author or authors. + * Copyright 2006-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -73,7 +73,7 @@ public class ChunkOrientedTasklet implements Tasklet { chunkContext.removeAttribute(INPUTS_KEY); chunkContext.setComplete(); chunkProvider.postProcess(contribution, inputs); - if (!inputs.isEnd()) { + if (inputs.isEnd()) { contribution.setExitStatus(ExitStatus.FINISHED); } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ChunkOrientedTaskletTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ChunkOrientedTaskletTests.java index a38f54de3..4b9efe1c9 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ChunkOrientedTaskletTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ChunkOrientedTaskletTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2007 the original author or authors. + * Copyright 2006-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.Test; +import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobInstance; import org.springframework.batch.core.JobParameters; @@ -81,4 +82,26 @@ public class ChunkOrientedTaskletTests { assertEquals(0, contribution.getReadCount()); } + @Test + public void testExitCode() throws Exception { + ChunkOrientedTasklet handler = new ChunkOrientedTasklet(new ChunkProvider() { + public Chunk provide(StepContribution contribution) throws Exception { + contribution.incrementReadCount(); + Chunk chunk = new Chunk(); + chunk.add("foo"); + chunk.setEnd(); + return chunk; + } + public void postProcess(StepContribution contribution, Chunk chunk) {}; + }, new ChunkProcessor() { + public void process(StepContribution contribution, Chunk chunk) { + contribution.incrementWriteCount(1); + } + }); + StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( + 123L, new JobParameters(), "job")))); + handler.execute(contribution, context); + assertEquals(ExitStatus.FINISHED.getExitCode(), contribution.getExitStatus().getExitCode()); + } + }