| /* |
| * The Apache Software License, Version 1.1 |
| * |
| * Copyright (c) 2001-2002 The Apache Software Foundation. All rights |
| * reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * |
| * 3. The end-user documentation included with the redistribution, if |
| * any, must include the following acknowlegement: |
| * "This product includes software developed by the |
| * Apache Software Foundation (http://www.apache.org/)." |
| * Alternately, this acknowlegement may appear in the software itself, |
| * if and wherever such third-party acknowlegements normally appear. |
| * |
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software |
| * Foundation" must not be used to endorse or promote products derived |
| * from this software without prior written permission. For written |
| * permission, please contact apache@apache.org. |
| * |
| * 5. Products derived from this software may not be called "Apache" |
| * nor may "Apache" appear in their names without prior written |
| * permission of the Apache Group. |
| * |
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR |
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * ==================================================================== |
| * |
| * This software consists of voluntary contributions made by many |
| * individuals on behalf of the Apache Software Foundation. For more |
| * information on the Apache Software Foundation, please see |
| * <http://www.apache.org/>. |
| */ |
| package org.apache.tools.ant.taskdefs; |
| |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.Task; |
| import org.apache.tools.ant.BuildException; |
| |
| /** |
| * Sleep, or pause, for a period of time. |
| * |
| * A task for sleeping a short period of time, useful when a |
| * build or deployment process requires an interval between tasks. |
| *<p> |
| * A negative value can be supplied to any of attributes provided the total sleep time |
| * is positive, pending fundamental changes in physics and JVM |
| * execution tims</p> |
| * Note that sleep times are always hints to be interpred by the OS how it feels |
| * small times may either be ignored or rounded up to a minimum timeslice. Note |
| * also that the system clocks often have a fairly low granularity too, which complicates |
| * measuring how long a sleep actually took.</p> |
| * |
| * @author steve_l@iseran.com steve loughran |
| * @since Ant 1.4 |
| * @ant.task category="utility" |
| */ |
| |
| public class Sleep extends Task { |
| /** |
| * failure flag |
| */ |
| private boolean failOnError = true; |
| |
| /** |
| * sleep seconds |
| */ |
| private int seconds = 0; |
| |
| /** |
| * sleep hours |
| */ |
| private int hours = 0; |
| /** |
| * sleep minutes |
| */ |
| private int minutes = 0; |
| |
| /** |
| * sleep milliseconds |
| */ |
| private int milliseconds = 0; |
| |
| |
| |
| /** |
| * Creates new instance |
| */ |
| public Sleep() { |
| } |
| |
| |
| /** |
| * seconds to add to the sleep time |
| * |
| * @param seconds The new Seconds value |
| */ |
| public void setSeconds(int seconds) { |
| this.seconds = seconds; |
| } |
| |
| |
| /** |
| * hours to add to the sleep time. |
| * |
| * @param hours The new Hours value |
| */ |
| public void setHours(int hours) { |
| this.hours = hours; |
| } |
| |
| |
| /** |
| * minutes to add to the sleep time |
| * |
| * @param minutes The new Minutes value |
| */ |
| public void setMinutes(int minutes) { |
| this.minutes = minutes; |
| } |
| |
| |
| /** |
| * milliseconds to add to the sleep time |
| * |
| * @param milliseconds The new Milliseconds value |
| */ |
| public void setMilliseconds(int milliseconds) { |
| this.milliseconds = milliseconds; |
| } |
| |
| |
| /** |
| * sleep for a period of time |
| * |
| * @param millis time to sleep |
| */ |
| public void doSleep(long millis) { |
| try { |
| Thread.sleep(millis); |
| } catch (InterruptedException ie) { |
| } |
| } |
| |
| |
| /** |
| * flag controlling whether to break the build on an error. |
| * |
| * @param failOnError The new FailOnError value |
| */ |
| public void setFailOnError(boolean failOnError) { |
| this.failOnError = failOnError; |
| } |
| |
| |
| /** |
| * return time to sleep |
| * |
| * @return sleep time. if below 0 then there is an error |
| */ |
| |
| private long getSleepTime() { |
| return ((((long) hours * 60) + minutes) * 60 + seconds) * 1000 |
| + milliseconds; |
| } |
| |
| |
| /** |
| * verify parameters |
| * |
| * @throws BuildException if something is invalid |
| */ |
| public void validate() |
| throws BuildException { |
| if (getSleepTime() < 0) { |
| throw new BuildException("Negative sleep periods are not " |
| + "supported"); |
| } |
| } |
| |
| |
| /** |
| * Executes this build task. Throws org.apache.tools.ant.BuildException |
| * if there is an error during task execution. |
| * |
| * @exception BuildException Description of Exception |
| */ |
| public void execute() |
| throws BuildException { |
| try { |
| validate(); |
| long sleepTime = getSleepTime(); |
| log("sleeping for " + sleepTime + " milliseconds", |
| Project.MSG_VERBOSE); |
| doSleep(sleepTime); |
| } catch (Exception e) { |
| if (failOnError) { |
| throw new BuildException(e); |
| } else { |
| String text = e.toString(); |
| log(text, Project.MSG_ERR); |
| } |
| } |
| } |
| |
| } |
| |