org.apache.tools.ant.taskdefs
Class WaitFor

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by org.apache.tools.ant.taskdefs.condition.ConditionBase
          extended by 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:

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