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

# Class JobContext

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

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

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

Since:
  3.0
Author:
  Dave Syer, Jimmy Praet (create JobContext based on `StepContext`), Mahmoud Ben Hassine

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JobContext(JobExecution jobExecution)`

- ## 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 job execution itself as a key (i.e.
  `String`
  `getId()`
  `JobExecution`
  `getJobExecution()`
  The current `JobExecution` that is active in this context.
  `Map<String,Object>`
  `getJobExecutionContext()`
  `String`
  `getJobName()`
  Convenient accessor for current job name identifier.
  `Map<String,Object>`
  `getJobParameters()`
  `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 job 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

  - ### JobContext

    public JobContext(JobExecution jobExecution)

- ## Method Details

  - ### getJobName

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

  - ### getSystemProperties

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

  - ### 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`.

  - ### getJobExecution

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

  - ### 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 job execution itself as a key (i.e. two contexts are only equal if their job executions are the same).
    Overrides:
      `equals` in class `SynchronizedAttributeAccessor`

  - ### hashCode

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

  - ### toString

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