/*
* 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
*
* https://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.PropertyHelper;
import org.apache.tools.ant.taskdefs.condition.Condition;
import org.apache.tools.ant.taskdefs.condition.ConditionBase;
Task to set a property conditionally using <uptodate>, <available>,
and many other supported conditions.
This task supports boolean logic as well as pluggable conditions
to decide, whether a property should be set.
This task does not extend Task to take advantage of
ConditionBase.
Since: Ant 1.4 @ant.task category="control"
/**
* Task to set a property conditionally using <uptodate>, <available>,
* and many other supported conditions.
*
* <p>This task supports boolean logic as well as pluggable conditions
* to decide, whether a property should be set.</p>
*
* <p>This task does not extend Task to take advantage of
* ConditionBase.</p>
*
* @since Ant 1.4
*
* @ant.task category="control"
*/
public class ConditionTask extends ConditionBase {
private String property = null;
private Object value = "true";
private Object alternative = null;
Constructor, names this task "condition".
/**
* Constructor, names this task "condition".
*/
public ConditionTask() {
super("condition");
}
The name of the property to set. Required.
Params: - p – the name of the property
Since: Ant 1.4
/**
* The name of the property to set. Required.
* @param p the name of the property
* @since Ant 1.4
*/
public void setProperty(String p) {
property = p;
}
The value for the property to set, if condition evaluates to true.
Defaults to "true".
Params: - value – the (Object) value of the property
Since: Ant 1.8
/**
* The value for the property to set, if condition evaluates to true.
* Defaults to "true".
* @param value the (Object) value of the property
* @since Ant 1.8
*/
public void setValue(Object value) {
this.value = value;
}
The value for the property to set, if condition evaluates to true.
Defaults to "true".
Params: - v – the value of the property
Since: Ant 1.4
/**
* The value for the property to set, if condition evaluates to true.
* Defaults to "true".
* @param v the value of the property
* @since Ant 1.4
*/
public void setValue(String v) {
setValue((Object) v);
}
The value for the property to set, if condition evaluates to false.
If this attribute is not specified, the property will not be set.
Params: - alt – the alternate value of the property.
Since: Ant 1.8
/**
* The value for the property to set, if condition evaluates to false.
* If this attribute is not specified, the property will not be set.
* @param alt the alternate value of the property.
* @since Ant 1.8
*/
public void setElse(Object alt) {
alternative = alt;
}
The value for the property to set, if condition evaluates to false.
If this attribute is not specified, the property will not be set.
Params: - e – the alternate value of the property.
Since: Ant 1.6.3
/**
* The value for the property to set, if condition evaluates to false.
* If this attribute is not specified, the property will not be set.
* @param e the alternate value of the property.
* @since Ant 1.6.3
*/
public void setElse(String e) {
setElse((Object) e);
}
See whether our nested condition holds and set the property.
Throws: - BuildException – if an error occurs
Since: Ant 1.4
/**
* See whether our nested condition holds and set the property.
*
* @since Ant 1.4
* @exception BuildException if an error occurs
*/
public void execute() throws BuildException {
if (countConditions() > 1) {
throw new BuildException(
"You must not nest more than one condition into <%s>",
getTaskName());
}
if (countConditions() < 1) {
throw new BuildException("You must nest a condition into <%s>",
getTaskName());
}
if (property == null) {
throw new BuildException("The property attribute is required.");
}
Condition c = getConditions().nextElement();
if (c.eval()) {
log("Condition true; setting " + property + " to " + value, Project.MSG_DEBUG);
PropertyHelper.getPropertyHelper(getProject()).setNewProperty(property, value);
} else if (alternative != null) {
log("Condition false; setting " + property + " to " + alternative, Project.MSG_DEBUG);
PropertyHelper.getPropertyHelper(getProject()).setNewProperty(property, alternative);
} else {
log("Condition false; not setting " + property, Project.MSG_DEBUG);
}
}
}