aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java
new file mode 100644
index 00000000..60904e03
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java
@@ -0,0 +1,130 @@
+/*
+ * 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.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.
+ *
+ * <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".
+ */
+ public ConditionTask() {
+ super("condition");
+ }
+
+ /**
+ * 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".
+ * @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".
+ * @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.
+ * @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.
+ * @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.
+ *
+ * @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 <"
+ + getTaskName() + ">");
+ }
+ if (countConditions() < 1) {
+ throw new BuildException("You must nest a condition into <" + getTaskName() + ">");
+ }
+ if (property == null) {
+ throw new BuildException("The property attribute is required.");
+ }
+ Condition c = (Condition) 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);
+ }
+ }
+}