From e43d5d34e3c1d1b4cf9ff7dc97ace6283eed1a33 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 27 Dec 2011 14:43:35 +0400 Subject: [PATCH] IDEA-76898: Some characters in archive names are replaced by underscore --- .../intellij/packaging/impl/artifacts/ArtifactUtil.java | 5 +++++ .../intellij/packaging/impl/artifacts/JarArtifactType.java | 4 ++-- .../packaging/impl/artifacts/JarFromModulesTemplate.java | 3 +-- .../ui/configuration/artifacts/ArtifactEditorImpl.java | 4 ++-- platform/platform-api/src/com/intellij/util/PathUtil.java | 7 ++++++- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java index fa1b38dee670..9cde8f07e2df 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java @@ -33,6 +33,7 @@ import com.intellij.packaging.artifacts.ArtifactProperties; import com.intellij.packaging.artifacts.ArtifactType; import com.intellij.packaging.elements.*; import com.intellij.packaging.impl.elements.*; +import com.intellij.util.PathUtil; import com.intellij.util.Processor; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; @@ -554,5 +555,9 @@ public class ArtifactUtil { } return result; } + + public static String suggestArtifactFileName(String artifactName) { + return PathUtil.suggestFileName(artifactName, true, true); + } } diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarArtifactType.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarArtifactType.java index 47d0033a6e09..678cd9cb6dd0 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarArtifactType.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarArtifactType.java @@ -15,13 +15,13 @@ */ package com.intellij.packaging.impl.artifacts; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.packaging.artifacts.ArtifactTemplate; import com.intellij.packaging.artifacts.ArtifactType; import com.intellij.packaging.elements.CompositePackagingElement; import com.intellij.packaging.elements.PackagingElementOutputKind; import com.intellij.packaging.elements.PackagingElementResolvingContext; import com.intellij.packaging.impl.elements.ArchivePackagingElement; +import com.intellij.util.PathUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -54,7 +54,7 @@ public class JarArtifactType extends ArtifactType { @NotNull @Override public CompositePackagingElement createRootElement(@NotNull String artifactName) { - return new ArchivePackagingElement(FileUtil.sanitizeFileName(artifactName) + ".jar"); + return new ArchivePackagingElement(ArtifactUtil.suggestArtifactFileName(artifactName) + ".jar"); } @NotNull diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarFromModulesTemplate.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarFromModulesTemplate.java index bfce865fdd4a..542db382fd4b 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarFromModulesTemplate.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/JarFromModulesTemplate.java @@ -24,7 +24,6 @@ import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packaging.artifacts.ArtifactTemplate; @@ -94,7 +93,7 @@ public class JarFromModulesTemplate extends ArtifactTemplate { String name = modules.length == 1 ? modules[0].getName() : project.getName(); final PackagingElementFactory factory = PackagingElementFactory.getInstance(); - final CompositePackagingElement archive = factory.createArchive(FileUtil.sanitizeFileName(name) + ".jar"); + final CompositePackagingElement archive = factory.createArchive(ArtifactUtil.suggestArtifactFileName(name) + ".jar"); OrderEnumerator orderEnumerator = ProjectRootManager.getInstance(project).orderEntries(Arrays.asList(modules)); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java index 272d0f645c7c..86394d0e5d1a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java @@ -429,14 +429,14 @@ public class ArtifactEditorImpl implements ArtifactEditorEx { setOutputPath(ArtifactUtil.getDefaultArtifactOutputPath(newArtifactName, myProject)); final CompositePackagingElement root = getRootElement(); if (root instanceof ArchivePackagingElement) { - String oldFileName = FileUtil.sanitizeFileName(oldArtifactName); + String oldFileName = ArtifactUtil.suggestArtifactFileName(oldArtifactName); final String name = ((ArchivePackagingElement)root).getArchiveFileName(); final String fileName = FileUtil.getNameWithoutExtension(name); final String extension = FileUtil.getExtension(name); if (fileName.equals(oldFileName) && extension.length() > 0) { myLayoutTreeComponent.editLayout(new Runnable() { public void run() { - ((ArchivePackagingElement)getRootElement()).setArchiveFileName(FileUtil.sanitizeFileName(newArtifactName) + "." + extension); + ((ArchivePackagingElement)getRootElement()).setArchiveFileName(ArtifactUtil.suggestArtifactFileName(newArtifactName) + "." + extension); } }); myLayoutTreeComponent.updateRootNode(); diff --git a/platform/platform-api/src/com/intellij/util/PathUtil.java b/platform/platform-api/src/com/intellij/util/PathUtil.java index c85296d6ea58..26d7b9433a8f 100644 --- a/platform/platform-api/src/com/intellij/util/PathUtil.java +++ b/platform/platform-api/src/com/intellij/util/PathUtil.java @@ -101,10 +101,15 @@ public class PathUtil { @NotNull public static String suggestFileName(@NotNull String text) { + return suggestFileName(text, false, false); + } + + @NotNull + public static String suggestFileName(@NotNull String text, final boolean allowDots, final boolean allowSpaces) { StringBuilder result = new StringBuilder(); for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); - if (!isValidFileNameChar(c) || c == '.' || Character.isWhitespace(c)) { + if (!isValidFileNameChar(c) || (!allowDots && c == '.') || (!allowSpaces && Character.isWhitespace(c))) { result.append('_'); } else {