Package org.springframework.batch.core.partition.support

# Class AbstractPartitionHandler

java.lang.Object
org.springframework.batch.core.partition.support.AbstractPartitionHandler

All Implemented Interfaces:
  `PartitionHandler`

Direct Known Subclasses:
  `TaskExecutorPartitionHandler`

public abstract class AbstractPartitionHandler extends Object implements PartitionHandler
Base `PartitionHandler` implementation providing common base features. Subclasses are expected to implement only the `doHandle(org.springframework.batch.core.StepExecution, java.util.Set)` method which returns with the result of the execution(s) or an exception if the step failed to process.

Author:
  Sebastien Gerard, Dave Syer, Mahmoud Ben Hassine

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractPartitionHandler()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract Set<StepExecution>`
  `doHandle(StepExecution managerStepExecution, Set<StepExecution> partitionStepExecutions)`
  Executes the specified `StepExecution` instances and returns an updated view of them.
  `int`
  `getGridSize()`
  Returns the number of step executions.
  `Collection<StepExecution>`
  `handle(StepExecutionSplitter stepSplitter, StepExecution managerStepExecution)`
  Main entry point for `PartitionHandler` interface.
  `void`
  `setGridSize(int gridSize)`
  Passed to the `StepExecutionSplitter` in the `handle(StepExecutionSplitter, StepExecution)` method, instructing it how many `StepExecution` instances are required, ideally.

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

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

- ## Constructor Details

  - ### AbstractPartitionHandler

    public AbstractPartitionHandler()

- ## Method Details

  - ### doHandle

    protected abstract Set<StepExecution> doHandle(StepExecution managerStepExecution, Set<StepExecution> partitionStepExecutions) throws Exception
    Executes the specified `StepExecution` instances and returns an updated view of them. Throws an `Exception` if anything goes wrong.
    Parameters:
      `managerStepExecution` - the whole partition execution
      `partitionStepExecutions` - the `StepExecution` instances to execute
    Returns:
      an updated view of these completed `StepExecution` instances
    Throws:
      `Exception` - if anything goes wrong. This allows implementations to be liberal and rely on the caller to translate an exception into a step failure as necessary.

  - ### handle

    public Collection<StepExecution> handle(StepExecutionSplitter stepSplitter, StepExecution managerStepExecution) throws Exception
    Description copied from interface: `PartitionHandler`
    Main entry point for `PartitionHandler` interface. The splitter creates all the executions that need to be farmed out, along with their input parameters (in the form of their `ExecutionContext`). The manager step execution is used to identify the partition and group together the results logically.
    Specified by:
      `handle` in interface `PartitionHandler`
    Parameters:
      `stepSplitter` - a strategy for generating a collection of `StepExecution` instances
      `managerStepExecution` - the manager step execution for the whole partition
    Returns:
      a collection of completed `StepExecution` instances
    Throws:
      `Exception` - if anything goes wrong. This allows implementations to be liberal and rely on the caller to translate an exception into a step failure as necessary.
    See Also:
      - `PartitionHandler.handle(StepExecutionSplitter, StepExecution)`

  - ### getGridSize

    public int getGridSize()
    Returns the number of step executions.
    Returns:
      the number of step executions

  - ### setGridSize

    public void setGridSize(int gridSize)
    Passed to the `StepExecutionSplitter` in the `handle(StepExecutionSplitter, StepExecution)` method, instructing it how many `StepExecution` instances are required, ideally. The `StepExecutionSplitter` is allowed to ignore the grid size in the case of a restart, since the input data partitions must be preserved.
    Parameters:
      `gridSize` - the number of step executions that will be created