From 76d6570d33a7e948cc6ac3c25efc254fc70a4548 Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Fri, 11 Sep 2009 18:16:46 +0400 Subject: [PATCH] correctly process file in packaging compiler if filename case is changed --- .../impl/packagingCompiler/ProcessingItemsBuilder.java | 3 ++- .../intellij/openapi/deployment/DeploymentUtilImpl.java | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/packagingCompiler/ProcessingItemsBuilder.java b/java/compiler/impl/src/com/intellij/compiler/impl/packagingCompiler/ProcessingItemsBuilder.java index e5273df03f37..8c095113774b 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/packagingCompiler/ProcessingItemsBuilder.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/packagingCompiler/ProcessingItemsBuilder.java @@ -13,6 +13,7 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.PathUtil; +import com.intellij.util.text.FilePathHashingStrategy; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -242,7 +243,7 @@ public class ProcessingItemsBuilder extends BuildInstructionVisitor { final VirtualFile[] children = sourceFile.getChildren(); THashMap outputChildren = null; if (outputFile != null) { - outputChildren = new THashMap(); + outputChildren = new THashMap(FilePathHashingStrategy.create()); VirtualFile[] files = outputFile.getChildren(); if (files != null) { for (VirtualFile file : files) { diff --git a/java/compiler/impl/src/com/intellij/openapi/deployment/DeploymentUtilImpl.java b/java/compiler/impl/src/com/intellij/openapi/deployment/DeploymentUtilImpl.java index 787072c5dbe6..f1f813c9db8c 100644 --- a/java/compiler/impl/src/com/intellij/openapi/deployment/DeploymentUtilImpl.java +++ b/java/compiler/impl/src/com/intellij/openapi/deployment/DeploymentUtilImpl.java @@ -16,6 +16,7 @@ import com.intellij.openapi.roots.impl.OrderEntryUtil; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; @@ -204,6 +205,12 @@ public class DeploymentUtilImpl extends DeploymentUtil { if (LOG.isDebugEnabled()) { LOG.debug("Copy file '" + fromFile + "' to '"+toFile+"'"); } + if (toFile.exists() && !SystemInfo.isFileSystemCaseSensitive) { + File canonicalFile = toFile.getCanonicalFile(); + if (!canonicalFile.getAbsolutePath().equals(toFile.getAbsolutePath())) { + FileUtil.delete(toFile); + } + } FileUtil.copy(fromFile, toFile); } catch (IOException e) {