Class Chunk<W>

java.lang.Object
org.springframework.batch.item.Chunk<W>
All Implemented Interfaces:
Serializable, Iterable<W>

public class Chunk<W> extends Object implements Iterable<W>, Serializable
Encapsulation of a list of items to be processed and possibly a list of failed items to be skipped. To mark an item as skipped clients should iterate over the chunk using the iterator() method, and if there is a failure call Chunk.ChunkIterator.remove() on the iterator. The skipped items are then available through the chunk.
Since:
2.0
Author:
Dave Syer, Mahmoud Ben Hassine, Jinwoo Bae
See Also:
  • Constructor Details

  • Method Details

    • of

      @SafeVarargs public static <W> Chunk<W> of(W... items)
    • add

      public void add(W item)
      Add the item to the chunk.
      Parameters:
      item - the item to add
    • addAll

      public void addAll(List<W> items)
      Add all items to the chunk.
      Parameters:
      items - the items to add
    • clear

      public void clear()
      Clear the items down to signal that we are done.
    • getItems

      public List<W> getItems()
      Returns:
      a copy of the items to be processed as an unmodifiable list
    • getSkips

      public List<SkipWrapper<W>> getSkips()
      Returns:
      a copy of the skips as an unmodifiable list
    • getErrors

      public List<Exception> getErrors()
      Returns:
      a copy of the anonymous errors as an unmodifiable list
    • skip

      public void skip(Exception e)
      Register an anonymous skip. To skip an individual item, use Chunk.ChunkIterator.remove().
      Parameters:
      e - the exception that caused the skip
    • isEmpty

      public boolean isEmpty()
      Returns:
      true if there are no items in the chunk
    • iterator

      public Chunk<W>.ChunkIterator iterator()
      Get an unmodifiable iterator for the underlying items.
      Specified by:
      iterator in interface Iterable<W>
      See Also:
    • size

      public int size()
      Returns:
      the number of items (excluding skips)
    • isEnd

      public boolean isEnd()
      Flag to indicate if the source data is exhausted.

      Note: This may return false if the last chunk has the same number of items as the configured commit interval. Consequently, in such cases,there will be a last empty chunk that won't be processed. It is recommended to consider this behavior when utilizing this method.

      Returns:
      true if there is no more data to process
    • setEnd

      public void setEnd()
      Set the flag to say that this chunk represents an end of stream (there is no more data to process).
    • isBusy

      public boolean isBusy()
      Query the chunk to see if anyone has registered an interest in keeping a reference to it.
      Returns:
      the busy flag
    • setBusy

      public void setBusy(boolean busy)
      Register an interest in the chunk to prevent it from being cleaned up before the flag is reset to false.
      Parameters:
      busy - the flag to set
    • clearSkips

      public void clearSkips()
      Clear only the skips list.
    • getUserData

      public Object getUserData()
    • setUserData

      public void setUserData(Object userData)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object