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

# Class StepContext

java.lang.Object
org.springframework.batch.repeat.context.SynchronizedAttributeAccessor
org.springframework.batch.core.scope.context.StepContext

All Implemented Interfaces:
  `org.springframework.core.AttributeAccessor`

public class StepContext extends SynchronizedAttributeAccessor
A context object that can be used to interrogate the current `StepExecution` and some of its associated properties using expressions based on bean paths. Has public getters for the step execution and convenience methods for accessing commonly used properties like the `ExecutionContext` associated with the step or its enclosing job execution.

Author:
  Dave Syer, Michael Minella, Mahmoud Ben Hassine, Nicolas Widart

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StepContext(StepExecution stepExecution)`
  Create a new instance of `StepContext` for this `StepExecution`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Clean up the context at the end of a step execution.
  `boolean`
  `equals(Object other)`
  Extend the base class method to include the step execution itself as a key (i.e.
  `String`
  `getId()`
  `Map<String,Object>`
  `getJobExecutionContext()`
  `Long`
  `getJobInstanceId()`
  Convenient accessor for current `JobInstance` identifier.
  `String`
  `getJobName()`
  Convenient accessor for current job name identifier.
  `Map<String,Object>`
  `getJobParameters()`
  `StepExecution`
  `getStepExecution()`
  The current `StepExecution` that is active in this context.
  `Map<String,Object>`
  `getStepExecutionContext()`
  `String`
  `getStepName()`
  Convenient accessor for current step name identifier.
  `Properties`
  `getSystemProperties()`
  Convenient accessor for System properties to make it easy to access them from placeholder expressions.
  `int`
  `hashCode()`
  Overrides the default behaviour to provide a hash code based only on the step execution.
  `void`
  `registerDestructionCallback(String name, Runnable callback)`
  Allow clients to register callbacks for clean up on close.
  `Object`
  `removeAttribute(String name)`
  Override base class behaviour to ensure destruction callbacks are unregistered as well as the default behaviour.
  `String`
  `toString()`

  ### Methods inherited from class org.springframework.batch.repeat.context.SynchronizedAttributeAccessor

  `attributeNames, getAttribute, hasAttribute, setAttribute, setAttributeIfAbsent`

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

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

  ### Methods inherited from interface org.springframework.core.AttributeAccessor

  `computeAttribute`

- ## Constructor Details

  - ### StepContext

    public StepContext(StepExecution stepExecution)
    Create a new instance of `StepContext` for this `StepExecution`.
    Parameters:
      `stepExecution` - a step execution

- ## Method Details

  - ### getStepName

    public String getStepName()
    Convenient accessor for current step name identifier. Usually this is the same as the bean name of the step that is executing (but might not be e.g. in a partition).
    Returns:
      the step name identifier of the current `StepExecution`

  - ### getJobName

    public String getJobName()
    Convenient accessor for current job name identifier.
    Returns:
      the job name identifier of the enclosing `JobInstance` associated with the current `StepExecution`

  - ### getJobInstanceId

    public Long getJobInstanceId()
    Convenient accessor for current `JobInstance` identifier.
    Returns:
      the identifier of the enclosing `JobInstance` associated with the current `StepExecution`

  - ### getSystemProperties

    public Properties getSystemProperties()
    Convenient accessor for System properties to make it easy to access them from placeholder expressions.
    Returns:
      the current System properties

  - ### getStepExecutionContext

    public Map<String,Object> getStepExecutionContext()
    Returns:
      a map containing the items from the step `ExecutionContext`

  - ### getJobExecutionContext

    public Map<String,Object> getJobExecutionContext()
    Returns:
      a map containing the items from the job `ExecutionContext`

  - ### getJobParameters

    public Map<String,Object> getJobParameters()
    Returns:
      a map containing the items from the `JobParameters`

  - ### registerDestructionCallback

    public void registerDestructionCallback(String name, Runnable callback)
    Allow clients to register callbacks for clean up on close.
    Parameters:
      `name` - the callback id (unique attribute key in this context)
      `callback` - a callback to execute on close

  - ### removeAttribute

    @Nullable public Object removeAttribute(String name)
    Override base class behaviour to ensure destruction callbacks are unregistered as well as the default behaviour.
    Specified by:
      `removeAttribute` in interface `org.springframework.core.AttributeAccessor`
    Overrides:
      `removeAttribute` in class `SynchronizedAttributeAccessor`
    See Also:
      - `SynchronizedAttributeAccessor.removeAttribute(String)`

  - ### close

    public void close()
    Clean up the context at the end of a step execution. Must be called once at the end of a step execution to honour the destruction callback contract from the `StepScope`.

  - ### getStepExecution

    public StepExecution getStepExecution()
    The current `StepExecution` that is active in this context.
    Returns:
      the current `StepExecution`

  - ### getId

    public String getId()
    Returns:
      unique identifier for this context based on the step execution

  - ### equals

    public boolean equals(Object other)
    Extend the base class method to include the step execution itself as a key (i.e. two contexts are only equal if their step executions are the same).
    Overrides:
      `equals` in class `SynchronizedAttributeAccessor`
    See Also:
      - `SynchronizedAttributeAccessor.equals(Object)`

  - ### hashCode

    public int hashCode()
    Overrides the default behaviour to provide a hash code based only on the step execution.
    Overrides:
      `hashCode` in class `SynchronizedAttributeAccessor`
    See Also:
      - `SynchronizedAttributeAccessor.hashCode()`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `SynchronizedAttributeAccessor`