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

# Class JobSynchronizationManager

java.lang.Object
org.springframework.batch.core.scope.context.JobSynchronizationManager

public class JobSynchronizationManager extends Object
Central convenience class for framework use in managing the job scope context. Generally only to be used by implementations of `Job`. N.B. it is the responsibility of every `Job` implementation to ensure that a `JobContext` is available on every thread that might be involved in a job execution, including worker threads from a pool.

Since:
  3.0
Author:
  Dave Syer, Jimmy Praet, Mahmoud Ben Hassine

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JobSynchronizationManager()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `close()`
  Method for unregistering the current context - should always and only be used by in conjunction with a matching `register(JobExecution)` to ensure that `getContext()` always returns the correct value.
  `static JobContext`
  `getContext()`
  Getter for the current context if there is one, otherwise returns `null`.
  `static JobContext`
  `register(JobExecution JobExecution)`
  Register a context with the current thread - always put a matching `close()` call in a finally block to ensure that the correct context is available in the enclosing block.
  `static void`
  `release()`
  A convenient "deep" close operation.

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

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

- ## Constructor Details

  - ### JobSynchronizationManager

    public JobSynchronizationManager()

- ## Method Details

  - ### getContext

    @Nullable public static JobContext getContext()
    Getter for the current context if there is one, otherwise returns `null`.
    Returns:
      the current `JobContext` or `null` if there is none (if one has not been registered for this thread).

  - ### register

    public static JobContext register(JobExecution JobExecution)
    Register a context with the current thread - always put a matching `close()` call in a finally block to ensure that the correct context is available in the enclosing block.
    Parameters:
      `JobExecution` - the step context to register
    Returns:
      a new `JobContext` or the current one if it has the same `JobExecution`

  - ### close

    public static void close()
    Method for unregistering the current context - should always and only be used by in conjunction with a matching `register(JobExecution)` to ensure that `getContext()` always returns the correct value. Does not call `JobContext.close()` - that is left up to the caller because he has a reference to the context (having registered it) and only he has knowledge of when the step actually ended.

  - ### release

    public static void release()
    A convenient "deep" close operation. Call this instead of `close()` if the step execution for the current context is ending. Delegates to `JobContext.close()` and then ensures that `close()` is also called in a finally block.