IN PROGRESS - BATCH-896: "DRY" FaultTolerantTasklet implementations
pull up repeatOperations
This commit is contained in:
@@ -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<I, O> extends AbstractItemOrientedTasklet<I, O> {
|
||||
|
||||
|
||||
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<I, O> 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<I, O> extends Ab
|
||||
public AbstractFaultTolerantChunkOrientedTasklet(ItemReader<? extends I> itemReader,
|
||||
ItemProcessor<? super I, ? extends O> itemProcessor, ItemWriter<? super O> itemWriter,
|
||||
RetryOperations retryOperations, ItemSkipPolicy readSkipPolicy, ItemSkipPolicy processSkipPolicy,
|
||||
ItemSkipPolicy writeSkipPolicy, Classifier<Throwable, Boolean> rollbackClassifier) {
|
||||
ItemSkipPolicy writeSkipPolicy, Classifier<Throwable, Boolean> rollbackClassifier,
|
||||
RepeatOperations repeatTemplate) {
|
||||
|
||||
super(itemReader, itemProcessor, itemWriter);
|
||||
this.retryOperations = retryOperations;
|
||||
@@ -64,12 +68,17 @@ public abstract class AbstractFaultTolerantChunkOrientedTasklet<I, O> 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
|
||||
|
||||
@@ -52,8 +52,6 @@ public class FaultTolerantChunkOrientedTasklet<I, S> extends AbstractFaultTolera
|
||||
|
||||
final static private String INPUT_BUFFER_KEY = "INPUT_BUFFER_KEY";
|
||||
|
||||
final private RepeatOperations repeatOperations;
|
||||
|
||||
public FaultTolerantChunkOrientedTasklet(ItemReader<? extends I> itemReader,
|
||||
ItemProcessor<? super I, ? extends S> itemProcessor, ItemWriter<? super S> itemWriter,
|
||||
RepeatOperations chunkOperations, RetryOperations retryTemplate,
|
||||
@@ -61,8 +59,7 @@ public class FaultTolerantChunkOrientedTasklet<I, S> 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<I, S> 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);
|
||||
|
||||
|
||||
@@ -34,8 +34,6 @@ import org.springframework.core.AttributeAccessor;
|
||||
public class NonbufferingFaultTolerantChunkOrientedTasklet<I, O> extends
|
||||
AbstractFaultTolerantChunkOrientedTasklet<I, O> {
|
||||
|
||||
final private RepeatOperations repeatOperations;
|
||||
|
||||
public NonbufferingFaultTolerantChunkOrientedTasklet(ItemReader<? extends I> itemReader,
|
||||
ItemProcessor<? super I, ? extends O> itemProcessor, ItemWriter<? super O> itemWriter,
|
||||
RepeatOperations chunkOperations, RetryOperations retryTemplate,
|
||||
@@ -43,8 +41,7 @@ public class NonbufferingFaultTolerantChunkOrientedTasklet<I, O> 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<I, O> extends
|
||||
final List<I> inputs = new ArrayList<I>();
|
||||
|
||||
final List<Exception> 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);
|
||||
|
||||
Reference in New Issue
Block a user