IN PROGRESS - BATCH-896: "DRY" FaultTolerantTasklet implementations

pull up repeatOperations
This commit is contained in:
robokaso
2008-11-03 18:36:16 +00:00
parent 05d12cf226
commit ce719128f2
3 changed files with 15 additions and 12 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);