From ce719128f2b0adbb7785443d99432aab3cafd77b Mon Sep 17 00:00:00 2001 From: robokaso Date: Mon, 3 Nov 2008 18:36:16 +0000 Subject: [PATCH] IN PROGRESS - BATCH-896: "DRY" FaultTolerantTasklet implementations pull up repeatOperations --- .../AbstractFaultTolerantChunkOrientedTasklet.java | 13 +++++++++++-- .../item/FaultTolerantChunkOrientedTasklet.java | 7 ++----- ...nbufferingFaultTolerantChunkOrientedTasklet.java | 7 ++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/AbstractFaultTolerantChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/AbstractFaultTolerantChunkOrientedTasklet.java index 70e1e8c7f..662f6e75d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/AbstractFaultTolerantChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/AbstractFaultTolerantChunkOrientedTasklet.java @@ -14,6 +14,7 @@ import org.springframework.batch.core.step.skip.SkipListenerFailedException; import org.springframework.batch.item.ItemProcessor; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; +import org.springframework.batch.repeat.RepeatOperations; import org.springframework.batch.retry.RecoveryCallback; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; @@ -36,7 +37,7 @@ import org.springframework.core.AttributeAccessor; * @author Robert Kasanicky */ public abstract class AbstractFaultTolerantChunkOrientedTasklet extends AbstractItemOrientedTasklet { - + final static protected String SKIPPED_INPUTS_KEY = "SKIPPED_INPUTS_KEY"; final static protected String SKIPPED_OUTPUTS_KEY = "SKIPPED_OUTPUTS_KEY"; @@ -45,6 +46,8 @@ public abstract class AbstractFaultTolerantChunkOrientedTasklet extends Ab final private RetryOperations retryOperations; + final private RepeatOperations repeatOperations; + final private ItemSkipPolicy writeSkipPolicy; final private ItemSkipPolicy processSkipPolicy; @@ -56,7 +59,8 @@ public abstract class AbstractFaultTolerantChunkOrientedTasklet extends Ab public AbstractFaultTolerantChunkOrientedTasklet(ItemReader itemReader, ItemProcessor itemProcessor, ItemWriter itemWriter, RetryOperations retryOperations, ItemSkipPolicy readSkipPolicy, ItemSkipPolicy processSkipPolicy, - ItemSkipPolicy writeSkipPolicy, Classifier rollbackClassifier) { + ItemSkipPolicy writeSkipPolicy, Classifier rollbackClassifier, + RepeatOperations repeatTemplate) { super(itemReader, itemProcessor, itemWriter); this.retryOperations = retryOperations; @@ -64,12 +68,17 @@ public abstract class AbstractFaultTolerantChunkOrientedTasklet extends Ab this.processSkipPolicy = processSkipPolicy; this.writeSkipPolicy = writeSkipPolicy; this.rollbackClassifier = rollbackClassifier; + this.repeatOperations = repeatTemplate; } protected ItemSkipPolicy getReadSkipPolicy() { return readSkipPolicy; } + protected RepeatOperations getRepeatOperations() { + return repeatOperations; + } + /** * Call all skip listeners in read-process-write order * @param skippedReads read exceptions diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java index 6b0e21552..2d34443fd 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java @@ -52,8 +52,6 @@ public class FaultTolerantChunkOrientedTasklet extends AbstractFaultTolera final static private String INPUT_BUFFER_KEY = "INPUT_BUFFER_KEY"; - final private RepeatOperations repeatOperations; - public FaultTolerantChunkOrientedTasklet(ItemReader itemReader, ItemProcessor itemProcessor, ItemWriter itemWriter, RepeatOperations chunkOperations, RetryOperations retryTemplate, @@ -61,8 +59,7 @@ public class FaultTolerantChunkOrientedTasklet extends AbstractFaultTolera ItemSkipPolicy writeSkipPolicy, ItemSkipPolicy processSkipPolicy) { super(itemReader, itemProcessor, itemWriter, retryTemplate, readSkipPolicy, processSkipPolicy, writeSkipPolicy, - rollbackClassifier); - this.repeatOperations = chunkOperations; + rollbackClassifier, chunkOperations); } /** @@ -85,7 +82,7 @@ public class FaultTolerantChunkOrientedTasklet extends AbstractFaultTolera if (inputs.isEmpty() && outputs.isEmpty()) { - result = repeatOperations.iterate(new RepeatCallback() { + result = getRepeatOperations().iterate(new RepeatCallback() { public ExitStatus doInIteration(final RepeatContext context) throws Exception { I item = read(contribution, skippedReads); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java index 116b1e273..9e41f1df8 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java @@ -34,8 +34,6 @@ import org.springframework.core.AttributeAccessor; public class NonbufferingFaultTolerantChunkOrientedTasklet extends AbstractFaultTolerantChunkOrientedTasklet { - final private RepeatOperations repeatOperations; - public NonbufferingFaultTolerantChunkOrientedTasklet(ItemReader itemReader, ItemProcessor itemProcessor, ItemWriter itemWriter, RepeatOperations chunkOperations, RetryOperations retryTemplate, @@ -43,8 +41,7 @@ public class NonbufferingFaultTolerantChunkOrientedTasklet extends ItemSkipPolicy writeSkipPolicy, ItemSkipPolicy processSkipPolicy) { super(itemReader, itemProcessor, itemWriter, retryTemplate, readSkipPolicy, processSkipPolicy, writeSkipPolicy, - rollbackClassifier); - this.repeatOperations = chunkOperations; + rollbackClassifier, chunkOperations); } /** @@ -56,7 +53,7 @@ public class NonbufferingFaultTolerantChunkOrientedTasklet extends final List inputs = new ArrayList(); final List skippedReads = getBufferedList(attributes, SKIPPED_READS_KEY); - result = repeatOperations.iterate(new RepeatCallback() { + result = getRepeatOperations().iterate(new RepeatCallback() { public ExitStatus doInIteration(final RepeatContext context) throws Exception { I item = read(contribution, skippedReads);