diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/BatchListenerFactoryHelper.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/BatchListenerFactoryHelper.java index a7c182054..138f45881 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/BatchListenerFactoryHelper.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/BatchListenerFactoryHelper.java @@ -30,7 +30,6 @@ import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.reader.DelegatingItemReader; import org.springframework.batch.item.writer.DelegatingItemWriter; -import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.RepeatOperations; import org.springframework.batch.repeat.listener.RepeatListenerSupport; @@ -113,11 +112,11 @@ class BatchListenerFactoryHelper { } /** - * @param stepOperations + * @param chunkOperations * @param listeners * @return */ - public RepeatOperations addChunkListeners(RepeatOperations stepOperations, BatchListener[] listeners) { + public RepeatOperations addChunkListeners(RepeatOperations chunkOperations, BatchListener[] listeners) { final CompositeChunkListener multicaster = new CompositeChunkListener(); @@ -135,23 +134,23 @@ class BatchListenerFactoryHelper { if (hasChunkListener) { - Assert.state(stepOperations instanceof RepeatTemplate, - "Step operations is injected but not a RepeatTemplate, so chunk listeners cannot also be registered. " + Assert.state(chunkOperations instanceof RepeatTemplate, + "Chunk operations is injected but not a RepeatTemplate, so chunk listeners cannot also be registered. " + "Either inject a RepeatTemplate, or remove the ChunkListener."); - RepeatTemplate stepTemplate = (RepeatTemplate) stepOperations; + RepeatTemplate stepTemplate = (RepeatTemplate) chunkOperations; stepTemplate.registerListener(new RepeatListenerSupport() { - public void before(RepeatContext context) { + public void open(RepeatContext context) { multicaster.beforeChunk(); } - public void after(RepeatContext context, ExitStatus result) { + public void close(RepeatContext context) { multicaster.afterChunk(); } }); } - return stepOperations; + return chunkOperations; } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/DefaultStepFactoryBean.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/DefaultStepFactoryBean.java index 69d941783..c6e6cf922 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/DefaultStepFactoryBean.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/DefaultStepFactoryBean.java @@ -192,12 +192,11 @@ public class DefaultStepFactoryBean extends AbstractStepFactoryBean { BatchListenerFactoryHelper helper = new BatchListenerFactoryHelper(); - stepOperations = new RepeatTemplate(); if (commitInterval > 0) { RepeatTemplate chunkOperations = new RepeatTemplate(); chunkOperations.setCompletionPolicy(new SimpleCompletionPolicy(commitInterval)); - helper.addChunkListeners(stepOperations, listeners); + helper.addChunkListeners(chunkOperations, listeners); step.setChunkOperations(chunkOperations); } @@ -212,6 +211,8 @@ public class DefaultStepFactoryBean extends AbstractStepFactoryBean { step.setStepListeners(stepListeners); + stepOperations = new RepeatTemplate(); + if (taskExecutor != null) { TaskExecutorRepeatTemplate repeatTemplate = new TaskExecutorRepeatTemplate(); repeatTemplate.setTaskExecutor(taskExecutor); diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/DefaultStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/DefaultStepFactoryBeanTests.java index efd30bc5a..6509c5679 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/DefaultStepFactoryBeanTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/DefaultStepFactoryBeanTests.java @@ -217,10 +217,9 @@ public class DefaultStepFactoryBeanTests extends TestCase { assertNull(reader.read()); assertEquals(items.length, written.size()); - int expectedBeforeCount = (items.length / commitInterval ) + 1; - int expectedAdfterCount = (items.length / commitInterval); - assertEquals(expectedAdfterCount , chunkListener.afterCount); - assertEquals(expectedBeforeCount, chunkListener.beforeCount); + int expectedListenerCallCount = (items.length / commitInterval ) + 1; + assertEquals(expectedListenerCallCount, chunkListener.afterCount); + assertEquals(expectedListenerCallCount, chunkListener.beforeCount); } }