## 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
`static class` `WaitFor.Unit` The enumeration of units: millisecond, second, minute, hour, day, week

Field Summary
`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
`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
`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