Author: mbenson
Date: Tue Jul 17 17:38:21 2007
New Revision: 557097

URL: http://svn.apache.org/viewvc?view=rev&rev=557097
Log:
non-string properties
Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Available.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Available.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Available.java?view=diff&rev=557097&r1=557096&r2=557097
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Available.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Available.java Tue 
Jul 17 17:38:21 2007
@@ -22,6 +22,7 @@
 import org.apache.tools.ant.AntClassLoader;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.PropertyHelper;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.taskdefs.condition.Condition;
 import org.apache.tools.ant.types.EnumeratedAttribute;
@@ -50,7 +51,7 @@
     private FileDir type;
     private Path classpath;
     private AntClassLoader loader;
-    private String value = "true";
+    private Object value = "true";
     private boolean isTask = false;
     private boolean ignoreSystemclasses = false;
     private boolean searchParents   = false;
@@ -136,11 +137,21 @@
      *
      * @param value the value to be given.
      */
-    public void setValue(String value) {
+    public void setValue(Object value) {
         this.value = value;
     }
 
     /**
+     * Set the value to be given to the property if the desired resource is
+     * available.
+     *
+     * @param value the value to be given.
+     */
+    public void setValue(String value) {
+        setValue((Object) value);
+    }
+
+    /**
      * Set a classname of a class which must be available to set the given
      * property.
      *
@@ -223,7 +234,8 @@
         isTask = true;
         try {
             if (eval()) {
-                String oldvalue = getProject().getProperty(property);
+                PropertyHelper ph = 
PropertyHelper.getPropertyHelper(getProject());
+                Object oldvalue = ph.getProperty(property);
                 if (null != oldvalue && !oldvalue.equals(value)) {
                     log("DEPRECATED - <available> used to override an existing"
                         + " property."
@@ -234,7 +246,7 @@
                 }
                 // NB: this makes use of Project#setProperty rather than 
Project#setNewProperty
                 //     due to backwards compatiblity reasons
-                getProject().setProperty(property, value);
+                ph.setProperty(property, value, true);
             }
         } finally {
             isTask = false;

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java?view=diff&rev=557097&r1=557096&r2=557097
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ConditionTask.java 
Tue Jul 17 17:38:21 2007
@@ -15,11 +15,11 @@
  *  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;
 
@@ -40,8 +40,8 @@
 public class ConditionTask extends ConditionBase {
 
     private String property = null;
-    private String value = "true";
-    private String alternative = null;
+    private Object value = "true";
+    private Object alternative = null;
 
     /**
      * Constructor, names this task "condition".
@@ -62,11 +62,31 @@
     /**
      * The value for the property to set, if condition evaluates to true.
      * Defaults to "true".
+     * @param v 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) {
-        value = 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 e the alternate value of the property.
+     * @since Ant 1.8
+     */
+    public void setElse(Object alt) {
+        alternative = alt;
     }
 
     /**
@@ -76,7 +96,7 @@
      * @since Ant 1.6.3
      */
     public void setElse(String e) {
-        alternative = e;
+        setElse((Object) e);
     }
 
     /**
@@ -87,29 +107,24 @@
      */
     public void execute() throws BuildException {
         if (countConditions() > 1) {
-            throw new BuildException("You must not nest more than one "
-                + "condition into <"
-                + getTaskName() + ">");
+            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() + ">");
+            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);
-            getProject().setNewProperty(property, value);
+            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);
-            getProject().setNewProperty(property, alternative);
+            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);
+            log("Condition false; not setting " + property, Project.MSG_DEBUG);
         }
     }
 }

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java?view=diff&rev=557097&r1=557096&r2=557097
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java 
Tue Jul 17 17:38:21 2007
@@ -21,15 +21,27 @@
 import org.apache.tools.ant.BuildException;
 
 /**
- * Simple String comparison condition.
+ * Simple comparison condition.
  *
  * @since Ant 1.4
  */
 public class Equals implements Condition {
+    private static final int REQUIRED = 1 | 2;
 
-    private String arg1, arg2;
+    private Object arg1, arg2;
     private boolean trim = false;
     private boolean caseSensitive = true;
+    private int args;
+
+    /**
+     * Set the first argument
+     * @param arg1
+     * @since Ant 1.8
+     */
+    public void setArg1(Object arg1) {
+        this.arg1 = arg1;
+        args |= 1;
+    }
 
     /**
      * Set the first string
@@ -37,7 +49,17 @@
      * @param a1 the first string
      */
     public void setArg1(String a1) {
-        arg1 = a1;
+        setArg1((Object) a1);
+    }
+
+    /**
+     * Set the second argument
+     * @param arg2
+     * @since Ant 1.8
+     */
+    public void setArg2(Object arg2) {
+        this.arg2 = arg2;
+        args |= 2;
     }
 
     /**
@@ -46,7 +68,7 @@
      * @param a2 the second string
      */
     public void setArg2(String a2) {
-        arg2 = a2;
+        setArg2((Object) a2);
     }
 
     /**
@@ -73,16 +95,19 @@
      * @exception BuildException if the attributes are not set correctly
      */
     public boolean eval() throws BuildException {
-        if (arg1 == null || arg2 == null) {
-            throw new BuildException("both arg1 and arg2 are required in "
-                                     + "equals");
+        if ((args & REQUIRED) != REQUIRED) {
+            throw new BuildException("both arg1 and arg2 are required in 
equals");
         }
 
-        if (trim) {
-            arg1 = arg1.trim();
-            arg2 = arg2.trim();
+        if (arg1 instanceof String && arg2 instanceof String) {
+            String s1 = (String) arg1;
+            String s2 = (String) arg2;
+            if (trim) {
+                s1 = s1.trim();
+                s2 = s2.trim();
+            }
+            return caseSensitive ? s1.equals(s2) : s1.equalsIgnoreCase(s2);
         }
-
-        return caseSensitive ? arg1.equals(arg2) : arg1.equalsIgnoreCase(arg2);
+        return arg1 == arg2 || arg1 != null && arg1.equals(arg2);
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to