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> &lt;Nice currentPriority="current.value" &gt;</pre><p>
   * Set <code>currentPriority</code> to the current priority
   * <pre> &lt;Nice newPriority="10" &gt;</pre><p>
   * Raise the priority of the build process (But not forked programs)
   * <pre> &lt;Nice currentPriority="old" newPriority="3" &gt;</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]

Reply via email to