Class ExitStatus

java.lang.Object
org.springframework.batch.core.ExitStatus
All Implemented Interfaces:
Serializable, Comparable<ExitStatus>

public class ExitStatus extends Object implements Serializable, Comparable<ExitStatus>
Value object used to carry information about the status of a job or step execution.

ExitStatus is immutable and, therefore, thread-safe.

Author:
Dave Syer
See Also:
  • Field Details

    • UNKNOWN

      public static final ExitStatus UNKNOWN
      Convenient constant value representing unknown state - assumed to not be continuable.
    • EXECUTING

      public static final ExitStatus EXECUTING
      Convenient constant value representing continuable state where processing is still taking place, so no further action is required. Used for asynchronous execution scenarios where the processing is happening in another thread or process and the caller is not required to wait for the result.
    • COMPLETED

      public static final ExitStatus COMPLETED
      Convenient constant value representing finished processing.
    • NOOP

      public static final ExitStatus NOOP
      Convenient constant value representing a job that did no processing (for example, because it was already complete).
    • FAILED

      public static final ExitStatus FAILED
      Convenient constant value representing finished processing with an error.
    • STOPPED

      public static final ExitStatus STOPPED
      Convenient constant value representing finished processing with interrupted status.
  • Constructor Details

    • ExitStatus

      public ExitStatus(String exitCode)
      Constructor that accepts the exit code and sets the exit description to an empty String.
      Parameters:
      exitCode - The exit code to be used for the ExitStatus.
    • ExitStatus

      public ExitStatus(String exitCode, String exitDescription)
      Constructor that establishes the exit code and the exit description for the ExitStatus.
      Parameters:
      exitCode - The exit code to be used for the ExitStatus.
      exitDescription - The exit description to be used for the ExitStatus.
  • Method Details

    • getExitCode

      public String getExitCode()
      Getter for the exit code (defaults to blank).
      Returns:
      the exit code.
    • getExitDescription

      public String getExitDescription()
      Getter for the exit description (defaults to blank)
      Returns:
      String containing the exit description.
    • and

      public ExitStatus and(ExitStatus status)
      Create a new ExitStatus with a logical combination of the exit code and a concatenation of the descriptions. If either value has a higher severity, its exit code is used in the result. In the case of equal severity, the exit code is replaced if the new value is alphabetically greater.

      Severity is defined by the exit code:
      • Codes beginning with EXECUTING have severity 1
      • Codes beginning with COMPLETED have severity 2
      • Codes beginning with NOOP have severity 3
      • Codes beginning with STOPPED have severity 4
      • Codes beginning with FAILED have severity 5
      • Codes beginning with UNKNOWN have severity 6
      Others have severity 7, so custom exit codes always win.
      If the input is null just return this.
      Parameters:
      status - An ExitStatus object to combine with this one.
      Returns:
      a new ExitStatus combining the current value and the argument provided.
    • compareTo

      public int compareTo(ExitStatus status)
      Specified by:
      compareTo in interface Comparable<ExitStatus>
      Parameters:
      status - An ExitStatus to compare
      Returns:
      greater than zero, 0, or less than zero, according to the severity and exit code.
      See Also:
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Compare the fields, one by one.
      Overrides:
      equals in class Object
      See Also:
    • hashCode

      public int hashCode()
      Compatible with the equals implementation.
      Overrides:
      hashCode in class Object
      See Also:
    • replaceExitCode

      public ExitStatus replaceExitCode(String code)
      Add an exit code to an existing ExitStatus. If there is already a code present, it will be replaced.
      Parameters:
      code - The code to add.
      Returns:
      a new ExitStatus with the same properties but a new exit code.
    • isRunning

      public boolean isRunning()
      Check if this status represents a running process.
      Returns:
      true if the exit code is EXECUTING or UNKNOWN.
    • addExitDescription

      public ExitStatus addExitDescription(String description)
      Add an exit description to an existing ExitStatus. If there is already a description present, the two are concatenated with a semicolon.
      Parameters:
      description - The description to add.
      Returns:
      a new ExitStatus with the same properties but a new exit description.
    • addExitDescription

      public ExitStatus addExitDescription(Throwable throwable)
      Extract the stack trace from the throwable provided and append it to the existing description.
      Parameters:
      throwable - A Throwable instance containing the stack trace.
      Returns:
      a new ExitStatus with the stack trace appended.
    • isNonDefaultExitStatus

      public static boolean isNonDefaultExitStatus(ExitStatus status)
      Parameters:
      status - The ExitStatus object containing the exit code to be evaluated.
      Returns:
      true if the value matches a known exit code.