Package org.springframework.batch.core.scope.context

# Class StepContextRepeatCallback

java.lang.Object
org.springframework.batch.core.scope.context.StepContextRepeatCallback

All Implemented Interfaces:
  `RepeatCallback`

public abstract class StepContextRepeatCallback extends Object implements RepeatCallback
Convenient base class for clients who need to do something in a repeat callback inside a `Step`.

Author:
  Dave Syer, Mahmoud Ben Hassine

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StepContextRepeatCallback(StepExecution stepExecution)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract RepeatStatus`
  `doInChunkContext(RepeatContext context, ChunkContext chunkContext)`
  Do the work required for this chunk of the step.
  `RepeatStatus`
  `doInIteration(RepeatContext context)`
  Manage the `StepContext` lifecycle.

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

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

- ## Constructor Details

  - ### StepContextRepeatCallback

    public StepContextRepeatCallback(StepExecution stepExecution)
    Parameters:
      `stepExecution` - instance of `StepExecution` to be used by StepContextRepeatCallback.

- ## Method Details

  - ### doInIteration

    public RepeatStatus doInIteration(RepeatContext context) throws Exception
    Manage the `StepContext` lifecycle. Business processing should be delegated to `doInChunkContext(RepeatContext, ChunkContext)`. This is to ensure that the current thread has a reference to the context, even if the callback is executed in a pooled thread. Handles the registration and unregistration of the step context, so clients should not duplicate those calls.
    Specified by:
      `doInIteration` in interface `RepeatCallback`
    Parameters:
      `context` - the current context passed in by the caller.
    Returns:
      an `RepeatStatus` which is continuable if there is (or may be) more data to process.
    Throws:
      `Exception` - if there is a problem with the processing.
    See Also:
      - `RepeatCallback.doInIteration(RepeatContext)`

  - ### doInChunkContext

    public abstract RepeatStatus doInChunkContext(RepeatContext context, ChunkContext chunkContext) throws Exception
    Do the work required for this chunk of the step. The `ChunkContext` provided is managed by the base class, so that if there is still work to do for the task in hand state can be stored here. In a multi-threaded client, the base class ensures that only one thread at a time can be working on each instance of `ChunkContext`. Workers should signal that they are finished with a context by removing all the attributes they have added. If a worker does not remove them another thread might see stale state.
    Parameters:
      `context` - the current `RepeatContext`
      `chunkContext` - the chunk context in which to carry out the work
    Returns:
      the repeat status from the execution
    Throws:
      `Exception` - implementations can throw an exception if anything goes wrong