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:
lucasward
2008-02-13 21:05:42 +00:00
parent 695cf0817d
commit 9a830aae19
5 changed files with 133 additions and 27 deletions

View File

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

View File

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

View File

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

View File

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