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 and Description
    `JobContext(JobExecution jobExecution)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Clean up the context at the end of a step execution.
    `boolean` | `equals(java.lang.Object other)` Extend the base class method to include the job execution itself as a key (i.e.
    `java.lang.String` | `getId()`
    `JobExecution` | `getJobExecution()` The current `JobExecution` that is active in this context.
    `java.util.Map<java.lang.String,java.lang.Object>` | `getJobExecutionContext()`
    `java.lang.String` | `getJobName()` Convenient accessor for current job name identifier.
    `java.util.Map<java.lang.String,java.lang.Object>` | `getJobParameters()`
    `java.util.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(java.lang.String name, java.lang.Runnable callback)` Allow clients to register callbacks for clean up on close.
    `java.lang.Object` | `removeAttribute(java.lang.String name)` Override base class behaviour to ensure destruction callbacks are unregistered as well as the default behaviour.
    `java.lang.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`

- - ### Constructor Detail

    - #### JobContext

          public JobContext(JobExecution jobExecution)

  - ### Method Detail

    - #### getJobName

          public java.lang.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 java.util.Properties getSystemProperties()

      Convenient accessor for System properties to make it easy to access them from placeholder expressions.
      Returns:
        the current System properties

    - #### getJobExecutionContext

          public java.util.Map<java.lang.String,java.lang.Object> getJobExecutionContext()

      Returns:
        a map containing the items from the job `ExecutionContext`

    - #### getJobParameters

          public java.util.Map<java.lang.String,java.lang.Object> getJobParameters()

      Returns:
        a map containing the items from the `JobParameters`

    - #### registerDestructionCallback

          public void registerDestructionCallback(java.lang.String name,
                                                  java.lang.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 java.lang.Object removeAttribute(java.lang.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 java.lang.String getId()

      Returns:
        unique identifier for this context based on the step execution

    - #### equals

          public boolean equals(java.lang.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 java.lang.String toString()

      Overrides:
        `toString` in class `SynchronizedAttributeAccessor`