Use the Chunk API consistently
This commit replaces the usage of List with Chunk where appropriate. Summary of changes: - The Chunk class was moved from the `org.springframework.batch.core.step.item` package to the `org.springframework.batch.item` package - The signature of the method `ItemWriter#write(List)` was changed to `ItemWriter#write(Chunk)` - All implementations of `ItemWriter` were updated to use the Chunk API instead of List - All methods in the `ItemWriteListener` interface were updated to use the Chunk API instead of List - All implementations of `ItemWriteListener` were updated to use the Chunk API instead of List - The constructor of `ChunkRequest` was changed to accept a Chunk instead of a Collection of items - The return type of `ChunkRequest#getItems()` was changed from List to Chunk Resolves #3954
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2018 the original author or authors.
|
||||
* Copyright 2006-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -23,6 +23,7 @@ import java.util.concurrent.Future;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.batch.item.Chunk;
|
||||
import org.springframework.batch.item.ExecutionContext;
|
||||
import org.springframework.batch.item.ItemStream;
|
||||
import org.springframework.batch.item.ItemStreamException;
|
||||
@@ -59,7 +60,7 @@ public class AsyncItemWriter<T> implements ItemStreamWriter<Future<T>>, Initiali
|
||||
* delegate
|
||||
* @throws Exception The exception returned by the Future if one was thrown
|
||||
*/
|
||||
public void write(List<? extends Future<T>> items) throws Exception {
|
||||
public void write(Chunk<? extends Future<T>> items) throws Exception {
|
||||
List<T> list = new ArrayList<>();
|
||||
for (Future<T> future : items) {
|
||||
try {
|
||||
@@ -83,7 +84,7 @@ public class AsyncItemWriter<T> implements ItemStreamWriter<Future<T>>, Initiali
|
||||
}
|
||||
}
|
||||
|
||||
delegate.write(list);
|
||||
delegate.write(new Chunk<>(list));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2021 the original author or authors.
|
||||
* Copyright 2006-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,6 +30,7 @@ import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.StepContribution;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.batch.core.StepExecutionListener;
|
||||
import org.springframework.batch.item.Chunk;
|
||||
import org.springframework.batch.item.ExecutionContext;
|
||||
import org.springframework.batch.item.ItemStream;
|
||||
import org.springframework.batch.item.ItemStreamException;
|
||||
@@ -92,7 +93,7 @@ public class ChunkMessageChannelItemWriter<T>
|
||||
this.replyChannel = replyChannel;
|
||||
}
|
||||
|
||||
public void write(List<? extends T> items) throws Exception {
|
||||
public void write(Chunk<? extends T> items) throws Exception {
|
||||
|
||||
// Block until expecting <= throttle limit
|
||||
while (localState.getExpecting() > throttleLimit) {
|
||||
@@ -283,7 +284,7 @@ public class ChunkMessageChannelItemWriter<T>
|
||||
return expected.get() - actual.get();
|
||||
}
|
||||
|
||||
public <T> ChunkRequest<T> getRequest(List<? extends T> items) {
|
||||
public <T> ChunkRequest<T> getRequest(Chunk<? extends T> items) {
|
||||
return new ChunkRequest<>(current.incrementAndGet(), items, getJobId(), createStepContribution());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2013 the original author or authors.
|
||||
* Copyright 2006-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,7 +20,7 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.batch.core.JobInterruptedException;
|
||||
import org.springframework.batch.core.StepContribution;
|
||||
import org.springframework.batch.core.step.item.Chunk;
|
||||
import org.springframework.batch.item.Chunk;
|
||||
import org.springframework.batch.core.step.item.ChunkProcessor;
|
||||
import org.springframework.batch.core.step.item.FaultTolerantChunkProcessor;
|
||||
import org.springframework.batch.core.step.skip.NonSkippableReadException;
|
||||
@@ -40,6 +40,7 @@ import org.springframework.util.Assert;
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Michael Minella
|
||||
* @author Mahmoud Ben Hassine
|
||||
* @param <S> the type of the items in the chunk to be handled
|
||||
*/
|
||||
@MessageEndpoint
|
||||
@@ -100,7 +101,7 @@ public class ChunkProcessorChunkHandler<S> implements ChunkHandler<S>, Initializ
|
||||
*/
|
||||
private Throwable process(ChunkRequest<S> chunkRequest, StepContribution stepContribution) throws Exception {
|
||||
|
||||
Chunk<S> chunk = new Chunk<>(chunkRequest.getItems());
|
||||
Chunk chunk = chunkRequest.getItems();
|
||||
Throwable failure = null;
|
||||
try {
|
||||
chunkProcessor.process(stepContribution, chunk);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2007 the original author or authors.
|
||||
* Copyright 2006-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,11 +20,13 @@ import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.springframework.batch.core.StepContribution;
|
||||
import org.springframework.batch.item.Chunk;
|
||||
|
||||
/**
|
||||
* Encapsulation of a chunk of items to be processed remotely as part of a step execution.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Mahmoud Ben Hassine
|
||||
* @param <T> the type of the items to process
|
||||
*/
|
||||
public class ChunkRequest<T> implements Serializable {
|
||||
@@ -33,13 +35,13 @@ public class ChunkRequest<T> implements Serializable {
|
||||
|
||||
private final long jobId;
|
||||
|
||||
private final Collection<? extends T> items;
|
||||
private final Chunk<? extends T> items;
|
||||
|
||||
private final StepContribution stepContribution;
|
||||
|
||||
private final int sequence;
|
||||
|
||||
public ChunkRequest(int sequence, Collection<? extends T> items, long jobId, StepContribution stepContribution) {
|
||||
public ChunkRequest(int sequence, Chunk<? extends T> items, long jobId, StepContribution stepContribution) {
|
||||
this.sequence = sequence;
|
||||
this.items = items;
|
||||
this.jobId = jobId;
|
||||
@@ -50,7 +52,7 @@ public class ChunkRequest<T> implements Serializable {
|
||||
return jobId;
|
||||
}
|
||||
|
||||
public Collection<? extends T> getItems() {
|
||||
public Chunk<? extends T> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2021 the original author or authors.
|
||||
* Copyright 2006-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -22,7 +22,7 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.batch.core.StepContribution;
|
||||
import org.springframework.batch.core.StepExecutionListener;
|
||||
import org.springframework.batch.core.step.item.Chunk;
|
||||
import org.springframework.batch.item.Chunk;
|
||||
import org.springframework.batch.core.step.item.ChunkOrientedTasklet;
|
||||
import org.springframework.batch.core.step.item.ChunkProcessor;
|
||||
import org.springframework.batch.core.step.item.FaultTolerantChunkProcessor;
|
||||
@@ -176,7 +176,7 @@ public class RemoteChunkHandlerFactoryBean<T> implements FactoryBean<ChunkHandle
|
||||
@Override
|
||||
protected void write(StepContribution contribution, Chunk<T> inputs, Chunk<T> outputs)
|
||||
throws Exception {
|
||||
doWrite(outputs.getItems());
|
||||
doWrite(outputs);
|
||||
// Do not update the step contribution until the chunks are
|
||||
// actually processed
|
||||
updateStepContribution(contribution, stepContributionSource);
|
||||
|
||||
Reference in New Issue
Block a user