BATCH-220: More refinements to chunking, both the chunker and dechunker now return a 'result'. The chunker returns a ChunkingResult, and the Dechunker returns a DechunkingResult, allowing for the step to handle exceptions in a uniform way.
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2006-2008 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.domain;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Value object representing the result of chunking.
|
||||
*
|
||||
* @author Lucas Ward
|
||||
*/
|
||||
public class ChunkingResult {
|
||||
|
||||
private final Chunk chunk;
|
||||
|
||||
private final List exceptions;
|
||||
|
||||
public ChunkingResult(Chunk chunk, List exceptions) {
|
||||
this.chunk = chunk;
|
||||
this.exceptions = exceptions;
|
||||
}
|
||||
|
||||
public Chunk getChunk() {
|
||||
return chunk;
|
||||
}
|
||||
|
||||
public List getExceptions() {
|
||||
return exceptions;
|
||||
}
|
||||
}
|
||||
@@ -29,5 +29,5 @@ import org.springframework.batch.item.ItemReader;
|
||||
*/
|
||||
public interface Dechunker {
|
||||
|
||||
ChunkResult dechunk(Chunk chunk) throws Exception;
|
||||
DechunkingResult dechunk(Chunk chunk) throws Exception;
|
||||
}
|
||||
|
||||
@@ -18,47 +18,37 @@ package org.springframework.batch.core.domain;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.core.enums.ShortCodedLabeledEnum;
|
||||
|
||||
/**
|
||||
* Value object representing the result of dechunking a {@link Chunk}. It contains
|
||||
* the id of the chunk that was processed, a list of exceptions, and whether or not
|
||||
* the chunk was successful.
|
||||
*
|
||||
* @author Ben Hale
|
||||
* @author Lucas Ward
|
||||
*/
|
||||
public class ChunkResult {
|
||||
|
||||
public static final ChunkResultType SUCCESS = new ChunkResultType(0, "Success");
|
||||
|
||||
public static final ChunkResultType FAILURE = new ChunkResultType(1, "Failure");
|
||||
|
||||
private final ChunkResultType resultType;
|
||||
public class DechunkingResult {
|
||||
|
||||
private final Long chunkId;
|
||||
|
||||
private final List skippedItems;
|
||||
private final List exceptions;
|
||||
|
||||
private final boolean successful;
|
||||
|
||||
public ChunkResult(ChunkResultType resultType, Long chunkId, List skippedItems) {
|
||||
this.resultType = resultType;
|
||||
public DechunkingResult(boolean successful, Long chunkId, List exceptions) {
|
||||
this.chunkId = chunkId;
|
||||
this.skippedItems = skippedItems;
|
||||
}
|
||||
|
||||
public ChunkResultType getResultType() {
|
||||
return resultType;
|
||||
this.exceptions = exceptions;
|
||||
this.successful = successful;
|
||||
}
|
||||
|
||||
public Long getChunkId() {
|
||||
return chunkId;
|
||||
}
|
||||
|
||||
public List getSkippedItems() {
|
||||
return new ArrayList(skippedItems);
|
||||
public List getExceptions() {
|
||||
return new ArrayList(exceptions);
|
||||
}
|
||||
|
||||
private static class ChunkResultType extends ShortCodedLabeledEnum {
|
||||
|
||||
public ChunkResultType(int code, String label) {
|
||||
super(code, label);
|
||||
}
|
||||
|
||||
|
||||
public boolean isSuccessful() {
|
||||
return successful;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2006-2008 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.domain;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Interface for defining the contract to log out read and write
|
||||
* failures encountered during batch processing.
|
||||
*
|
||||
* @author Lucas Ward
|
||||
*
|
||||
*/
|
||||
public interface ItemFailureLog {
|
||||
|
||||
void log(List exceptions);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user