/*
 *  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.condition;

import org.apache.tools.ant.BuildException;

Simple comparison condition.
Since:Ant 1.4
/** * Simple comparison condition. * * @since Ant 1.4 */
public class Equals implements Condition { private static final int REQUIRED = 1 | 2; private Object arg1, arg2; private boolean trim = false; private boolean caseSensitive = true; private int args; private boolean forcestring = false;
Set the first argument
Params:
  • arg1 – the first argument.
Since:Ant 1.8
/** * Set the first argument * @param arg1 the first argument. * @since Ant 1.8 */
public void setArg1(Object arg1) { if (arg1 instanceof String) { setArg1((String) arg1); } else { setArg1Internal(arg1); } }
Set the first string
Params:
  • a1 – the first string
/** * Set the first string * * @param a1 the first string */
public void setArg1(String a1) { setArg1Internal(a1); } private void setArg1Internal(Object arg1) { this.arg1 = arg1; args |= 1; }
Set the second argument
Params:
  • arg2 – the second argument.
Since:Ant 1.8
/** * Set the second argument * @param arg2 the second argument. * @since Ant 1.8 */
public void setArg2(Object arg2) { if (arg2 instanceof String) { setArg2((String) arg2); } else { setArg2Internal(arg2); } }
Set the second string
Params:
  • a2 – the second string
/** * Set the second string * * @param a2 the second string */
public void setArg2(String a2) { setArg2Internal(a2); } private void setArg2Internal(Object arg2) { this.arg2 = arg2; args |= 2; }
Should we want to trim the arguments before comparing them?
Params:
  • b – if true trim the arguments
Since:Ant 1.5
/** * Should we want to trim the arguments before comparing them? * @param b if true trim the arguments * @since Ant 1.5 */
public void setTrim(boolean b) { trim = b; }
Should the comparison be case sensitive?
Params:
  • b – if true use a case sensitive comparison (this is the default)
Since:Ant 1.5
/** * Should the comparison be case sensitive? * @param b if true use a case sensitive comparison (this is the * default) * @since Ant 1.5 */
public void setCasesensitive(boolean b) { caseSensitive = b; }
Set whether to force string comparisons for non-equal, non-string objects. This allows object properties (legal in Ant 1.8.x+) to be compared as strings.
Params:
  • forcestring – value to set
Since:Ant 1.8.1
/** * Set whether to force string comparisons for non-equal, non-string objects. * This allows object properties (legal in Ant 1.8.x+) to be compared as strings. * @param forcestring value to set * @since Ant 1.8.1 */
public void setForcestring(boolean forcestring) { this.forcestring = forcestring; }
Throws:
Returns:true if the two strings are equal
/** * @return true if the two strings are equal * @exception BuildException if the attributes are not set correctly */
public boolean eval() throws BuildException { if ((args & REQUIRED) != REQUIRED) { throw new BuildException("both arg1 and arg2 are required in equals"); } if (arg1 == arg2 || arg1 != null && arg1.equals(arg2)) { return true; } if (forcestring) { arg1 = arg1 == null || arg1 instanceof String ? arg1 : arg1.toString(); arg2 = arg2 == null || arg2 instanceof String ? arg2 : arg2.toString(); } if (arg1 instanceof String && trim) { arg1 = ((String) arg1).trim(); } if (arg2 instanceof String && trim) { arg2 = ((String) arg2).trim(); } if (arg1 instanceof String && arg2 instanceof String) { String s1 = (String) arg1; String s2 = (String) arg2; return caseSensitive ? s1.equals(s2) : s1.equalsIgnoreCase(s2); } return false; } }