# Interface TaskState

public interface TaskState
`TaskState` provides information about the execution state of a `Task`.

You can obtain a `TaskState` instance by calling `Task.getState()`.

Accessing the details of the task state is only meaningful after the task has been `executed`.

Since:
  0.9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `getDidWork()`
  Checks if the task actually did any work.
  `boolean`
  `getExecuted()`
  Returns true if this task has been executed.
  `@Nullable Throwable`
  `getFailure()`
  Returns the exception describing the task failure, if any.
  `boolean`
  `getNoSource()`
  Returns true if the execution of this task was skipped due to task inputs are empty.
  `@Nullable String`
  `getSkipMessage()`
  Returns a message describing why the task was skipped.
  `boolean`
  `getSkipped()`
  Returns true if the execution of this task was skipped for some reason.
  `boolean`
  `getUpToDate()`
  Returns true if the execution of this task was skipped because the task was up-to-date.
  `void`
  `rethrowFailure()`
  Throws the task failure, if any.

- ## Method Details

  - ### getExecuted

    boolean getExecuted()
    Returns true if this task has been executed.

    The task is considered executed if an attempt of the execution was made, and it has a definite outcome. The outcome itself does not affect the execution status. For instance, failed or skipped tasks will also be considered executed.

    Returns:
      true if this task has been executed.
    Since:
      0.9

  - ### getFailure

    @Nullable Throwable getFailure()
    Returns the exception describing the task failure, if any.

    Checking this value is meaningful only after the task has been `executed`.

    Returns:
      The exception, or null if the task did not fail.
    Since:
      0.9

  - ### rethrowFailure

    void rethrowFailure()
    Throws the task failure, if any. Does nothing if the task did not fail.

    Calling this method is meaningful only after the task has been `executed`.

    Since:
      0.9
    See Also:
      - `getFailure()`

  - ### getDidWork

    boolean getDidWork()
    Checks if the task actually did any work.

    Even if a task executes, it may determine that it has nothing to do. For example, a compilation task may determine that source files have not changed since the last time the task was run.

    Checking this value is meaningful only after the task has been `executed`.

    Returns:
      true if this task has been executed and did any work.
    Since:
      0.9

  - ### getSkipped

    boolean getSkipped()
    Returns true if the execution of this task was skipped for some reason.

    Checking this value is meaningful only after the task has been `executed`.

    Returns:
      true if this task has been executed and skipped.
    Since:
      0.9

  - ### getSkipMessage

    @Nullable String getSkipMessage()
    Returns a message describing why the task was skipped.

    Checking this value is meaningful only after the task has been `executed`.

    Returns:
      the message. returns null if the task was not skipped.
    Since:
      0.9

  - ### getUpToDate

    boolean getUpToDate()
    Returns true if the execution of this task was skipped because the task was up-to-date.

    Checking this value is meaningful only after the task has been `executed`.

    Returns:
      true if this task has been considered up-to-date
    Since:
      2.5

  - ### getNoSource

    boolean getNoSource()
    Returns true if the execution of this task was skipped due to task inputs are empty.

    Checking this value is meaningful only after the task has been `executed`.

    Returns:
      true if this task has no input files assigned
    Since:
      3.4