diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Nice.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Nice.java | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Nice.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Nice.java new file mode 100644 index 00000000..5898caee --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Nice.java @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.taskdefs; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; + +/** + * 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="control" + */ +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 the property name. + */ + public void setCurrentPriority(String currentPriority) { + this.currentPriority = currentPriority; + } + + /** + * the new priority, in the range 1-10. + * @param newPriority the new priority value. + */ + 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); + } + +} |