stevel 2003/11/05 12:12:28 Modified: src/main/org/apache/tools/ant/taskdefs defaults.properties Added: src/main/org/apache/tools/ant/taskdefs Nice.java src/etc/testcases/taskdefs nice.xml src/testcases/org/apache/tools/ant/taskdefs NiceTest.java Log: <nice> as a task; unit tests tested on windows. Revision Changes Path 1.154 +1 -0 ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties Index: defaults.properties =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties,v retrieving revision 1.153 retrieving revision 1.154 diff -u -r1.153 -r1.154 --- defaults.properties 6 Sep 2003 07:09:59 -0000 1.153 +++ defaults.properties 5 Nov 2003 20:12:28 -0000 1.154 @@ -78,6 +78,7 @@ 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 1.1 ant/src/main/org/apache/tools/ant/taskdefs/Nice.java Index: Nice.java =================================================================== /* * 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 [EMAIL PROTECTED] * * 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.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: * <pre> <Nice currentPriority="current.value" ></pre><p> * Set <code>currentPriority</code> to the current priority * <pre> <Nice newPriority="10" ></pre><p> * Raise the priority of the build process (But not forked programs) * <pre> <Nice currentPriority="old" newPriority="3" ></pre><p> * Lower the priority of the build process (But not forked programs), and save * the old value to the property <code>old</code>. * * @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(newPriority<Thread.MIN_PRIORITY || newPriority>Thread.MAX_PRIORITY) { throw new BuildException("The thread priority is out of the range 1-10"); } this.newPriority = new Integer(newPriority); } } 1.1 ant/src/etc/testcases/taskdefs/nice.xml Index: nice.xml =================================================================== <?xml version="1.0"?> <project name="nice" basedir="."> <description> 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. </description> <target name="noop"> <nice/> </target> <target name="current"> <nice currentPriority="nice.now"/> <fail unless="nice.now"/> </target> <target name="faster"> <nice newPriority="8" currentPriority="nice.old"/> <nice currentPriority="nice.now"/> <condition property="test.succeeded"> <equals arg1="${nice.now}" arg2="8" /> </condition> <nice newPriority="${nice.old}"/> <fail unless="test.succeeded"/> </target> <target name="slower"> <nice newPriority="3" currentPriority="nice.old"/> <nice currentPriority="nice.now"/> <condition property="test.succeeded"> <equals arg1="${nice.now}" arg2="3" /> </condition> <nice newPriority="${nice.old}"/> <fail unless="test.succeeded"/> </target> <target name="too_slow"> <nice currentPriority="nice.old"/> <nice newPriority="0"/> <nice newPriority="${nice.old}"/> </target> <target name="too_fast"> <nice currentPriority="nice.old"/> <nice newPriority="20"/> <nice newPriority="${nice.old}"/> </target> </project> 1.1 ant/src/testcases/org/apache/tools/ant/taskdefs/NiceTest.java Index: NiceTest.java =================================================================== /* * 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 [EMAIL PROTECTED] * * 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.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"); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]