diff --git a/src/etc/testcases/taskdefs/nice.xml b/src/etc/testcases/taskdefs/nice.xml
new file mode 100644
index 000000000..0e80b3b46
--- /dev/null
+++ b/src/etc/testcases/taskdefs/nice.xml
@@ -0,0 +1,50 @@
+
+
+
+
+Test nicing. To make the test more complex we may be running in a nice mode
+to start with, and we want to restore that value at the end. So every test
+that succeeds must restore the saved value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/Nice.java b/src/main/org/apache/tools/ant/taskdefs/Nice.java
new file mode 100644
index 000000000..aa3f61ccd
--- /dev/null
+++ b/src/main/org/apache/tools/ant/taskdefs/Nice.java
@@ -0,0 +1,135 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 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 "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
+ * .
+ */
+
+package org.apache.tools.ant.taskdefs;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+/**
+ * A task to provide "nice-ness" to the current thread, and/or to
+ * query the current value.
+ * Examples:
+ *
<Nice currentPriority="current.value" >
+ * Set currentPriority
to the current priority
+ *
<Nice newPriority="10" >
+ * Raise the priority of the build process (But not forked programs)
+ *
<Nice currentPriority="old" newPriority="3" >
+ * Lower the priority of the build process (But not forked programs), and save
+ * the old value to the property old
.
+ *
+ * @ant.task name="Nice" category="optional"
+ */
+public class Nice extends Task {
+
+ /**
+ * the new priority
+ */
+ private Integer newPriority;
+
+ /**
+ * the current priority
+ */
+ private String currentPriority;
+
+
+
+ /**
+ * Execute the task
+ * @exception BuildException if something goes wrong with the build
+ */
+ public void execute() throws BuildException {
+
+ Thread self = Thread.currentThread();
+ int priority = self.getPriority();
+ if(currentPriority!=null) {
+ String current=Integer.toString(priority);
+ getProject().setNewProperty(currentPriority,current);
+ }
+ //if there is a new priority, and it is different, change it
+ if(newPriority!=null && priority!=newPriority.intValue()) {
+ try {
+ self.setPriority(newPriority.intValue());
+ } catch (SecurityException e) {
+ //catch permissions denial and keep going
+ log("Unable to set new priority -a security manager is in the way",
+ Project.MSG_WARN);
+ } catch(IllegalArgumentException iae) {
+ throw new BuildException("Priority out of range",iae);
+ }
+ }
+ }
+
+ /**
+ * The name of a property to set to the value of the current
+ * thread priority. Optional
+ * @param currentPriority
+ */
+ public void setCurrentPriority(String currentPriority) {
+ this.currentPriority = currentPriority;
+ }
+
+ /**
+ * the new priority, in the range 1-10.
+ * @param newPriority
+ */
+ public void setNewPriority(int newPriority) {
+ if(newPriorityThread.MAX_PRIORITY) {
+ throw new BuildException("The thread priority is out of the range 1-10");
+ }
+ this.newPriority = new Integer(newPriority);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
index e259c024c..e938f8613 100644
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
@@ -78,6 +78,7 @@ sync=org.apache.tools.ant.taskdefs.Sync
defaultexcludes=org.apache.tools.ant.taskdefs.DefaultExcludes
presetdef=org.apache.tools.ant.taskdefs.PreSetDef
macrodef=org.apache.tools.ant.taskdefs.MacroDef
+nice=org.apache.tools.ant.taskdefs.Nice
# optional tasks
image=org.apache.tools.ant.taskdefs.optional.image.Image
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/NiceTest.java b/src/testcases/org/apache/tools/ant/taskdefs/NiceTest.java
new file mode 100644
index 000000000..81506080d
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/taskdefs/NiceTest.java
@@ -0,0 +1,98 @@
+/*
+* The Apache Software License, Version 1.1
+*
+* Copyright (c) 2003 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 "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
+* .
+*/
+
+package org.apache.tools.ant.taskdefs;
+
+import org.apache.tools.ant.BuildFileTest;
+
+/**
+ * test nice
+ */
+public class NiceTest extends BuildFileTest {
+
+ public NiceTest(String name) {
+ super(name);
+ }
+
+ public void setUp() {
+ configureProject("src/etc/testcases/taskdefs/nice.xml");
+ }
+
+ public void testNoop() {
+ executeTarget("noop");
+ }
+
+ public void testCurrent() {
+ executeTarget("current");
+ }
+
+ public void testFaster() {
+ executeTarget("faster");
+ }
+
+ public void testSlower() {
+ executeTarget("slower");
+ }
+
+ public void testTooSlow() {
+ expectBuildExceptionContaining(
+ "too_slow","out of range","out of the range 1-10");
+ }
+
+ public void testTooFast() {
+ expectBuildExceptionContaining(
+ "too_fast", "out of range", "out of the range 1-10");
+ }
+
+}