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 java.lang.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 and Description
    `StepContextRepeatCallback(StepExecution stepExecution)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### StepContextRepeatCallback

          public StepContextRepeatCallback(StepExecution stepExecution)

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

  - ### Method Detail

    - #### doInIteration

          public RepeatStatus doInIteration(RepeatContext context)
                                     throws java.lang.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:
        `java.lang.Exception` - if there is a problem with the processing.
      See Also:
        `RepeatCallback.doInIteration(RepeatContext)`

    - #### doInChunkContext

          public abstract RepeatStatus doInChunkContext(RepeatContext context,
                                                        ChunkContext chunkContext)
                                                 throws java.lang.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:
        `java.lang.Exception` - implementations can throw an exception if anything goes wrong