WaitFor (Apache Ant API)
Date: 2016-08-23

org.apache.tools.ant.taskdefs

## Class WaitFor

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.taskdefs.condition.ConditionBase
    - - org.apache.tools.ant.taskdefs.WaitFor

- All Implemented Interfaces:
    java.lang.Cloneable
  Direct Known Subclasses:
    BlockFor

      public class WaitFor
      extends ConditionBase

  Wait for an external event to occur. Wait for an external process to start or to complete some task. This is useful with the `parallel` task to synchronize the execution of tests with server startup. The following attributes can be specified on a waitfor task:
  - maxwait - maximum length of time to wait before giving up
  - maxwaitunit - The unit to be used to interpret maxwait attribute
  - checkevery - amount of time to sleep between each check
  - checkeveryunit - The unit to be used to interpret checkevery attribute
  - timeoutproperty - name of a property to set if maxwait has been exceeded.
  The maxwaitunit and checkeveryunit are allowed to have the following values: millisecond, second, minute, hour, day and week. The default is millisecond. For programmatic use/subclassing, there are two methods that may be overridden, `processSuccess` and `processTimeout`
  Since:
    Ant 1.5

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `WaitFor.Unit` The enumeration of units: millisecond, second, minute, hour, day, week

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static long` | `DEFAULT_CHECK_MILLIS` default check time
    `static long` | `DEFAULT_MAX_WAIT_MILLIS` default wait time
    `static long` | `ONE_DAY` a day in milliseconds
    `static long` | `ONE_HOUR` an hour in milliseconds
    `static long` | `ONE_MILLISECOND` a millisecond
    `static long` | `ONE_MINUTE` a minute in milliseconds
    `static long` | `ONE_SECOND` a second in milliseconds
    `static long` | `ONE_WEEK` a week in milliseconds

    - ### Fields inherited from class org.apache.tools.ant.ProjectComponent

      `description, location, project`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WaitFor()` Constructor, names this task "waitfor".
    `WaitFor(java.lang.String taskName)` Constructor that takes the name of the task in the task name.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `calculateCheckEveryMillis()` Get the check wait time, in milliseconds.
    `long` | `calculateMaxWaitMillis()` Get the maximum wait time, in milliseconds.
    `void` | `execute()` Check repeatedly for the specified conditions until they become true or the timeout expires.
    `protected void` | `processSuccess()` Actions to be taken on a successful waitfor.
    `protected void` | `processTimeout()` Actions to be taken on an unsuccessful wait.
    `void` | `setCheckEvery(long time)` Set the time between each check
    `void` | `setCheckEveryUnit(WaitFor.Unit unit)` Set the check every time unit
    `void` | `setMaxWait(long time)` Set the maximum length of time to wait.
    `void` | `setMaxWaitUnit(WaitFor.Unit unit)` Set the max wait time unit
    `void` | `setTimeoutProperty(java.lang.String p)` Name the property to set after a timeout.

    - ### Methods inherited from class org.apache.tools.ant.taskdefs.condition.ConditionBase

      `add, addAnd, addAvailable, addChecksum, addContains, addEquals, addFilesMatch, addHttp, addIsFalse, addIsFileSelected, addIsReference, addIsSet, addIsTrue, addNot, addOr, addOs, addSocket, addUptodate, countConditions, getConditions, getTaskName, setTaskName`

    - ### Methods inherited from class org.apache.tools.ant.ProjectComponent

      `clone, getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject`

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

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

- - ### Field Detail

    - #### ONE_MILLISECOND

          public static final long ONE_MILLISECOND

      a millisecond
      See Also:
        Constant Field Values

    - #### ONE_SECOND

          public static final long ONE_SECOND

      a second in milliseconds
      See Also:
        Constant Field Values

    - #### ONE_MINUTE

          public static final long ONE_MINUTE

      a minute in milliseconds
      See Also:
        Constant Field Values

    - #### ONE_HOUR

          public static final long ONE_HOUR

      an hour in milliseconds
      See Also:
        Constant Field Values

    - #### ONE_DAY

          public static final long ONE_DAY

      a day in milliseconds
      See Also:
        Constant Field Values

    - #### ONE_WEEK

          public static final long ONE_WEEK

      a week in milliseconds
      See Also:
        Constant Field Values

    - #### DEFAULT_MAX_WAIT_MILLIS

          public static final long DEFAULT_MAX_WAIT_MILLIS

      default wait time
      See Also:
        Constant Field Values

    - #### DEFAULT_CHECK_MILLIS

          public static final long DEFAULT_CHECK_MILLIS

      default check time
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### WaitFor

          public WaitFor()

      Constructor, names this task "waitfor".

    - #### WaitFor

          public WaitFor(java.lang.String taskName)

      Constructor that takes the name of the task in the task name.
      Parameters:
        `taskName` - the name of the task.
      Since:
        Ant 1.8

  - ### Method Detail

    - #### setMaxWait

          public void setMaxWait(long time)

      Set the maximum length of time to wait.
      Parameters:
        `time` - a `long` value

    - #### setMaxWaitUnit

          public void setMaxWaitUnit(WaitFor.Unit unit)

      Set the max wait time unit
      Parameters:
        `unit` - an enumerated `Unit` value

    - #### setCheckEvery

          public void setCheckEvery(long time)

      Set the time between each check
      Parameters:
        `time` - a `long` value

    - #### setCheckEveryUnit

          public void setCheckEveryUnit(WaitFor.Unit unit)

      Set the check every time unit
      Parameters:
        `unit` - an enumerated `Unit` value

    - #### setTimeoutProperty

          public void setTimeoutProperty(java.lang.String p)

      Name the property to set after a timeout.
      Parameters:
        `p` - the property name

    - #### execute

          public void execute()
                       throws BuildException

      Check repeatedly for the specified conditions until they become true or the timeout expires.
      Throws:
        `BuildException` - on error

    - #### calculateCheckEveryMillis

          public long calculateCheckEveryMillis()

      Get the check wait time, in milliseconds.
      Returns:
        how long to wait between checks
      Since:
        Ant 1.8

    - #### calculateMaxWaitMillis

          public long calculateMaxWaitMillis()

      Get the maximum wait time, in milliseconds.
      Returns:
        how long to wait before timing out
      Since:
        Ant 1.8

    - #### processSuccess

          protected void processSuccess()

      Actions to be taken on a successful waitfor. This is an override point. The base implementation does nothing.
      Since:
        Ant1.7

    - #### processTimeout

          protected void processTimeout()

      Actions to be taken on an unsuccessful wait. This is an override point. It is where the timeout processing takes place. The base implementation sets the timeoutproperty if there was a timeout and the property was defined.
      Since:
        Ant1.7