diff --git a/docs/manual/CoreTasks/conditions.html b/docs/manual/CoreTasks/conditions.html
index 9c46488b3..b22f97aeb 100644
--- a/docs/manual/CoreTasks/conditions.html
+++ b/docs/manual/CoreTasks/conditions.html
@@ -112,6 +112,18 @@ the tests succeed.
Second string to test. |
Yes |
+
+ casesensitive |
+ Perform a case sensitive comparision. Default is
+ true. |
+ No |
+
+
+ trim |
+ Trim whitespace from arguments before comparing
+ them. Default is false. |
+ No |
+
isset
diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java b/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java
index de4aa19f7..4b1164a46 100644
--- a/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java
+++ b/src/main/org/apache/tools/ant/taskdefs/condition/Equals.java
@@ -65,14 +65,45 @@ import org.apache.tools.ant.BuildException;
public class Equals implements Condition {
private String arg1, arg2;
+ private boolean trim = false;
+ private boolean caseSensitive = true;
- public void setArg1(String a1) {arg1 = a1;}
- public void setArg2(String a2) {arg2 = a2;}
+ public void setArg1(String a1) {
+ arg1 = a1;
+ }
+
+ public void setArg2(String a2) {
+ arg2 = a2;
+ }
+
+ /**
+ * Should we want to trim the arguments before comparing them?
+ *
+ * @since Revision: 1.3, Ant 1.5
+ */
+ public void setTrim(boolean b) {
+ trim = b;
+ }
+
+ /**
+ * Should the comparison be case sensitive?
+ *
+ * @since Revision: 1.3, Ant 1.5
+ */
+ public void setCasesensitive(boolean b) {
+ caseSensitive = b;
+ }
public boolean eval() throws BuildException {
if (arg1 == null || arg2 == null) {
throw new BuildException("both arg1 and arg2 are required in equals");
}
- return arg1.equals(arg2);
+
+ if (trim) {
+ arg1 = arg1.trim();
+ arg2 = arg2.trim();
+ }
+
+ return caseSensitive ? arg1.equals(arg2) : arg1.equalsIgnoreCase(arg2);
}
}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/condition/EqualsTest.java b/src/testcases/org/apache/tools/ant/taskdefs/condition/EqualsTest.java
new file mode 100644
index 000000000..be8b5fbe1
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/taskdefs/condition/EqualsTest.java
@@ -0,0 +1,94 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 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 "The Jakarta Project", "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 apache@apache.org.
+ *
+ * 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
+ * .
+ */
+
+package org.apache.tools.ant.taskdefs.condition;
+
+import junit.framework.TestCase;
+
+/**
+ * Testcase for the <equals> condition.
+ *
+ * @author Stefan Bodewig
+ * @version $Revision$
+ */
+public class EqualsTest extends TestCase {
+
+ public EqualsTest(String name) {
+ super(name);
+ }
+
+ public void testTrim() {
+ Equals eq = new Equals();
+ eq.setArg1("a");
+ eq.setArg2(" a");
+ assertTrue(!eq.eval());
+
+ eq.setTrim(true);
+ assertTrue(eq.eval());
+
+ eq.setArg2("a\t");
+ assertTrue(eq.eval());
+ }
+
+ public void testCaseSensitive() {
+ Equals eq = new Equals();
+ eq.setArg1("a");
+ eq.setArg2("A");
+ assertTrue(!eq.eval());
+
+ eq.setCasesensitive(false);
+ assertTrue(eq.eval());
+ }
+
+}