OPEN - BATCH-803: Add non-buffering ChunkOrientedTasklet (or option in existing one) plus flag for factory bean
tasklet classes renaming
This commit is contained in:
@@ -21,7 +21,7 @@ import org.springframework.batch.item.ItemWriter;
|
||||
* @param <I> input item type
|
||||
* @param <O> output item type
|
||||
*/
|
||||
public abstract class AbstractItemProcessingTasklet<I, O> implements Tasklet {
|
||||
public abstract class AbstractItemOrientedTasklet<I, O> implements Tasklet {
|
||||
|
||||
protected final Log logger = LogFactory.getLog(getClass());
|
||||
|
||||
@@ -33,7 +33,7 @@ public abstract class AbstractItemProcessingTasklet<I, O> implements Tasklet {
|
||||
|
||||
protected final MulticasterBatchListener<I, O> listener = new MulticasterBatchListener<I, O>();
|
||||
|
||||
public AbstractItemProcessingTasklet(ItemReader<? extends I> itemReader,
|
||||
public AbstractItemOrientedTasklet(ItemReader<? extends I> itemReader,
|
||||
ItemProcessor<? super I, ? extends O> itemProcessor, ItemWriter<? super O> itemWriter) {
|
||||
this.itemReader = itemReader;
|
||||
this.itemProcessor = itemProcessor;
|
||||
@@ -51,7 +51,7 @@ import org.springframework.core.AttributeAccessor;
|
||||
* @author Dave Syer
|
||||
* @author Robert Kasanicky
|
||||
*/
|
||||
public class ChunkOrientedTasklet<T, S> extends AbstractItemProcessingTasklet<T,S> {
|
||||
public class FaultTolerantChunkOrientedTasklet<T, S> extends AbstractItemOrientedTasklet<T,S> {
|
||||
|
||||
private static final String INPUT_BUFFER_KEY = "INPUT_BUFFER_KEY";
|
||||
|
||||
@@ -70,7 +70,7 @@ public class ChunkOrientedTasklet<T, S> extends AbstractItemProcessingTasklet<T,
|
||||
final private Classifier<Throwable, Boolean> rollbackClassifier;
|
||||
|
||||
|
||||
public ChunkOrientedTasklet(ItemReader<? extends T> itemReader,
|
||||
public FaultTolerantChunkOrientedTasklet(ItemReader<? extends T> itemReader,
|
||||
ItemProcessor<? super T, ? extends S> itemProcessor, ItemWriter<? super S> itemWriter,
|
||||
RepeatOperations chunkOperations, RetryOperations retryTemplate,
|
||||
Classifier<Throwable, Boolean> rollbackClassifier, ItemSkipPolicy readSkipPolicy,
|
||||
@@ -197,7 +197,7 @@ public class ChunkOrientedTasklet<T, S> extends AbstractItemProcessingTasklet<T,
|
||||
/**
|
||||
* Incorporate retry into the item processor stage.
|
||||
*
|
||||
* @see org.springframework.batch.core.step.item.ChunkOrientedTasklet#process(org.springframework.batch.core.StepContribution,
|
||||
* @see org.springframework.batch.core.step.item.FaultTolerantChunkOrientedTasklet#process(org.springframework.batch.core.StepContribution,
|
||||
* org.springframework.batch.core.step.item.Chunk,
|
||||
* org.springframework.batch.core.step.item.Chunk)
|
||||
*/
|
||||
@@ -22,7 +22,7 @@ import org.springframework.core.AttributeAccessor;
|
||||
* @author Dave Syer
|
||||
* @author Robert Kasanicky
|
||||
*/
|
||||
public class SimpleChunkOrientedTasklet<I, O> extends AbstractItemProcessingTasklet<I, O> {
|
||||
public class SimpleChunkOrientedTasklet<I, O> extends AbstractItemOrientedTasklet<I, O> {
|
||||
|
||||
private RepeatOperations repeatOperations;
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ public class SkipLimitStepFactoryBean<T, S> extends SimpleStepFactoryBean<T, S>
|
||||
exceptions.addAll(new ArrayList<Class<? extends Throwable>>(retryableExceptionClasses));
|
||||
ItemSkipPolicy writeSkipPolicy = new LimitCheckingItemSkipPolicy(skipLimit, exceptions,
|
||||
new ArrayList<Class<? extends Throwable>>(fatalExceptionClasses));
|
||||
ChunkOrientedTasklet<T, S> tasklet = new ChunkOrientedTasklet<T, S>(getItemReader(), getItemProcessor(),
|
||||
FaultTolerantChunkOrientedTasklet<T, S> tasklet = new FaultTolerantChunkOrientedTasklet<T, S>(getItemReader(), getItemProcessor(),
|
||||
getItemWriter(), getChunkOperations(), retryTemplate, rollbackClassifier, readSkipPolicy,
|
||||
writeSkipPolicy, writeSkipPolicy);
|
||||
tasklet.setListeners(getListeners());
|
||||
|
||||
@@ -47,7 +47,7 @@ import org.springframework.batch.support.Classifier;
|
||||
* @author Dave Syer
|
||||
*
|
||||
*/
|
||||
public class StatefulRetryTaskletTests {
|
||||
public class FaultTolerantChunkOrientedTaskletTests {
|
||||
|
||||
private Log logger = LogFactory.getLog(getClass());
|
||||
|
||||
@@ -61,7 +61,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
private List<Integer> processed = new ArrayList<Integer>();
|
||||
|
||||
private ChunkOrientedTasklet<Integer, String> handler;
|
||||
private FaultTolerantChunkOrientedTasklet<Integer, String> handler;
|
||||
|
||||
private RepeatTemplate chunkOperations = new RepeatTemplate();
|
||||
|
||||
@@ -109,7 +109,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
@Test
|
||||
public void testBasicHandle() throws Exception {
|
||||
handler = new ChunkOrientedTasklet<Integer, String>(itemReader, itemProcessor, itemWriter, chunkOperations,
|
||||
handler = new FaultTolerantChunkOrientedTasklet<Integer, String>(itemReader, itemProcessor, itemWriter, chunkOperations,
|
||||
retryTemplate, rollbackClassifier, readSkipPolicy, writeSkipPolicy, writeSkipPolicy);
|
||||
StepContribution contribution = new StepExecution("foo", null).createStepContribution();
|
||||
handler.execute(contribution, new BasicAttributeAccessor());
|
||||
@@ -118,7 +118,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
@Test
|
||||
public void testSkipOnRead() throws Exception {
|
||||
handler = new ChunkOrientedTasklet<Integer, String>(new ItemReader<Integer>() {
|
||||
handler = new FaultTolerantChunkOrientedTasklet<Integer, String>(new ItemReader<Integer>() {
|
||||
public Integer read() throws Exception, UnexpectedInputException, NoWorkFoundException, ParseException {
|
||||
throw new RuntimeException("Barf!");
|
||||
}
|
||||
@@ -140,7 +140,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
@Test
|
||||
public void testSkipSingleItemOnWrite() throws Exception {
|
||||
handler = new ChunkOrientedTasklet<Integer, String>(itemReader, itemProcessor, new ItemWriter<String>() {
|
||||
handler = new FaultTolerantChunkOrientedTasklet<Integer, String>(itemReader, itemProcessor, new ItemWriter<String>() {
|
||||
public void write(List<? extends String> items) throws Exception {
|
||||
written.addAll(items);
|
||||
throw new RuntimeException("Barf!");
|
||||
@@ -165,7 +165,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
@Test
|
||||
public void testSkipMultipleItemsOnWrite() throws Exception {
|
||||
handler = new ChunkOrientedTasklet<Integer, String>(itemReader, itemProcessor, new ItemWriter<String>() {
|
||||
handler = new FaultTolerantChunkOrientedTasklet<Integer, String>(itemReader, itemProcessor, new ItemWriter<String>() {
|
||||
public void write(List<? extends String> items) throws Exception {
|
||||
logger.debug("Writing items: " + items);
|
||||
written.addAll(items);
|
||||
@@ -217,7 +217,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
@Test
|
||||
public void testSkipSingleItemOnProcess() throws Exception {
|
||||
handler = new ChunkOrientedTasklet<Integer, String>(itemReader, new ItemProcessor<Integer, String>() {
|
||||
handler = new FaultTolerantChunkOrientedTasklet<Integer, String>(itemReader, new ItemProcessor<Integer, String>() {
|
||||
public String process(Integer item) throws Exception {
|
||||
logger.debug("Processing item: " + item);
|
||||
processed.add(item);
|
||||
@@ -257,7 +257,7 @@ public class StatefulRetryTaskletTests {
|
||||
|
||||
@Test
|
||||
public void testSkipOverLimitOnProcess() throws Exception {
|
||||
handler = new ChunkOrientedTasklet<Integer, String>(itemReader, new ItemProcessor<Integer, String>() {
|
||||
handler = new FaultTolerantChunkOrientedTasklet<Integer, String>(itemReader, new ItemProcessor<Integer, String>() {
|
||||
public String process(Integer item) throws Exception {
|
||||
logger.debug("Processing item: " + item);
|
||||
processed.add(item);
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
package org.springframework.batch.core.step.tasklet;
|
||||
|
||||
import org.springframework.batch.core.step.item.ChunkOrientedTasklet;
|
||||
import org.springframework.batch.core.step.item.FaultTolerantChunkOrientedTasklet;
|
||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.batch.item.ItemWriter;
|
||||
@@ -45,7 +45,7 @@ public class SimpleChunkOrientedTasklet<T> extends org.springframework.batch.cor
|
||||
|
||||
/**
|
||||
* Creates a {@link PassthroughItemProcessor} and uses it to create an
|
||||
* instance of {@link ChunkOrientedTasklet}.
|
||||
* instance of {@link FaultTolerantChunkOrientedTasklet}.
|
||||
*/
|
||||
public SimpleChunkOrientedTasklet(ItemReader<T> itemReader, ItemWriter<T> itemWriter) {
|
||||
super(itemReader, new PassthroughItemProcessor<T>(), itemWriter, repeatTemplate);
|
||||
@@ -53,7 +53,7 @@ public class SimpleChunkOrientedTasklet<T> extends org.springframework.batch.cor
|
||||
|
||||
/**
|
||||
* Creates a {@link PassthroughItemProcessor} and uses it to create an
|
||||
* instance of {@link ChunkOrientedTasklet}.
|
||||
* instance of {@link FaultTolerantChunkOrientedTasklet}.
|
||||
*/
|
||||
public SimpleChunkOrientedTasklet(ItemReader<T> itemReader, ItemWriter<T> itemWriter, RepeatOperations repeatOperations) {
|
||||
super(itemReader, new PassthroughItemProcessor<T>(), itemWriter, repeatOperations);
|
||||
|
||||
Reference in New Issue
Block a user