From f984f9775a0b921723f9f75569d4a2c16a28aa57 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Thu, 13 Mar 2003 16:14:51 +0000 Subject: [PATCH] This is supposed to fix bug 17871. The patch looks innocent enough for me to merge it into the 1.5 branch right away, but I cannot really verify it fixes the bug because of my persistent (and self-imposed) lack of a Windows system. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274248 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/taskdefs/Ear.java | 4 +++- src/main/org/apache/tools/ant/taskdefs/War.java | 5 ++++- .../org/apache/tools/ant/util/FileUtils.java | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Ear.java b/src/main/org/apache/tools/ant/taskdefs/Ear.java index 66fc48d9e..00c2116a6 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Ear.java +++ b/src/main/org/apache/tools/ant/taskdefs/Ear.java @@ -58,6 +58,7 @@ import java.io.IOException; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.ZipFileSet; +import org.apache.tools.ant.util.FileUtils; import org.apache.tools.zip.ZipOutputStream; /** @@ -74,6 +75,7 @@ public class Ear extends Jar { private File deploymentDescriptor; private boolean descriptorAdded; + private static final FileUtils fu = FileUtils.newFileUtils(); /** * Create an Ear task. @@ -146,7 +148,7 @@ public class Ear extends Jar { // element. if (vPath.equalsIgnoreCase("META-INF/application.xml")) { if (deploymentDescriptor == null - || !deploymentDescriptor.equals(file) + || !fu.fileNameEquals(deploymentDescriptor, file) || descriptorAdded) { log("Warning: selected " + archiveType + " files include a META-INF/application.xml which will" diff --git a/src/main/org/apache/tools/ant/taskdefs/War.java b/src/main/org/apache/tools/ant/taskdefs/War.java index 18d4657a6..d5ac21bb9 100644 --- a/src/main/org/apache/tools/ant/taskdefs/War.java +++ b/src/main/org/apache/tools/ant/taskdefs/War.java @@ -59,6 +59,7 @@ import java.io.IOException; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.ZipFileSet; +import org.apache.tools.ant.util.FileUtils; import org.apache.tools.zip.ZipOutputStream; @@ -91,6 +92,8 @@ public class War extends Jar { */ private boolean descriptorAdded; + private static final FileUtils fu = FileUtils.newFileUtils(); + public War() { super(); archiveType = "war"; @@ -180,7 +183,7 @@ public class War extends Jar { // by the "webxml" attribute and in a element. if (vPath.equalsIgnoreCase("WEB-INF/web.xml")) { if (deploymentDescriptor == null - || !deploymentDescriptor.equals(file) + || !fu.fileNameEquals(deploymentDescriptor, file) || descriptorAdded) { log("Warning: selected " + archiveType + " files include a WEB-INF/web.xml which will be ignored " diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java index c36353ec1..12358a473 100644 --- a/src/main/org/apache/tools/ant/util/FileUtils.java +++ b/src/main/org/apache/tools/ant/util/FileUtils.java @@ -734,7 +734,7 @@ public class FileUtils { return false; } - if (f1.equals(f2)) { + if (fileNameEquals(f1, f2)) { // same filename => true return true; } @@ -1001,5 +1001,19 @@ public class FileUtils { return path; } + /** + * Compares two filenames. + * + *

Unlike java.io.File#equals this method will try to compare + * the absolute paths and "normalize" the filenames + * before comparing them.

+ * + * @since Ant 1.5.2 + */ + public boolean fileNameEquals(File f1, File f2) { + return normalize(f1.getAbsolutePath()) + .equals(normalize(f2.getAbsolutePath())); + } + }