Package org.springframework.batch.core.step.item

# Class Chunk<W>

java.lang.Object
org.springframework.batch.core.step.item.Chunk<W>

All Implemented Interfaces:
  `Iterable<W>`

public class Chunk<W> extends Object implements Iterable<W>
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

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `class`
  `Chunk.ChunkIterator`
  Special iterator for a chunk providing the `Chunk.ChunkIterator.remove(Throwable)` method for dynamically removing an item and adding it to the skips.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Chunk()`
  `Chunk(Collection<? extends W> items)`
  `Chunk(Collection<? extends W> items, List<SkipWrapper<W>> skips)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(W item)`
  Add the item to the chunk.
  `void`
  `clear()`
  Clear the items down to signal that we are done.
  `void`
  `clearSkips()`
  Clear only the skips list.
  `List<Exception>`
  `getErrors()`
  `List<W>`
  `getItems()`
  `List<SkipWrapper<W>>`
  `getSkips()`
  `Object`
  `getUserData()`
  `boolean`
  `isBusy()`
  Query the chunk to see if anyone has registered an interest in keeping a reference to it.
  `boolean`
  `isEmpty()`
  `boolean`
  `isEnd()`
  Flag to indicate if the source data is exhausted.
  `Chunk<W>.ChunkIterator`
  `iterator()`
  Get an unmodifiable iterator for the underlying items.
  `void`
  `setBusy(boolean busy)`
  Register an interest in the chunk to prevent it from being cleaned up before the flag is reset to false.
  `void`
  `setEnd()`
  Set the flag to say that this chunk represents an end of stream (there is no more data to process).
  `void`
  `setUserData(Object userData)`
  `int`
  `size()`
  `void`
  `skip(Exception e)`
  Register an anonymous skip.
  `String`
  `toString()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Constructor Details

  - ### Chunk

    public Chunk()

  - ### Chunk

    public Chunk(Collection<? extends W> items)

  - ### Chunk

    public Chunk(Collection<? extends W> items, List<SkipWrapper<W>> skips)

- ## Method Details

  - ### add

    public void add(W item)
    Add the item to the chunk.
    Parameters:
      `item` - the item 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:
      - `Iterable.iterator()`

  - ### size

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

  - ### isEnd

    public boolean isEnd()
    Flag to indicate if the source data is exhausted.
    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`