From 58f0bb04db9c5c8a858d7a3be7719608f25f2f49 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Wed, 17 Feb 2010 12:58:50 +0000 Subject: [PATCH] if user input is compared to fixed strings in a case insensitive manner we should use the default locale. Use Locale.ENGLISH consistently git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@910955 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tools/ant/IntrospectionHelper.java | 14 +++---- src/main/org/apache/tools/ant/Project.java | 8 ++-- .../org/apache/tools/ant/ProjectHelper.java | 6 ++- .../org/apache/tools/ant/PropertyHelper.java | 9 ++-- .../apache/tools/ant/RuntimeConfigurable.java | 5 ++- .../tools/ant/helper/ProjectHelperImpl.java | 2 +- .../org/apache/tools/ant/launch/Locator.java | 7 ++-- .../apache/tools/ant/taskdefs/Available.java | 4 +- .../apache/tools/ant/taskdefs/Definer.java | 2 +- .../apache/tools/ant/taskdefs/EchoXML.java | 12 ++++-- .../org/apache/tools/ant/taskdefs/Exec.java | 5 ++- .../apache/tools/ant/taskdefs/ExecTask.java | 2 +- .../org/apache/tools/ant/taskdefs/Jar.java | 15 ++++--- .../org/apache/tools/ant/taskdefs/Javac.java | 35 +++++++++------- .../apache/tools/ant/taskdefs/Javadoc.java | 2 +- .../org/apache/tools/ant/taskdefs/Jikes.java | 3 +- .../apache/tools/ant/taskdefs/MacroDef.java | 6 +-- .../tools/ant/taskdefs/MacroInstance.java | 6 +-- .../apache/tools/ant/taskdefs/Manifest.java | 41 +++++++++++++------ .../apache/tools/ant/taskdefs/Recorder.java | 3 +- .../apache/tools/ant/taskdefs/SQLExec.java | 9 ++-- .../org/apache/tools/ant/taskdefs/Tar.java | 10 ++--- .../org/apache/tools/ant/taskdefs/Touch.java | 3 +- .../org/apache/tools/ant/taskdefs/Tstamp.java | 2 +- .../apache/tools/ant/taskdefs/WaitFor.java | 3 +- .../tools/ant/taskdefs/XSLTProcess.java | 13 ++++-- .../compilers/CompilerAdapterFactory.java | 36 ++++++++-------- .../tools/ant/taskdefs/condition/Http.java | 2 +- .../taskdefs/condition/IsLastModified.java | 4 +- .../tools/ant/taskdefs/condition/Os.java | 14 +++---- .../tools/ant/taskdefs/email/MimeMailer.java | 7 ++-- .../optional/ejb/BorlandGenerateClient.java | 3 +- .../ant/taskdefs/optional/image/Image.java | 9 ++-- .../compilers/JspCompilerAdapterFactory.java | 6 ++- .../taskdefs/optional/junit/JUnitTask.java | 4 +- .../tools/ant/taskdefs/optional/net/FTP.java | 8 ++-- .../ant/taskdefs/optional/net/FTPTask.java | 8 ++-- .../taskdefs/optional/perforce/P4Fstat.java | 8 ++-- .../taskdefs/optional/perforce/P4Label.java | 5 ++- .../ant/taskdefs/optional/pvcs/Pvcs.java | 3 +- .../taskdefs/optional/script/ScriptDef.java | 4 +- .../ant/taskdefs/optional/vss/MSVSS.java | 7 +++- .../tools/ant/types/EnumeratedAttribute.java | 9 ++++ src/main/org/apache/tools/ant/types/Path.java | 2 +- .../tools/ant/types/optional/image/Arc.java | 8 ++-- .../ant/types/optional/image/ColorMapper.java | 3 +- .../selectors/ContainsRegexpSelector.java | 5 ++- .../ant/types/selectors/ContainsSelector.java | 10 +++-- .../ant/types/selectors/DateSelector.java | 15 ++++--- .../ant/types/selectors/DepthSelector.java | 8 +++- .../ant/types/selectors/FilenameSelector.java | 12 ++++-- .../ant/types/selectors/SizeSelector.java | 10 +++-- .../ant/types/selectors/TypeSelector.java | 6 ++- .../modifiedselector/ChecksumAlgorithm.java | 11 ++--- .../modifiedselector/DigestAlgorithm.java | 6 ++- .../modifiedselector/ModifiedSelector.java | 13 +++--- .../tools/ant/util/LeadPipeInputStream.java | 7 +++- .../ant/util/optional/JavaxScriptRunner.java | 4 +- src/main/org/apache/tools/tar/TarEntry.java | 2 +- 59 files changed, 303 insertions(+), 183 deletions(-) diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java index 9a3992cab..9cb89c9a0 100644 --- a/src/main/org/apache/tools/ant/IntrospectionHelper.java +++ b/src/main/org/apache/tools/ant/IntrospectionHelper.java @@ -378,7 +378,7 @@ public final class IntrospectionHelper { public void setAttribute(Project p, Object element, String attributeName, Object value) throws BuildException { AttributeSetter as = (AttributeSetter) attributeSetters.get( - attributeName.toLowerCase(Locale.US)); + attributeName.toLowerCase(Locale.ENGLISH)); if (as == null && value != null) { if (element instanceof DynamicAttributeNS) { DynamicAttributeNS dc = (DynamicAttributeNS) element; @@ -391,7 +391,7 @@ public final class IntrospectionHelper { } if (element instanceof DynamicAttribute) { DynamicAttribute dc = (DynamicAttribute) element; - dc.setDynamicAttribute(attributeName.toLowerCase(Locale.US), value.toString()); + dc.setDynamicAttribute(attributeName.toLowerCase(Locale.ENGLISH), value.toString()); return; } if (attributeName.indexOf(':') >= 0) { @@ -529,7 +529,7 @@ public final class IntrospectionHelper { } NestedCreator nc = null; if (uri.equals(parentUri) || uri.length() == 0) { - nc = (NestedCreator) nestedCreators.get(name.toLowerCase(Locale.US)); + nc = (NestedCreator) nestedCreators.get(name.toLowerCase(Locale.ENGLISH)); } if (nc == null) { nc = createAddTypeCreator(project, parent, elementName); @@ -573,7 +573,7 @@ public final class IntrospectionHelper { if (nestedElement == null && parent instanceof DynamicElement) { DynamicElement dc = (DynamicElement) parent; nestedElement = - dc.createDynamicElement(localName.toLowerCase(Locale.US)); + dc.createDynamicElement(localName.toLowerCase(Locale.ENGLISH)); } return nestedElement; } @@ -740,7 +740,7 @@ public final class IntrospectionHelper { public boolean supportsReflectElement( String parentUri, String elementName) { String name = ProjectHelper.extractNameFromComponentName(elementName); - if (!nestedCreators.containsKey(name.toLowerCase(Locale.US))) { + if (!nestedCreators.containsKey(name.toLowerCase(Locale.ENGLISH))) { return false; } String uri = ProjectHelper.extractUriFromComponentName(elementName); @@ -781,7 +781,7 @@ public final class IntrospectionHelper { if (elementName == null) { return; } - NestedCreator ns = (NestedCreator) nestedCreators.get(elementName.toLowerCase(Locale.US)); + NestedCreator ns = (NestedCreator) nestedCreators.get(elementName.toLowerCase(Locale.ENGLISH)); if (ns == null) { return; } @@ -1274,7 +1274,7 @@ public final class IntrospectionHelper { * @return the lower-cased method name with the prefix removed. */ private static String getPropertyName(String methodName, String prefix) { - return methodName.substring(prefix.length()).toLowerCase(Locale.US); + return methodName.substring(prefix.length()).toLowerCase(Locale.ENGLISH); } /** diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 843e81093..bc88253c5 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -32,6 +32,7 @@ import java.util.Vector; import java.util.Set; import java.util.HashSet; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.WeakHashMap; import org.apache.tools.ant.input.DefaultInputHandler; @@ -1714,9 +1715,10 @@ public class Project implements ResourceFactory { * false otherwise. */ public static boolean toBoolean(String s) { - return ("on".equalsIgnoreCase(s) - || "true".equalsIgnoreCase(s) - || "yes".equalsIgnoreCase(s)); + String lc = s == null ? null : s.toLowerCase(Locale.ENGLISH); + return ("on".equals(lc) + || "true".equals(lc) + || "yes".equals(lc)); } /** diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java index 0ca476ef1..416b1f17e 100644 --- a/src/main/org/apache/tools/ant/ProjectHelper.java +++ b/src/main/org/apache/tools/ant/ProjectHelper.java @@ -47,6 +47,10 @@ public class ProjectHelper { /** Polymorphic attribute */ public static final String ANT_TYPE = "ant-type"; + /** Lowercase version of {@link ANT_TYPE} used for comparisions */ + public static final String ANT_TYPE_LC = + ANT_TYPE.toLowerCase(Locale.ENGLISH); + /** * Name of JVM system property which provides the name of the * ProjectHelper class to use. @@ -261,7 +265,7 @@ public class ProjectHelper { // reflect these into the target String value = replaceProperties(project, attrs.getValue(i), project.getProperties()); try { - ih.setAttribute(project, target, attrs.getName(i).toLowerCase(Locale.US), value); + ih.setAttribute(project, target, attrs.getName(i).toLowerCase(Locale.ENGLISH), value); } catch (BuildException be) { // id attribute must be set externally if (!attrs.getName(i).equals("id")) { diff --git a/src/main/org/apache/tools/ant/PropertyHelper.java b/src/main/org/apache/tools/ant/PropertyHelper.java index 082f2c702..61b4c5456 100644 --- a/src/main/org/apache/tools/ant/PropertyHelper.java +++ b/src/main/org/apache/tools/ant/PropertyHelper.java @@ -24,6 +24,7 @@ import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.Vector; import java.util.Enumeration; @@ -1145,13 +1146,13 @@ public class PropertyHelper implements GetProperty { return (Boolean) value; } if (value instanceof String) { - String s = (String) value; + String s = ((String) value).toLowerCase(Locale.ENGLISH); if (Project.toBoolean(s)) { return Boolean.TRUE; } - if ("off".equalsIgnoreCase(s) - || "false".equalsIgnoreCase(s) - || "no".equalsIgnoreCase(s)) { + if ("off".equals(s) + || "false".equals(s) + || "no".equals(s)) { return Boolean.FALSE; } } diff --git a/src/main/org/apache/tools/ant/RuntimeConfigurable.java b/src/main/org/apache/tools/ant/RuntimeConfigurable.java index 1676bbe93..34931e87c 100644 --- a/src/main/org/apache/tools/ant/RuntimeConfigurable.java +++ b/src/main/org/apache/tools/ant/RuntimeConfigurable.java @@ -185,14 +185,15 @@ public class RuntimeConfigurable implements Serializable { * @param value the attribute's value. */ public synchronized void setAttribute(String name, String value) { - if (name.equalsIgnoreCase(ProjectHelper.ANT_TYPE)) { + String nameLC = name.toLowerCase(Locale.ENGLISH); + if (nameLC.equals(ProjectHelper.ANT_TYPE_LC)) { this.polyType = value; } else { if (attributeNames == null) { attributeNames = new ArrayList(); attributeMap = new HashMap(); } - if (name.toLowerCase(Locale.US).equals("refid")) { + if (nameLC.equals("refid")) { attributeNames.add(0, name); } else { attributeNames.add(name); diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java b/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java index c72f08e49..c60f566df 100644 --- a/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java +++ b/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java @@ -859,7 +859,7 @@ public class ProjectHelperImpl extends ProjectHelper { IntrospectionHelper ih = IntrospectionHelper.getHelper(helperImpl.project, parentClass); try { - String elementName = propType.toLowerCase(Locale.US); + String elementName = propType.toLowerCase(Locale.ENGLISH); if (parent instanceof UnknownElement) { UnknownElement uc = new UnknownElement(elementName); uc.setProject(helperImpl.project); diff --git a/src/main/org/apache/tools/ant/launch/Locator.java b/src/main/org/apache/tools/ant/launch/Locator.java index 537e0e8a0..41abfe88a 100644 --- a/src/main/org/apache/tools/ant/launch/Locator.java +++ b/src/main/org/apache/tools/ant/launch/Locator.java @@ -18,7 +18,6 @@ package org.apache.tools.ant.launch; import java.net.MalformedURLException; - import java.net.URL; import java.io.File; import java.io.FilenameFilter; @@ -442,7 +441,7 @@ public final class Locator { // Found in java.home as given return toolsJar; } - if (javaHome.toLowerCase(Locale.US).endsWith(File.separator + "jre")) { + if (javaHome.toLowerCase(Locale.ENGLISH).endsWith(File.separator + "jre")) { javaHome = javaHome.substring( 0, javaHome.length() - "/jre".length()); toolsJar = new File(javaHome + libToolsJar); @@ -498,7 +497,7 @@ public final class Locator { if (!location.isDirectory()) { urls = new URL[1]; String path = location.getPath(); - String littlePath = path.toLowerCase(Locale.US); + String littlePath = path.toLowerCase(Locale.ENGLISH); for (int i = 0; i < extensions.length; ++i) { if (littlePath.endsWith(extensions[i])) { urls[0] = fileToURL(location); @@ -510,7 +509,7 @@ public final class Locator { File[] matches = location.listFiles( new FilenameFilter() { public boolean accept(File dir, String name) { - String littleName = name.toLowerCase(Locale.US); + String littleName = name.toLowerCase(Locale.ENGLISH); for (int i = 0; i < extensions.length; ++i) { if (littleName.endsWith(extensions[i])) { return true; diff --git a/src/main/org/apache/tools/ant/taskdefs/Available.java b/src/main/org/apache/tools/ant/taskdefs/Available.java index 1af6aaaf3..b3f5fd84a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Available.java +++ b/src/main/org/apache/tools/ant/taskdefs/Available.java @@ -501,7 +501,7 @@ public class Available extends Task implements Condition { * @return true if the value specifies a directory. */ public boolean isDir() { - return "dir".equalsIgnoreCase(getValue()); + return equalsIgnoreCase("dir", getValue()); } /** @@ -510,7 +510,7 @@ public class Available extends Task implements Condition { * @return true if the value specifies a file. */ public boolean isFile() { - return "file".equalsIgnoreCase(getValue()); + return equalsIgnoreCase("file", getValue()); } } diff --git a/src/main/org/apache/tools/ant/taskdefs/Definer.java b/src/main/org/apache/tools/ant/taskdefs/Definer.java index c837caa2e..e5ba9f85c 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Definer.java +++ b/src/main/org/apache/tools/ant/taskdefs/Definer.java @@ -271,7 +271,7 @@ public abstract class Definer extends DefBase { URL url = (URL) urls.nextElement(); int fmt = this.format; - if (url.toString().toLowerCase(Locale.US).endsWith(".xml")) { + if (url.toString().toLowerCase(Locale.ENGLISH).endsWith(".xml")) { fmt = Format.XML; } diff --git a/src/main/org/apache/tools/ant/taskdefs/EchoXML.java b/src/main/org/apache/tools/ant/taskdefs/EchoXML.java index f5a210f58..e52de7bb8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/EchoXML.java +++ b/src/main/org/apache/tools/ant/taskdefs/EchoXML.java @@ -20,6 +20,7 @@ package org.apache.tools.ant.taskdefs; import java.io.File; import java.io.OutputStream; import java.io.FileOutputStream; +import java.util.Locale; import org.apache.tools.ant.Project; import org.apache.tools.ant.BuildException; @@ -105,6 +106,8 @@ public class EchoXML extends XMLFragment { public static class NamespacePolicy extends EnumeratedAttribute { private static final String IGNORE = "ignore"; private static final String ELEMENTS = "elementsOnly"; + private static final String ELEMENTS_LC = + ELEMENTS.toLowerCase(Locale.ENGLISH); private static final String ALL = "all"; public static final NamespacePolicy DEFAULT @@ -121,13 +124,14 @@ public class EchoXML extends XMLFragment { } public DOMElementWriter.XmlNamespacePolicy getPolicy() { - String s = getValue(); - if (IGNORE.equalsIgnoreCase(s)) { + String v = getValue(); + String s = v != null ? v.toLowerCase(Locale.ENGLISH) : null; + if (IGNORE.equals(s)) { return DOMElementWriter.XmlNamespacePolicy.IGNORE; - } else if (ELEMENTS.equalsIgnoreCase(s)) { + } else if (ELEMENTS_LC.equals(s)) { return DOMElementWriter.XmlNamespacePolicy.ONLY_QUALIFY_ELEMENTS; - } else if (ALL.equalsIgnoreCase(s)) { + } else if (ALL.equals(s)) { return DOMElementWriter.XmlNamespacePolicy.QUALIFY_ALL; } else { throw new BuildException("Invalid namespace policy: " + s); diff --git a/src/main/org/apache/tools/ant/taskdefs/Exec.java b/src/main/org/apache/tools/ant/taskdefs/Exec.java index a92633616..cfc6b76c8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Exec.java +++ b/src/main/org/apache/tools/ant/taskdefs/Exec.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.MagicNames; @@ -97,9 +98,9 @@ public class Exec extends Task { dir = getProject().getBaseDir(); } - if (myos.toLowerCase().indexOf("windows") >= 0) { + if (myos.toLowerCase(Locale.ENGLISH).indexOf("windows") >= 0) { if (!dir.equals(getProject().resolveFile("."))) { - if (myos.toLowerCase().indexOf("nt") >= 0) { + if (myos.toLowerCase(Locale.ENGLISH).indexOf("nt") >= 0) { command = "cmd /c cd " + dir + " && " + command; } else { String ant = getProject().getProperty(MagicNames.ANT_HOME); diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java b/src/main/org/apache/tools/ant/taskdefs/ExecTask.java index 8ca081959..af7671c78 100644 --- a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/ExecTask.java @@ -401,7 +401,7 @@ public class ExecTask extends Task { * @param osFamily the family to restrict to. */ public void setOsFamily(String osFamily) { - this.osFamily = osFamily.toLowerCase(Locale.US); + this.osFamily = osFamily.toLowerCase(Locale.ENGLISH); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/Jar.java b/src/main/org/apache/tools/ant/taskdefs/Jar.java index 92f6672ef..b9a1128b0 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Jar.java +++ b/src/main/org/apache/tools/ant/taskdefs/Jar.java @@ -37,6 +37,7 @@ import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.StringTokenizer; import java.util.TreeMap; import java.util.Vector; @@ -341,7 +342,7 @@ public class Jar extends Zip { Enumeration e = zf.entries(); while (e.hasMoreElements()) { ZipEntry ze = (ZipEntry) e.nextElement(); - if (ze.getName().equalsIgnoreCase(MANIFEST_NAME)) { + if (ze.getName().toUpperCase(Locale.ENGLISH).equals(MANIFEST_NAME)) { InputStreamReader isr = new InputStreamReader(zf.getInputStream(ze), "UTF-8"); return getManifest(isr); @@ -382,7 +383,7 @@ public class Jar extends Zip { Enumeration e = zf.entries(); while (e.hasMoreElements()) { ZipEntry ze = (ZipEntry) e.nextElement(); - if (ze.getName().equalsIgnoreCase(INDEX_NAME)) { + if (ze.getName().toUpperCase(Locale.ENGLISH).equals(INDEX_NAME)) { return true; } } @@ -692,11 +693,12 @@ public class Jar extends Zip { protected void zipFile(InputStream is, ZipOutputStream zOut, String vPath, long lastModified, File fromArchive, int mode) throws IOException { - if (MANIFEST_NAME.equalsIgnoreCase(vPath)) { + String vPathUC = vPath != null ? vPath.toUpperCase(Locale.ENGLISH) : null; + if (MANIFEST_NAME.equals(vPathUC)) { if (isFirstPass()) { filesetManifest(fromArchive, is); } - } else if (INDEX_NAME.equalsIgnoreCase(vPath) && index) { + } else if (INDEX_NAME.equals(vPathUC) && index) { logWhenWriting("Warning: selected " + archiveType + " files include a " + INDEX_NAME + " which will" + " be replaced by a newly generated one.", @@ -965,7 +967,7 @@ public class Jar extends Zip { message.append(br); message.append("Location: ").append(getLocation()); message.append(br); - if (strict.getValue().equalsIgnoreCase("fail")) { + if (strict.getValue().toLowerCase(Locale.ENGLISH).equals("fail")) { throw new BuildException(message.toString(), getLocation()); } else { logWhenWriting(message.toString(), strict.getLogLevel()); @@ -1167,7 +1169,8 @@ public class Jar extends Zip { }); } for (int j = 0; j < resources[0].length; j++) { - if (resources[0][j].getName().equalsIgnoreCase(MANIFEST_NAME)) { + if (resources[0][j].getName().toUpperCase(Locale.ENGLISH) + .equals(MANIFEST_NAME)) { manifests[i] = new Resource[] {resources[0][j]}; break; } diff --git a/src/main/org/apache/tools/ant/taskdefs/Javac.java b/src/main/org/apache/tools/ant/taskdefs/Javac.java index 912526eb1..f4bbbb1ca 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javac.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javac.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import org.apache.tools.ant.BuildException; @@ -88,6 +89,8 @@ public class Javac extends MatchingTask { private static final String MODERN = "modern"; private static final String CLASSIC = "classic"; private static final String EXTJAVAC = "extJavac"; + private static final String EXTJAVAC_LC = + EXTJAVAC.toLowerCase(Locale.ENGLISH); private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); @@ -679,7 +682,9 @@ public class Javac extends MatchingTask { * @return true if this is a forked invocation */ public boolean isForkedJavac() { - return fork || "extJavac".equals(getCompiler()); + String c = getCompiler(); + return fork || + (c != null && EXTJAVAC_LC.equals(c.toLowerCase(Locale.ENGLISH))); } /** @@ -758,29 +763,31 @@ public class Javac extends MatchingTask { } private String getAltCompilerName(String anImplementation) { - if (JAVAC16.equalsIgnoreCase(anImplementation) - || JAVAC15.equalsIgnoreCase(anImplementation) - || JAVAC14.equalsIgnoreCase(anImplementation) - || JAVAC13.equalsIgnoreCase(anImplementation)) { + anImplementation = anImplementation != null + ? anImplementation.toLowerCase(Locale.ENGLISH) : null; + if (JAVAC16.equals(anImplementation) + || JAVAC15.equals(anImplementation) + || JAVAC14.equals(anImplementation) + || JAVAC13.equals(anImplementation)) { return MODERN; } - if (JAVAC12.equalsIgnoreCase(anImplementation) - || JAVAC11.equalsIgnoreCase(anImplementation)) { + if (JAVAC12.equals(anImplementation) + || JAVAC11.equals(anImplementation)) { return CLASSIC; } - if (MODERN.equalsIgnoreCase(anImplementation)) { + if (MODERN.equals(anImplementation)) { String nextSelected = assumedJavaVersion(); - if (JAVAC16.equalsIgnoreCase(nextSelected) - || JAVAC15.equalsIgnoreCase(nextSelected) - || JAVAC14.equalsIgnoreCase(nextSelected) - || JAVAC13.equalsIgnoreCase(nextSelected)) { + if (JAVAC16.equals(nextSelected) + || JAVAC15.equals(nextSelected) + || JAVAC14.equals(nextSelected) + || JAVAC13.equals(nextSelected)) { return nextSelected; } } if (CLASSIC.equals(anImplementation)) { return assumedJavaVersion(); } - if (EXTJAVAC.equalsIgnoreCase(anImplementation)) { + if (EXTJAVAC_LC.equals(anImplementation)) { return assumedJavaVersion(); } return null; @@ -1007,7 +1014,7 @@ public class Javac extends MatchingTask { String compilerImpl = getCompilerVersion(); if (fork) { if (isJdkCompiler(compilerImpl)) { - compilerImpl = "extJavac"; + compilerImpl = EXTJAVAC; } else { log("Since compiler setting isn't classic or modern, " + "ignoring fork setting.", Project.MSG_WARN); diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java index d4e0ce289..0d1f526cb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java @@ -1343,7 +1343,7 @@ public class Javadoc extends Task { * specified. */ public void setScope (String verboseScope) throws BuildException { - verboseScope = verboseScope.toLowerCase(Locale.US); + verboseScope = verboseScope.toLowerCase(Locale.ENGLISH); boolean[] elements = new boolean[SCOPE_ELEMENTS.length]; diff --git a/src/main/org/apache/tools/ant/taskdefs/Jikes.java b/src/main/org/apache/tools/ant/taskdefs/Jikes.java index a25a8a722..4bc6835be 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Jikes.java +++ b/src/main/org/apache/tools/ant/taskdefs/Jikes.java @@ -21,6 +21,7 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -81,7 +82,7 @@ public class Jikes { // Windows has a 32k limit on total arg size, so // create a temporary file to store all the arguments - if (myos.toLowerCase().indexOf("windows") >= 0 + if (myos.toLowerCase(Locale.ENGLISH).indexOf("windows") >= 0 && args.length > MAX_FILES_ON_COMMAND_LINE) { BufferedWriter out = null; try { diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java index 8b1db97a2..6054f2072 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java @@ -339,7 +339,7 @@ public class MacroDef extends AntlibDefinition { throw new BuildException( "Illegal name [" + name + "] for attribute"); } - this.name = name.toLowerCase(Locale.US); + this.name = name.toLowerCase(Locale.ENGLISH); } /** @@ -443,7 +443,7 @@ public class MacroDef extends AntlibDefinition { throw new BuildException( "Illegal name [" + name + "] for attribute"); } - this.name = name.toLowerCase(Locale.US); + this.name = name.toLowerCase(Locale.ENGLISH); } /** @@ -567,7 +567,7 @@ public class MacroDef extends AntlibDefinition { throw new BuildException( "Illegal name [" + name + "] for macro element"); } - this.name = name.toLowerCase(Locale.US); + this.name = name.toLowerCase(Locale.ENGLISH); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java index 8814eba1e..c178bee18 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java @@ -127,7 +127,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain for (Iterator i = unknownElements.iterator(); i.hasNext();) { UnknownElement ue = (UnknownElement) i.next(); String name = ProjectHelper.extractNameFromComponentName( - ue.getTag()).toLowerCase(Locale.US); + ue.getTag()).toLowerCase(Locale.ENGLISH); if (getNsElements().get(name) == null) { throw new BuildException("unsupported element " + name); } @@ -199,7 +199,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain case STATE_EXPECT_NAME: if (ch == '}') { state = STATE_NORMAL; - String name = macroName.toString().toLowerCase(Locale.US); + String name = macroName.toString().toLowerCase(Locale.ENGLISH); String value = (String) macroMapping.get(name); if (value == null) { ret.append("@{"); @@ -278,7 +278,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain UnknownElement unknownElement = (UnknownElement) r.getProxy(); String tag = unknownElement.getTaskType(); if (tag != null) { - tag = tag.toLowerCase(Locale.US); + tag = tag.toLowerCase(Locale.ENGLISH); } MacroDef.TemplateElement templateElement = (MacroDef.TemplateElement) getNsElements().get(tag); diff --git a/src/main/org/apache/tools/ant/taskdefs/Manifest.java b/src/main/org/apache/tools/ant/taskdefs/Manifest.java index 2c8d7a086..e0eb1c598 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Manifest.java +++ b/src/main/org/apache/tools/ant/taskdefs/Manifest.java @@ -29,6 +29,7 @@ import java.io.UnsupportedEncodingException; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.Locale; import java.util.Map; import java.util.Vector; import org.apache.tools.ant.BuildException; @@ -90,6 +91,15 @@ public class Manifest { /** Encoding to be used for JAR files. */ public static final String JAR_ENCODING = "UTF-8"; + private static final String ATTRIBUTE_MANIFEST_VERSION_LC = + ATTRIBUTE_MANIFEST_VERSION.toLowerCase(Locale.ENGLISH); + private static final String ATTRIBUTE_NAME_LC = + ATTRIBUTE_NAME.toLowerCase(Locale.ENGLISH); + private static final String ATTRIBUTE_FROM_LC = + ATTRIBUTE_FROM.toLowerCase(Locale.ENGLISH); + private static final String ATTRIBUTE_CLASSPATH_LC = + ATTRIBUTE_CLASSPATH.toLowerCase(Locale.ENGLISH); + /** * An attribute for the manifest. * Those attributes that are not nested into a section will be added to the "Main" section. @@ -238,7 +248,7 @@ public class Manifest { if (name == null) { return null; } - return name.toLowerCase(); + return name.toLowerCase(Locale.ENGLISH); } /** @@ -491,8 +501,10 @@ public class Manifest { public void merge(Section section, boolean mergeClassPaths) throws ManifestException { if (name == null && section.getName() != null - || name != null - && !(name.equalsIgnoreCase(section.getName()))) { + || (name != null && section.getName() != null + && !(name.toLowerCase(Locale.ENGLISH) + .equals(section.getName().toLowerCase(Locale.ENGLISH)))) + ) { throw new ManifestException("Unable to merge sections " + "with different names"); } @@ -501,8 +513,10 @@ public class Manifest { Attribute classpathAttribute = null; while (e.hasMoreElements()) { String attributeName = (String) e.nextElement(); + String attributeNameLC = + attributeName.toLowerCase(Locale.ENGLISH); Attribute attribute = section.getAttribute(attributeName); - if (attributeName.equalsIgnoreCase(ATTRIBUTE_CLASSPATH)) { + if (attributeNameLC.equals(ATTRIBUTE_CLASSPATH_LC)) { if (classpathAttribute == null) { classpathAttribute = new Attribute(); classpathAttribute.setName(ATTRIBUTE_CLASSPATH); @@ -586,7 +600,7 @@ public class Manifest { * instances. */ public Attribute getAttribute(String attributeName) { - return (Attribute) attributes.get(attributeName.toLowerCase()); + return (Attribute) attributes.get(attributeName.toLowerCase(Locale.ENGLISH)); } /** @@ -608,7 +622,7 @@ public class Manifest { * in the section */ public String getAttributeValue(String attributeName) { - Attribute attribute = getAttribute(attributeName.toLowerCase()); + Attribute attribute = getAttribute(attributeName.toLowerCase(Locale.ENGLISH)); if (attribute == null) { return null; } @@ -621,7 +635,7 @@ public class Manifest { * @param attributeName the name of the attribute to be removed. */ public void removeAttribute(String attributeName) { - String key = attributeName.toLowerCase(); + String key = attributeName.toLowerCase(Locale.ENGLISH); attributes.remove(key); } @@ -658,7 +672,8 @@ public class Manifest { if (attribute.getName() == null || attribute.getValue() == null) { throw new BuildException("Attributes must have name and value"); } - if (attribute.getKey().equalsIgnoreCase(ATTRIBUTE_NAME)) { + String attributeKey = attribute.getKey(); + if (attributeKey.equals(ATTRIBUTE_NAME_LC)) { warnings.addElement("\"" + ATTRIBUTE_NAME + "\" attributes " + "should not occur in the main section and must be the " + "first element in all other sections: \"" @@ -666,13 +681,12 @@ public class Manifest { return attribute.getValue(); } - if (attribute.getKey().startsWith(ATTRIBUTE_FROM.toLowerCase())) { + if (attributeKey.startsWith(ATTRIBUTE_FROM_LC)) { warnings.addElement(ERROR_FROM_FORBIDDEN + attribute.getName() + ": " + attribute.getValue() + "\""); } else { // classpath attributes go into a vector - String attributeKey = attribute.getKey(); - if (attributeKey.equalsIgnoreCase(ATTRIBUTE_CLASSPATH)) { + if (attributeKey.equals(ATTRIBUTE_CLASSPATH_LC)) { Attribute classpathAttribute = (Attribute) attributes.get(attributeKey); @@ -856,7 +870,8 @@ public class Manifest { Section section = new Section(); if (nextSectionName == null) { Attribute sectionName = new Attribute(line); - if (!sectionName.getName().equalsIgnoreCase(ATTRIBUTE_NAME)) { + if (!sectionName.getName().toLowerCase(Locale.ENGLISH) + .equals(ATTRIBUTE_NAME_LC)) { throw new ManifestException("Manifest sections should " + "start with a \"" + ATTRIBUTE_NAME + "\" attribute and not \"" @@ -905,7 +920,7 @@ public class Manifest { if (attribute.getKey() == null || attribute.getValue() == null) { throw new BuildException("Attributes must have name and value"); } - if (attribute.getKey().equalsIgnoreCase(ATTRIBUTE_MANIFEST_VERSION)) { + if (attribute.getKey().equals(ATTRIBUTE_MANIFEST_VERSION_LC)) { manifestVersion = attribute.getValue(); } else { mainSection.addConfiguredAttribute(attribute); diff --git a/src/main/org/apache/tools/ant/taskdefs/Recorder.java b/src/main/org/apache/tools/ant/taskdefs/Recorder.java index 44d5543ad..069100ec4 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Recorder.java +++ b/src/main/org/apache/tools/ant/taskdefs/Recorder.java @@ -19,6 +19,7 @@ package org.apache.tools.ant.taskdefs; import java.util.Hashtable; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import org.apache.tools.ant.BuildEvent; import org.apache.tools.ant.BuildException; @@ -101,7 +102,7 @@ public class Recorder extends Task implements SubBuildListener { * @param action The action for the entry to take: start or stop. */ public void setAction(ActionChoices action) { - if (action.getValue().equalsIgnoreCase("start")) { + if (action.getValue().toLowerCase(Locale.ENGLISH).equals("start")) { start = Boolean.TRUE; } else { start = Boolean.FALSE; diff --git a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java index 910325b59..eb96ec6c2 100644 --- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java +++ b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java @@ -726,7 +726,8 @@ public class SQLExec extends JDBCTask { StringTokenizer st = new StringTokenizer(line); if (st.hasMoreTokens()) { String token = st.nextToken(); - if ("REM".equalsIgnoreCase(token)) { + if (token != null + && "REM".equals(token.toUpperCase(Locale.ENGLISH))) { continue; } } @@ -1072,7 +1073,7 @@ public class SQLExec extends JDBCTask { // no match return -1; } else { - String d = delimiter.trim().toLowerCase(Locale.US); + String d = delimiter.trim().toLowerCase(Locale.ENGLISH); if (delimiterType.equals(DelimiterType.NORMAL)) { // still trying to avoid wasteful copying, see // StringUtils.endsWith @@ -1087,7 +1088,7 @@ public class SQLExec extends JDBCTask { } while (endIndex >= 0) { if (buf.substring(bufferIndex, bufferIndex + 1) - .toLowerCase(Locale.US).charAt(0) + .toLowerCase(Locale.ENGLISH).charAt(0) != d.charAt(endIndex)) { return -1; } @@ -1096,7 +1097,7 @@ public class SQLExec extends JDBCTask { } return bufferIndex + 1; } else { - return currentLine.trim().toLowerCase(Locale.US).equals(d) + return currentLine.trim().toLowerCase(Locale.ENGLISH).equals(d) ? buf.length() - currentLine.length() : -1; } } diff --git a/src/main/org/apache/tools/ant/taskdefs/Tar.java b/src/main/org/apache/tools/ant/taskdefs/Tar.java index 41a2fd988..f82360fea 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Tar.java +++ b/src/main/org/apache/tools/ant/taskdefs/Tar.java @@ -871,35 +871,35 @@ public class Tar extends MatchingTask { * @return true if value is "truncate". */ public boolean isTruncateMode() { - return TRUNCATE.equalsIgnoreCase(getValue()); + return equalsIgnoreCase(TRUNCATE, getValue()); } /** * @return true if value is "warn". */ public boolean isWarnMode() { - return WARN.equalsIgnoreCase(getValue()); + return equalsIgnoreCase(WARN, getValue()); } /** * @return true if value is "gnu". */ public boolean isGnuMode() { - return GNU.equalsIgnoreCase(getValue()); + return equalsIgnoreCase(GNU, getValue()); } /** * @return true if value is "fail". */ public boolean isFailMode() { - return FAIL.equalsIgnoreCase(getValue()); + return equalsIgnoreCase(FAIL, getValue()); } /** * @return true if value is "omit". */ public boolean isOmitMode() { - return OMIT.equalsIgnoreCase(getValue()); + return equalsIgnoreCase(OMIT, getValue()); } } diff --git a/src/main/org/apache/tools/ant/taskdefs/Touch.java b/src/main/org/apache/tools/ant/taskdefs/Touch.java index a4f344ef8..6d9bf68af 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Touch.java +++ b/src/main/org/apache/tools/ant/taskdefs/Touch.java @@ -233,7 +233,8 @@ public class Touch extends Task { } if (dateTime != null && !dateTimeConfigured) { long workmillis = millis; - if ("now".equalsIgnoreCase(dateTime)) { + if (dateTime != null + && "now".equals(dateTime.toLowerCase(Locale.ENGLISH))) { workmillis = System.currentTimeMillis(); } else { DateFormat df = dfFactory.getPrimaryFormat(); diff --git a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java index bf2f2b240..8195fab1c 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java +++ b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java @@ -324,7 +324,7 @@ public class Tstamp extends Task { * @return an int value. */ public int getCalendarField() { - String key = getValue().toLowerCase(); + String key = getValue().toLowerCase(Locale.ENGLISH); Integer i = (Integer) calendarFields.get(key); return i.intValue(); } diff --git a/src/main/org/apache/tools/ant/taskdefs/WaitFor.java b/src/main/org/apache/tools/ant/taskdefs/WaitFor.java index e4f404b7c..a5818a7c7 100644 --- a/src/main/org/apache/tools/ant/taskdefs/WaitFor.java +++ b/src/main/org/apache/tools/ant/taskdefs/WaitFor.java @@ -19,6 +19,7 @@ package org.apache.tools.ant.taskdefs; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -259,7 +260,7 @@ public class WaitFor extends ConditionBase { * @return a multipler (a long value) */ public long getMultiplier() { - String key = getValue().toLowerCase(); + String key = getValue().toLowerCase(Locale.ENGLISH); Long l = (Long) timeTable.get(key); return l.longValue(); } diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java index ad4ba87db..8b9a089fb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java +++ b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java @@ -20,6 +20,7 @@ package org.apache.tools.ant.taskdefs; import java.io.File; import java.util.Enumeration; import java.util.Iterator; +import java.util.Locale; import java.util.Vector; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; @@ -1366,14 +1367,18 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { */ public void setDynamicAttribute(String name, String value) throws BuildException { // only 'name' and 'value' exist. - if ("name".equalsIgnoreCase(name)) { + String nameLC = name != null + ? name.toLowerCase(Locale.ENGLISH) : null; + if ("name".equals(nameLC)) { this.name = value; - } else if ("value".equalsIgnoreCase(name)) { + } else if ("value".equals(nameLC)) { // a value must be of a given type // say boolean|integer|string that are mostly used. - if ("true".equalsIgnoreCase(value)) { + String valueLC = value != null + ? value.toLowerCase(Locale.ENGLISH) : null; + if ("true".equals(valueLC)) { this.value = Boolean.TRUE; - } else if ("false".equalsIgnoreCase(value)) { + } else if ("false".equals(valueLC)) { this.value = Boolean.FALSE; } else { try { diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java index ffd20aee0..d46dc873b 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java @@ -18,6 +18,7 @@ package org.apache.tools.ant.taskdefs.compilers; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; @@ -98,28 +99,29 @@ public final class CompilerAdapterFactory { public static CompilerAdapter getCompiler(String compilerType, Task task, Path classpath) throws BuildException { - if (compilerType.equalsIgnoreCase("jikes")) { + String compilerTypeLC = compilerType.toLowerCase(Locale.ENGLISH); + if (compilerTypeLC.equals("jikes")) { return new Jikes(); } - if (compilerType.equalsIgnoreCase("extJavac")) { + if (compilerTypeLC.equals("extjavac")) { return new JavacExternal(); } - if (compilerType.equalsIgnoreCase("classic") - || compilerType.equalsIgnoreCase("javac1.1") - || compilerType.equalsIgnoreCase("javac1.2")) { + if (compilerTypeLC.equals("classic") + || compilerTypeLC.equals("javac1.1") + || compilerTypeLC.equals("javac1.2")) { task.log("This version of java does " + "not support the classic " + "compiler; upgrading to modern", Project.MSG_WARN); - compilerType = "modern"; + compilerTypeLC = "modern"; } //on java<=1.3 the modern falls back to classic if it is not found //but on java>=1.4 we just bail out early - if (compilerType.equalsIgnoreCase("modern") - || compilerType.equalsIgnoreCase("javac1.3") - || compilerType.equalsIgnoreCase("javac1.4") - || compilerType.equalsIgnoreCase("javac1.5") - || compilerType.equalsIgnoreCase("javac1.6")) { + if (compilerTypeLC.equals("modern") + || compilerTypeLC.equals("javac1.3") + || compilerTypeLC.equals("javac1.4") + || compilerTypeLC.equals("javac1.5") + || compilerTypeLC.equals("javac1.6")) { // does the modern compiler exist? if (doesModernCompilerExist()) { return new Javac13(); @@ -137,18 +139,18 @@ public final class CompilerAdapterFactory { } } - if (compilerType.equalsIgnoreCase("jvc") - || compilerType.equalsIgnoreCase("microsoft")) { + if (compilerTypeLC.equals("jvc") + || compilerTypeLC.equals("microsoft")) { return new Jvc(); } - if (compilerType.equalsIgnoreCase("kjc")) { + if (compilerTypeLC.equals("kjc")) { return new Kjc(); } - if (compilerType.equalsIgnoreCase("gcj")) { + if (compilerTypeLC.equals("gcj")) { return new Gcj(); } - if (compilerType.equalsIgnoreCase("sj") - || compilerType.equalsIgnoreCase("symantec")) { + if (compilerTypeLC.equals("sj") + || compilerTypeLC.equals("symantec")) { return new Sj(); } return resolveClassName(compilerType, diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Http.java b/src/main/org/apache/tools/ant/taskdefs/condition/Http.java index 6b545b5ab..abdc7c439 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/Http.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/Http.java @@ -75,7 +75,7 @@ public class Http extends ProjectComponent implements Condition { */ public void setRequestMethod(String method) { this.requestMethod = method == null ? DEFAULT_REQUEST_METHOD - : method.toUpperCase(Locale.US); + : method.toUpperCase(Locale.ENGLISH); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/IsLastModified.java b/src/main/org/apache/tools/ant/taskdefs/condition/IsLastModified.java index 31b0ffa35..0594a917a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/IsLastModified.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/IsLastModified.java @@ -22,6 +22,7 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -119,7 +120,8 @@ public class IsLastModified extends ProjectComponent implements Condition { if (millis >= 0) { return millis; } - if ("now".equalsIgnoreCase(dateTime)) { + if (dateTime != null + && "now".equals(dateTime.toLowerCase(Locale.ENGLISH))) { return System.currentTimeMillis(); } DateFormat df = dfFactory.getPrimaryFormat(); diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Os.java b/src/main/org/apache/tools/ant/taskdefs/condition/Os.java index 279e194e4..14c5c2d97 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/Os.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/Os.java @@ -29,11 +29,11 @@ import org.apache.tools.ant.BuildException; */ public class Os implements Condition { private static final String OS_NAME = - System.getProperty("os.name").toLowerCase(Locale.US); + System.getProperty("os.name").toLowerCase(Locale.ENGLISH); private static final String OS_ARCH = - System.getProperty("os.arch").toLowerCase(Locale.US); + System.getProperty("os.arch").toLowerCase(Locale.ENGLISH); private static final String OS_VERSION = - System.getProperty("os.version").toLowerCase(Locale.US); + System.getProperty("os.version").toLowerCase(Locale.ENGLISH); private static final String PATH_SEP = System.getProperty("path.separator"); @@ -142,7 +142,7 @@ public class Os implements Condition { * */ public void setFamily(String f) { - family = f.toLowerCase(Locale.US); + family = f.toLowerCase(Locale.ENGLISH); } /** @@ -151,7 +151,7 @@ public class Os implements Condition { * @param name The OS name */ public void setName(String name) { - this.name = name.toLowerCase(Locale.US); + this.name = name.toLowerCase(Locale.ENGLISH); } /** @@ -160,7 +160,7 @@ public class Os implements Condition { * @param arch The OS architecture */ public void setArch(String arch) { - this.arch = arch.toLowerCase(Locale.US); + this.arch = arch.toLowerCase(Locale.ENGLISH); } /** @@ -169,7 +169,7 @@ public class Os implements Condition { * @param version The OS version */ public void setVersion(String version) { - this.version = version.toLowerCase(Locale.US); + this.version = version.toLowerCase(Locale.ENGLISH); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java index 60641b51f..b4cbfe150 100644 --- a/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java +++ b/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java @@ -26,11 +26,12 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; -import java.util.Vector; +import java.util.Enumeration; import java.util.Iterator; +import java.util.Locale; import java.util.Properties; -import java.util.Enumeration; import java.util.StringTokenizer; +import java.util.Vector; import java.security.Provider; import java.security.Security; @@ -100,7 +101,7 @@ public class MimeMailer extends Mailer { } public void setContentType(String type) { - this.type = type.toLowerCase(); + this.type = type.toLowerCase(Locale.ENGLISH); } public String getContentType() { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java index 392f17a23..c7c70e27e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java @@ -20,6 +20,7 @@ package org.apache.tools.ant.taskdefs.optional.ejb; import java.io.File; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; @@ -167,7 +168,7 @@ public class BorlandGenerateClient extends Task { log("client jar file is " + clientjarfile); - if (mode.equalsIgnoreCase(FORK_MODE)) { + if (mode.toLowerCase(Locale.ENGLISH).equals(FORK_MODE)) { executeFork(); } else { executeJava(); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java b/src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java index b49f46642..320ea3325 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java @@ -40,6 +40,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; +import java.util.Locale; import java.util.Vector; /** @@ -316,7 +317,8 @@ public class Image extends MatchingTask { try { stream = new FileOutputStream(newFile); - JAI.create("encode", image, stream, str_encoding.toUpperCase(), + JAI.create("encode", image, stream, + str_encoding.toUpperCase(Locale.ENGLISH), null); stream.flush(); } finally { @@ -406,9 +408,10 @@ public class Image extends MatchingTask { if (srcDir == null && destDir == null) { throw new BuildException("Specify the destDir, or the srcDir."); } - if (str_encoding.toLowerCase().equals("jpg")) { + String enc = str_encoding.toLowerCase(Locale.ENGLISH); + if (enc.equals("jpg")) { str_encoding = "JPEG"; - } else if (str_encoding.toLowerCase().equals("tif")) { + } else if (enc.equals("tif")) { str_encoding = "TIFF"; } } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java index 896a7a8d8..7b5ea5852 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java @@ -17,6 +17,7 @@ */ package org.apache.tools.ant.taskdefs.optional.jsp.compilers; +import java.util.Locale; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; @@ -80,11 +81,12 @@ public final class JspCompilerAdapterFactory { AntClassLoader loader) throws BuildException { - if (compilerType.equalsIgnoreCase("jasper")) { + String compilerTypeLC = compilerType.toLowerCase(Locale.ENGLISH); + if (compilerTypeLC.equals("jasper")) { //tomcat4.0 gets the old mangler return new JasperC(new JspNameMangler()); } - if (compilerType.equalsIgnoreCase("jasper41")) { + if (compilerTypeLC.equals("jasper41")) { //tomcat4.1 gets the new one return new JasperC(new Jasper41Mangler()); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index d822597ba..71c966da9 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -1569,7 +1569,9 @@ public class JUnitTask extends Task { if (summary) { JUnitTaskMirror.SummaryJUnitResultFormatterMirror f = delegate.newSummaryJUnitResultFormatter(); - f.setWithOutAndErr("withoutanderr".equalsIgnoreCase(summaryValue)); + String s = summaryValue != null + ? summaryValue.toLowerCase(Locale.ENGLISH) : null; + f.setWithOutAndErr("withoutanderr".equals(s)); delegate.addVmExit(test, f, getDefaultOutput(), message, testCase); } } finally { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java index 5ca199670..8e7c0bf0d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java @@ -1536,7 +1536,9 @@ public class FTP extends Task implements FTPTaskConfig { * synonym for -1. */ public void setRetriesAllowed(String retriesAllowed) { - if ("FOREVER".equalsIgnoreCase(retriesAllowed)) { + String r = retriesAllowed != null + ? retriesAllowed.toUpperCase(Locale.ENGLISH) : null; + if ("FOREVER".equals(r)) { this.retriesAllowed = Retryable.RETRY_FOREVER; } else { try { @@ -2568,7 +2570,7 @@ public class FTP extends Task implements FTPTaskConfig { * @return the SYMBOL representing the given action. */ public int getAction() { - String actionL = getValue().toLowerCase(Locale.US); + String actionL = getValue().toLowerCase(Locale.ENGLISH); if (actionL.equals("send") || actionL.equals("put")) { return SEND_FILES; @@ -2627,7 +2629,7 @@ public class FTP extends Task implements FTPTaskConfig { * the attribute, in the context of the supplied action */ public long getMilliseconds(int action) { - String granularityU = getValue().toUpperCase(Locale.US); + String granularityU = getValue().toUpperCase(Locale.ENGLISH); if ("".equals(granularityU)) { if (action == SEND_FILES) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTask.java index 3a743cc9f..7cbfef3f8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTask.java @@ -588,7 +588,9 @@ public class FTPTask extends Task implements FTPTaskConfig { * synonym for -1. */ public void setRetriesAllowed(String retriesAllowed) { - if ("FOREVER".equalsIgnoreCase(retriesAllowed)) { + String r = retriesAllowed != null + ? retriesAllowed.toUpperCase(Locale.ENGLISH) : null; + if ("FOREVER".equals(r)) { this.retriesAllowed = Retryable.RETRY_FOREVER; } else { try { @@ -862,7 +864,7 @@ public class FTPTask extends Task implements FTPTaskConfig { * @return the SYMBOL representing the given action. */ public int getAction() { - String actionL = getValue().toLowerCase(Locale.US); + String actionL = getValue().toLowerCase(Locale.ENGLISH); if (actionL.equals("send") || actionL.equals("put")) { return SEND_FILES; @@ -921,7 +923,7 @@ public class FTPTask extends Task implements FTPTaskConfig { * the attribute, in the context of the supplied action */ public long getMilliseconds(int action) { - String granularityU = getValue().toUpperCase(Locale.US); + String granularityU = getValue().toUpperCase(Locale.ENGLISH); if ("".equals(granularityU)) { if (action == SEND_FILES) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java index e7fd0580f..709db0bd7 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java @@ -27,6 +27,7 @@ package org.apache.tools.ant.taskdefs.optional.perforce; import java.io.File; import java.util.Vector; import java.util.ArrayList; +import java.util.Locale; import org.apache.tools.ant.Project; import org.apache.tools.ant.BuildException; @@ -83,11 +84,12 @@ public class P4Fstat extends P4Base { * @param filter should be one of all|existing|non-existing. */ public void setShowFilter(String filter) { - if (filter.equalsIgnoreCase("all")) { + filter = filter.toLowerCase(Locale.ENGLISH); + if (filter.equals("all")) { show = SHOW_ALL; - } else if (filter.equalsIgnoreCase("existing")) { + } else if (filter.equals("existing")) { show = SHOW_EXISTING; - } else if (filter.equalsIgnoreCase("non-existing")) { + } else if (filter.equals("non-existing")) { show = SHOW_NON_EXISTING; } else { throw new BuildException("P4Fstat: ShowFilter should be one of: " diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java index 0c2edb7e3..bb04bf2d8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java @@ -25,6 +25,7 @@ package org.apache.tools.ant.taskdefs.optional.perforce; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.util.StringUtils; @@ -95,7 +96,7 @@ public class P4Label extends P4Base { desc = "AntLabel"; } - if (lock != null && !lock.equalsIgnoreCase("locked")) { + if (lock != null && !lock.toLowerCase(Locale.ENGLISH).equals("locked")) { log("lock attribute invalid - ignoring", Project.MSG_WARN); } @@ -136,7 +137,7 @@ public class P4Label extends P4Base { Project.MSG_INFO); //Now lock if required - if (lock != null && lock.equalsIgnoreCase("locked")) { + if (lock != null && lock.toLowerCase(Locale.ENGLISH).equals("locked")) { log("Modifying lock status to 'locked'", Project.MSG_INFO); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java index c42f0348f..32c6bdeb3 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java @@ -28,6 +28,7 @@ import java.io.IOException; import java.text.MessageFormat; import java.text.ParseException; import java.util.Enumeration; +import java.util.Locale; import java.util.Random; import java.util.Vector; import org.apache.tools.ant.BuildException; @@ -521,7 +522,7 @@ public class Pvcs extends org.apache.tools.ant.Task { * @param f String (yes/no) */ public void setForce(String f) { - if (f != null && f.equalsIgnoreCase("yes")) { + if (f != null && f.toLowerCase(Locale.ENGLISH).equals("yes")) { force = "yes"; } else { force = "no"; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java b/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java index 62f1222c1..afa0fcda7 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java @@ -110,7 +110,7 @@ public class ScriptDef extends DefBase { * @param name the attribute name */ public void setName(String name) { - this.name = name.toLowerCase(Locale.US); + this.name = name.toLowerCase(Locale.ENGLISH); } } @@ -142,7 +142,7 @@ public class ScriptDef extends DefBase { * @param name the name of this nested element */ public void setName(String name) { - this.name = name.toLowerCase(Locale.US); + this.name = name.toLowerCase(Locale.ENGLISH); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java index f00487c11..8503ba0df 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java @@ -26,6 +26,7 @@ import java.text.ParseException; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -515,9 +516,11 @@ public abstract class MSVSS extends Task implements MSVSSConstants { protected String getAutoresponse() { if (autoResponse == null) { return FLAG_AUTORESPONSE_DEF; - } else if (autoResponse.equalsIgnoreCase("Y")) { + } + autoResponse = autoResponse.toUpperCase(Locale.ENGLISH); + if (autoResponse.equals("Y")) { return FLAG_AUTORESPONSE_YES; - } else if (autoResponse.equalsIgnoreCase("N")) { + } else if (autoResponse.equals("N")) { return FLAG_AUTORESPONSE_NO; } else { return FLAG_AUTORESPONSE_DEF; diff --git a/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java b/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java index 26e794a64..e92dd0ba6 100644 --- a/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java +++ b/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java @@ -18,6 +18,7 @@ package org.apache.tools.ant.types; +import java.util.Locale; import org.apache.tools.ant.BuildException; /** @@ -150,4 +151,12 @@ public abstract class EnumeratedAttribute { return getValue(); } + protected static boolean equalsIgnoreCase(String expected, String actual) { + if (expected == null) { + return actual == null; + } + return actual != null && expected.length() == actual.length() + && expected.toLowerCase(Locale.ENGLISH) + .equals(actual.toLowerCase(Locale.ENGLISH)); + } } diff --git a/src/main/org/apache/tools/ant/types/Path.java b/src/main/org/apache/tools/ant/types/Path.java index 514c162dd..dd60b8972 100644 --- a/src/main/org/apache/tools/ant/types/Path.java +++ b/src/main/org/apache/tools/ant/types/Path.java @@ -597,7 +597,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection { addExisting(systemBootClasspath); } - if (System.getProperty("java.vendor").toLowerCase(Locale.US).indexOf("microsoft") >= 0) { + if (System.getProperty("java.vendor").toLowerCase(Locale.ENGLISH).indexOf("microsoft") >= 0) { // XXX is this code still necessary? is there any 1.2+ port? // Pull in *.zip from packages directory FileSet msZipFiles = new FileSet(); diff --git a/src/main/org/apache/tools/ant/types/optional/image/Arc.java b/src/main/org/apache/tools/ant/types/optional/image/Arc.java index 6f64d1aea..5760f99e6 100644 --- a/src/main/org/apache/tools/ant/types/optional/image/Arc.java +++ b/src/main/org/apache/tools/ant/types/optional/image/Arc.java @@ -22,6 +22,7 @@ import java.awt.BasicStroke; import java.awt.Graphics2D; import java.awt.geom.Arc2D; import java.awt.image.BufferedImage; +import java.util.Locale; /** * Draw an arc. @@ -73,11 +74,12 @@ public class Arc extends BasicShape implements DrawOperation { * @todo refactor using an EnumeratedAttribute */ public void setType(String strType) { - if (strType.toLowerCase().equals("open")) { + String stype = strType.toLowerCase(Locale.ENGLISH); + if (stype.equals("open")) { type = Arc2D.OPEN; - } else if (strType.toLowerCase().equals("pie")) { + } else if (stype.equals("pie")) { type = Arc2D.PIE; - } else if (strType.toLowerCase().equals("chord")) { + } else if (stype.equals("chord")) { type = Arc2D.CHORD; } } diff --git a/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java b/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java index ec01a8d52..a99e9f0f3 100644 --- a/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java +++ b/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java @@ -18,6 +18,7 @@ package org.apache.tools.ant.types.optional.image; import java.awt.Color; +import java.util.Locale; /** * @@ -69,7 +70,7 @@ public final class ColorMapper { * @todo refactor to use an EnumeratedAttribute (maybe?) */ public static Color getColorByName(String colorName) { - colorName = colorName.toLowerCase(); + colorName = colorName.toLowerCase(Locale.ENGLISH); if (colorName.equals(COLOR_BLACK)) { return Color.black; diff --git a/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java b/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java index 4de2725eb..1ca25aea5 100644 --- a/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java @@ -22,6 +22,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.types.Parameter; @@ -82,7 +83,9 @@ public class ContainsRegexpSelector extends BaseExtendSelector if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (EXPRESSION_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null + && EXPRESSION_KEY.equals(paramname + .toLowerCase(Locale.ENGLISH))) { setExpression(parameters[i].getValue()); } else { setError("Invalid parameter " + paramname); diff --git a/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java b/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java index 31c5c5a65..cc8bc1c01 100644 --- a/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java @@ -22,6 +22,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.util.Locale; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -112,12 +113,15 @@ public class ContainsSelector extends BaseExtendSelector implements ResourceSele if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (CONTAINS_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null) { + paramname = paramname.toLowerCase(Locale.ENGLISH); + } + if (CONTAINS_KEY.equals(paramname)) { setText(parameters[i].getValue()); - } else if (CASE_KEY.equalsIgnoreCase(paramname)) { + } else if (CASE_KEY.equals(paramname)) { setCasesensitive(Project.toBoolean( parameters[i].getValue())); - } else if (WHITESPACE_KEY.equalsIgnoreCase(paramname)) { + } else if (WHITESPACE_KEY.equals(paramname)) { setIgnorewhitespace(Project.toBoolean( parameters[i].getValue())); } else { diff --git a/src/main/org/apache/tools/ant/types/selectors/DateSelector.java b/src/main/org/apache/tools/ant/types/selectors/DateSelector.java index 76c1d167f..02b76ba13 100644 --- a/src/main/org/apache/tools/ant/types/selectors/DateSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/DateSelector.java @@ -171,27 +171,30 @@ public class DateSelector extends BaseExtendSelector { if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (MILLIS_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null) { + paramname = paramname.toLowerCase(Locale.ENGLISH); + } + if (MILLIS_KEY.equals(paramname)) { try { setMillis(Long.parseLong(parameters[i].getValue())); } catch (NumberFormatException nfe) { setError("Invalid millisecond setting " + parameters[i].getValue()); } - } else if (DATETIME_KEY.equalsIgnoreCase(paramname)) { + } else if (DATETIME_KEY.equals(paramname)) { setDatetime(parameters[i].getValue()); - } else if (CHECKDIRS_KEY.equalsIgnoreCase(paramname)) { + } else if (CHECKDIRS_KEY.equals(paramname)) { setCheckdirs(Project.toBoolean(parameters[i].getValue())); - } else if (GRANULARITY_KEY.equalsIgnoreCase(paramname)) { + } else if (GRANULARITY_KEY.equals(paramname)) { try { setGranularity(Integer.parseInt(parameters[i].getValue())); } catch (NumberFormatException nfe) { setError("Invalid granularity setting " + parameters[i].getValue()); } - } else if (WHEN_KEY.equalsIgnoreCase(paramname)) { + } else if (WHEN_KEY.equals(paramname)) { setWhen(new TimeComparison(parameters[i].getValue())); - } else if (PATTERN_KEY.equalsIgnoreCase(paramname)) { + } else if (PATTERN_KEY.equals(paramname)) { setPattern(parameters[i].getValue()); } else { setError("Invalid parameter " + paramname); diff --git a/src/main/org/apache/tools/ant/types/selectors/DepthSelector.java b/src/main/org/apache/tools/ant/types/selectors/DepthSelector.java index 9d6165000..230a162e7 100644 --- a/src/main/org/apache/tools/ant/types/selectors/DepthSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/DepthSelector.java @@ -19,6 +19,7 @@ package org.apache.tools.ant.types.selectors; import java.io.File; +import java.util.Locale; import java.util.StringTokenizer; import org.apache.tools.ant.BuildException; @@ -94,14 +95,17 @@ public class DepthSelector extends BaseExtendSelector { if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (MIN_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null) { + paramname = paramname.toLowerCase(Locale.ENGLISH); + } + if (MIN_KEY.equals(paramname)) { try { setMin(Integer.parseInt(parameters[i].getValue())); } catch (NumberFormatException nfe1) { setError("Invalid minimum value " + parameters[i].getValue()); } - } else if (MAX_KEY.equalsIgnoreCase(paramname)) { + } else if (MAX_KEY.equals(paramname)) { try { setMax(Integer.parseInt(parameters[i].getValue())); } catch (NumberFormatException nfe1) { diff --git a/src/main/org/apache/tools/ant/types/selectors/FilenameSelector.java b/src/main/org/apache/tools/ant/types/selectors/FilenameSelector.java index 9bc96cdc2..f7ae5c850 100644 --- a/src/main/org/apache/tools/ant/types/selectors/FilenameSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/FilenameSelector.java @@ -19,6 +19,7 @@ package org.apache.tools.ant.types.selectors; import java.io.File; +import java.util.Locale; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Parameter; @@ -133,14 +134,17 @@ public class FilenameSelector extends BaseExtendSelector { if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (NAME_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null) { + paramname = paramname.toLowerCase(Locale.ENGLISH); + } + if (NAME_KEY.equals(paramname)) { setName(parameters[i].getValue()); - } else if (CASE_KEY.equalsIgnoreCase(paramname)) { + } else if (CASE_KEY.equals(paramname)) { setCasesensitive(Project.toBoolean( parameters[i].getValue())); - } else if (NEGATE_KEY.equalsIgnoreCase(paramname)) { + } else if (NEGATE_KEY.equals(paramname)) { setNegate(Project.toBoolean(parameters[i].getValue())); - } else if (REGEX_KEY.equalsIgnoreCase(paramname)) { + } else if (REGEX_KEY.equals(paramname)) { setRegex(parameters[i].getValue()); } else { setError("Invalid parameter " + paramname); diff --git a/src/main/org/apache/tools/ant/types/selectors/SizeSelector.java b/src/main/org/apache/tools/ant/types/selectors/SizeSelector.java index 3248647f6..184cde9be 100644 --- a/src/main/org/apache/tools/ant/types/selectors/SizeSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/SizeSelector.java @@ -19,6 +19,7 @@ package org.apache.tools.ant.types.selectors; import java.io.File; +import java.util.Locale; import org.apache.tools.ant.types.Comparison; import org.apache.tools.ant.types.EnumeratedAttribute; @@ -169,18 +170,21 @@ public class SizeSelector extends BaseExtendSelector { if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (SIZE_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null) { + paramname = paramname.toLowerCase(Locale.ENGLISH); + } + if (SIZE_KEY.equals(paramname)) { try { setValue(Long.parseLong(parameters[i].getValue())); } catch (NumberFormatException nfe) { setError("Invalid size setting " + parameters[i].getValue()); } - } else if (UNITS_KEY.equalsIgnoreCase(paramname)) { + } else if (UNITS_KEY.equals(paramname)) { ByteUnits units = new ByteUnits(); units.setValue(parameters[i].getValue()); setUnits(units); - } else if (WHEN_KEY.equalsIgnoreCase(paramname)) { + } else if (WHEN_KEY.equals(paramname)) { SizeComparisons scmp = new SizeComparisons(); scmp.setValue(parameters[i].getValue()); setWhen(scmp); diff --git a/src/main/org/apache/tools/ant/types/selectors/TypeSelector.java b/src/main/org/apache/tools/ant/types/selectors/TypeSelector.java index 33ac443b7..f8189e12e 100644 --- a/src/main/org/apache/tools/ant/types/selectors/TypeSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/TypeSelector.java @@ -19,6 +19,7 @@ package org.apache.tools.ant.types.selectors; import java.io.File; +import java.util.Locale; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.Parameter; @@ -71,7 +72,10 @@ public class TypeSelector extends BaseExtendSelector { if (parameters != null) { for (int i = 0; i < parameters.length; i++) { String paramname = parameters[i].getName(); - if (TYPE_KEY.equalsIgnoreCase(paramname)) { + if (paramname != null) { + paramname = paramname.toLowerCase(Locale.ENGLISH); + } + if (TYPE_KEY.equals(paramname)) { FileType t = new FileType(); t.setValue(parameters[i].getValue()); setType(t); diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ChecksumAlgorithm.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ChecksumAlgorithm.java index 10aee508e..e930beeb0 100644 --- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ChecksumAlgorithm.java +++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ChecksumAlgorithm.java @@ -18,7 +18,7 @@ package org.apache.tools.ant.types.selectors.modifiedselector; - +import java.util.Locale; import java.util.zip.Checksum; import java.util.zip.CRC32; import java.util.zip.Adler32; @@ -76,7 +76,8 @@ public class ChecksumAlgorithm implements Algorithm { * @param algorithm the digest algorithm to use */ public void setAlgorithm(String algorithm) { - this.algorithm = algorithm; + this.algorithm = + algorithm != null ? algorithm.toUpperCase(Locale.ENGLISH) : null; } @@ -85,9 +86,9 @@ public class ChecksumAlgorithm implements Algorithm { if (checksum != null) { return; } - if ("CRC".equalsIgnoreCase(algorithm)) { + if ("CRC".equals(algorithm)) { checksum = new CRC32(); - } else if ("ADLER".equalsIgnoreCase(algorithm)) { + } else if ("ADLER".equals(algorithm)) { checksum = new Adler32(); } else { throw new BuildException(new NoSuchAlgorithmException()); @@ -103,7 +104,7 @@ public class ChecksumAlgorithm implements Algorithm { * @return true if all is ok, otherwise false. */ public boolean isValid() { - return "CRC".equalsIgnoreCase(algorithm) || "ADLER".equalsIgnoreCase(algorithm); + return "CRC".equals(algorithm) || "ADLER".equals(algorithm); } diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java index 1c971808c..38ccddf3e 100644 --- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java +++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java @@ -21,6 +21,7 @@ package org.apache.tools.ant.types.selectors.modifiedselector; import java.io.File; import java.io.FileInputStream; +import java.util.Locale; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -92,7 +93,8 @@ public class DigestAlgorithm implements Algorithm { * @param algorithm the digest algorithm to use */ public void setAlgorithm(String algorithm) { - this.algorithm = algorithm; + this.algorithm = algorithm != null + ? algorithm.toUpperCase(Locale.ENGLISH) : null; } @@ -138,7 +140,7 @@ public class DigestAlgorithm implements Algorithm { * @return true if all is ok, otherwise false. */ public boolean isValid() { - return "SHA".equalsIgnoreCase(algorithm) || "MD5".equalsIgnoreCase(algorithm); + return "SHA".equals(algorithm) || "MD5".equals(algorithm); } diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java index bb8ea42d5..3f728f9a5 100644 --- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java @@ -20,10 +20,11 @@ package org.apache.tools.ant.types.selectors.modifiedselector; // Java +import java.io.File; import java.util.Comparator; -import java.util.Vector; import java.util.Iterator; -import java.io.File; +import java.util.Locale; +import java.util.Vector; // Ant import org.apache.tools.ant.Project; @@ -720,6 +721,8 @@ public class ModifiedSelector extends BaseExtendSelector public void useParameter(Parameter parameter) { String key = parameter.getName(); String value = parameter.getValue(); + String valueLC = + value != null ? value.toLowerCase(Locale.ENGLISH) : null; if ("cache".equals(key)) { CacheName cn = new CacheName(); cn.setValue(value); @@ -734,19 +737,19 @@ public class ModifiedSelector extends BaseExtendSelector setComparator(cn); } else if ("update".equals(key)) { boolean updateValue = - ("true".equalsIgnoreCase(value)) + ("true".equals(valueLC)) ? true : false; setUpdate(updateValue); } else if ("delayupdate".equals(key)) { boolean updateValue = - ("true".equalsIgnoreCase(value)) + ("true".equals(valueLC)) ? true : false; setDelayUpdate(updateValue); } else if ("seldirs".equals(key)) { boolean sdValue = - ("true".equalsIgnoreCase(value)) + ("true".equals(valueLC)) ? true : false; setSeldirs(sdValue); diff --git a/src/main/org/apache/tools/ant/util/LeadPipeInputStream.java b/src/main/org/apache/tools/ant/util/LeadPipeInputStream.java index 7688e1a1b..7b5b45cf5 100644 --- a/src/main/org/apache/tools/ant/util/LeadPipeInputStream.java +++ b/src/main/org/apache/tools/ant/util/LeadPipeInputStream.java @@ -21,6 +21,7 @@ package org.apache.tools.ant.util; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; +import java.util.Locale; import org.apache.tools.ant.ProjectComponent; import org.apache.tools.ant.Task; @@ -86,7 +87,11 @@ public class LeadPipeInputStream extends PipedInputStream { try { result = super.read(); } catch (IOException eyeOhEx) { - if ("write end dead".equalsIgnoreCase(eyeOhEx.getMessage())) { + String msg = eyeOhEx.getMessage(); + if (msg != null) { + msg = msg.toLowerCase(Locale.ENGLISH); + } + if ("write end dead".equals(msg)) { if (super.in > 0 && super.out < super.buffer.length && super.out > super.in) { result = super.buffer[super.out++] & BYTE_MASK; diff --git a/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java b/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java index d4171a73f..e71db2d0a 100644 --- a/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java +++ b/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java @@ -20,8 +20,8 @@ package org.apache.tools.ant.util.optional; import org.apache.tools.ant.BuildException; - import java.util.Iterator; +import java.util.Locale; import org.apache.tools.ant.util.ScriptRunnerBase; import org.apache.tools.ant.util.ReflectUtil; import org.apache.tools.ant.util.ReflectWrapper; @@ -90,7 +90,7 @@ public class JavaxScriptRunner extends ScriptRunnerBase { for (Iterator i = getBeans().keySet().iterator(); i.hasNext();) { String key = (String) i.next(); Object value = getBeans().get(key); - if ("FX".equalsIgnoreCase(getLanguage())) { + if ("FX".equals(getLanguage().toUpperCase(Locale.ENGLISH))) { engine.invoke( "put", String.class, key + ":" + value.getClass().getName(), diff --git a/src/main/org/apache/tools/tar/TarEntry.java b/src/main/org/apache/tools/tar/TarEntry.java index d69977863..726957221 100644 --- a/src/main/org/apache/tools/tar/TarEntry.java +++ b/src/main/org/apache/tools/tar/TarEntry.java @@ -625,7 +625,7 @@ public class TarEntry implements TarConstants { */ private static String normalizeFileName(String fileName, boolean preserveLeadingSlashes) { - String osname = System.getProperty("os.name").toLowerCase(Locale.US); + String osname = System.getProperty("os.name").toLowerCase(Locale.ENGLISH); if (osname != null) {