net.sf.antcontrib.process
Class Limit


java.lang.Object

  extended by org.apache.tools.ant.ProjectComponent

      extended by org.apache.tools.ant.Task

          extended by net.sf.antcontrib.process.Limit

All Implemented Interfaces:
org.apache.tools.ant.TaskContainer

public class Limit
extends org.apache.tools.ant.Task
implements org.apache.tools.ant.TaskContainer

Limits the amount of time that a task or set of tasks can run. This is useful for tasks that may "hang" or otherwise not complete in a timely fashion. This task is done when either the maxwait time has expired or all nested tasks are complete, whichever is first.

Developed for use with Antelope, migrated to ant-contrib Oct 2003.

Since:
Ant 1.5
Version:
$Revision: 1.6 $
Author:
Dale Anson, Robert D. Rice

Nested Class Summary
static class Limit.TimeUnit
          The enumeration of units: millisecond, second, minute, hour, day, week Todo: we use timestamps in many places, why not factor this out
 
Field Summary
protected  Limit.TimeUnit unit
           
 
Fields inherited from class org.apache.tools.ant.Task
description, location, target, taskName, taskType, wrapper
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
project
 
Constructor Summary
Limit()
           
 
Method Summary
 void addTask(org.apache.tools.ant.Task task)
          Add a task to wait on.
 void execute()
          Execute all nested tasks, but stopping execution of nested tasks after maxwait or when all tasks are done, whichever is first.
 void setDays(int value)
          Set a day wait value.
 void setFailonerror(boolean fail)
          Determines whether the build should fail if the time limit has expired on this task.
 void setHours(int value)
          Set an hours wait value.
 void setMaxwait(int wait)
          How long to wait for all nested tasks to complete, in units.
 void setMaxWaitUnit(Limit.TimeUnit unit)
          Set the max wait time unit, default is minutes.
 void setMilliseconds(int value)
          Set a millisecond wait value.
 void setMinutes(int value)
          Set a minute wait value.
 void setProperty(java.lang.String p)
          Name the property to set after a timeout.
 void setSeconds(int value)
          Set a second wait value.
 void setUnit(java.lang.String unit)
          Sets the unit for the max wait.
 void setValue(java.lang.String v)
          The value for the property to set after a timeout, defaults to true.
 void setWeeks(int value)
          Set a week wait value.
 
Methods inherited from class org.apache.tools.ant.Task
getDescription, getLocation, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, maybeConfigure, perform, reconfigure, setDescription, setLocation, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
getProject, setProject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

unit


protected Limit.TimeUnit unit
Constructor Detail

Limit


public Limit()
Method Detail

addTask


public void addTask(org.apache.tools.ant.Task task)

             throws org.apache.tools.ant.BuildException
Add a task to wait on.

Specified by:
addTask in interface org.apache.tools.ant.TaskContainer
Parameters:
task - A task to execute
Throws:
org.apache.tools.ant.BuildException - won't happen

setMaxwait


public void setMaxwait(int wait)
How long to wait for all nested tasks to complete, in units. Default is to wait 3 minutes.

Parameters:
wait - time to wait, set to 0 to wait forever.

setUnit


public void setUnit(java.lang.String unit)
Sets the unit for the max wait. Default is minutes.

Parameters:
unit - valid values are "millisecond", "second", "minute", "hour", "day", and "week".

setMilliseconds


public void setMilliseconds(int value)
Set a millisecond wait value.

Parameters:
value - the number of milliseconds to wait.

setSeconds


public void setSeconds(int value)
Set a second wait value.

Parameters:
value - the number of seconds to wait.

setMinutes


public void setMinutes(int value)
Set a minute wait value.

Parameters:
value - the number of milliseconds to wait.

setHours


public void setHours(int value)
Set an hours wait value.

Parameters:
value - the number of hours to wait.

setDays


public void setDays(int value)
Set a day wait value.

Parameters:
value - the number of days to wait.

setWeeks


public void setWeeks(int value)
Set a week wait value.

Parameters:
value - the number of weeks to wait.

setMaxWaitUnit


public void setMaxWaitUnit(Limit.TimeUnit unit)
Set the max wait time unit, default is minutes.


setFailonerror


public void setFailonerror(boolean fail)
Determines whether the build should fail if the time limit has expired on this task. Default is no.

Parameters:
fail - if true, fail the build if the time limit has been reached.

setProperty


public void setProperty(java.lang.String p)
Name the property to set after a timeout.

Parameters:
p - of property to set if the time limit has been reached.

setValue


public void setValue(java.lang.String v)
The value for the property to set after a timeout, defaults to true.

Parameters:
v - for the property to set if the time limit has been reached.

execute


public void execute()

             throws org.apache.tools.ant.BuildException
Execute all nested tasks, but stopping execution of nested tasks after maxwait or when all tasks are done, whichever is first.

Overrides:
execute in class org.apache.tools.ant.Task
Throws:
org.apache.tools.ant.BuildException - Description of the Exception