public class AggregateItemReader<T> extends java.lang.Object implements ItemReader<java.util.List<T>>
ItemReader
that delivers a list as its item, storing up objects
from the injected ItemReader
until they are ready to be packed out as
a collection. This class must be used as a wrapper for a custom
ItemReader
that can identify the record boundaries. The custom reader
should mark the beginning and end of records by returning an
AggregateItem
which responds true to its query methods
is*()
.ItemReader
is also thread-safe.AggregateItem.isHeader()
,
AggregateItem.isFooter()
Constructor and Description |
---|
AggregateItemReader() |
Modifier and Type | Method and Description |
---|---|
java.util.List<T> |
read()
Get the next list of records.
|
void |
setItemReader(ItemReader<AggregateItem<T>> itemReader) |
public java.util.List<T> read() throws java.lang.Exception
read
in interface ItemReader<java.util.List<T>>
null
if the data source is
exhaustedParseException
- if there is a problem parsing the current record
(but the next one may still be valid)NonTransientResourceException
- if there is a fatal exception in
the underlying resource. After throwing this exception implementations
should endeavour to return null from subsequent calls to read.UnexpectedInputException
- if there is an uncategorised problem
with the input data. Assume potentially transient, so subsequent calls to
read might succeed.java.lang.Exception
- if an there is a non-specific error.ItemReader.read()
public void setItemReader(ItemReader<AggregateItem<T>> itemReader)