From caf5a5112741fe2e9153be01f25d954e682da871 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 23 Sep 2011 13:01:10 +0200 Subject: [PATCH] pull up getRelativePath() to VfsUtilCore --- .../src/org/intellij/images/vfs/IfsUtil.java | 4 +- .../compiler/ant/ModuleChunkSourcepath.java | 5 ++- .../intellij/compiler/impl/CompileDriver.java | 7 +-- .../javaCompiler/BackendCompilerWrapper.java | 3 +- .../resourceCompiler/ResourceCompiler.java | 4 +- .../impl/artifacts/ArtifactUtil.java | 5 ++- .../newProjectWizard/SourcePathsStep.java | 4 +- .../DetectedRootsChooserDialog.java | 4 +- .../psi/impl/source/PsiJavaFileBaseImpl.java | 4 +- .../com/intellij/openapi/vfs/VfsUtilTest.java | 6 +-- .../com/intellij/openapi/vfs/VfsUtilCore.java | 43 +++++++++++++++++++ .../util/OrderEntryCellAppearanceUtils.java | 7 +-- .../packageSet/FilePatternPackageSet.java | 5 ++- .../impl/FileIncludeContextHectorPanel.java | 4 +- .../impl/ui/DetectedFrameworkNode.java | 4 +- .../impl/ui/FrameworkDirectoryNode.java | 4 +- .../intellij/ide/impl/PatchProjectUtil.java | 3 +- .../ui/configuration/ContentRootPanel.java | 3 +- .../vcs/impl/ModuleVcsPathPresenter.java | 4 +- .../packageDependencies/ui/DirectoryNode.java | 11 ++--- .../ui/ProjectPatternProvider.java | 4 +- .../impl/providers/FileReference.java | 3 +- .../providers/PsiFileReferenceHelper.java | 4 +- .../MoveDirectoryWithClassesProcessor.java | 4 +- .../src/com/intellij/openapi/vfs/VfsUtil.java | 42 ------------------ .../packaging/EmptyDirectoryInspection.java | 3 +- .../compiler/AndroidIncludingCompiler.java | 6 +-- .../compiler/tools/AndroidApkBuilder.java | 6 +-- .../maven/AndroidMavenProviderImpl.java | 3 +- .../devkit/src/util/ChooseModulesDialog.java | 3 +- .../idea/eclipse/conversion/EJavadocUtil.java | 7 +-- .../idea/eclipse/conversion/EPathUtil.java | 9 ++-- .../move/GroovyMoveScriptTest.java | 2 +- .../maven/compiler/MavenResourceCompiler.java | 3 +- .../wizards/MavenProjectImportProvider.java | 4 +- 35 files changed, 119 insertions(+), 118 deletions(-) diff --git a/images/src/org/intellij/images/vfs/IfsUtil.java b/images/src/org/intellij/images/vfs/IfsUtil.java index 5546094fbc70..8e67e3f6de9d 100644 --- a/images/src/org/intellij/images/vfs/IfsUtil.java +++ b/images/src/org/intellij/images/vfs/IfsUtil.java @@ -22,7 +22,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Key; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.reference.SoftReference; import com.intellij.util.LogicalRoot; @@ -129,6 +129,6 @@ public final class IfsUtil { if (root.equals(file)) { return file.getPath(); } - return "/" + VfsUtil.getRelativePath(file, root, '/'); + return "/" + VfsUtilCore.getRelativePath(file, root, '/'); } } diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/ModuleChunkSourcepath.java b/java/compiler/impl/src/com/intellij/compiler/ant/ModuleChunkSourcepath.java index a0922e3eaeff..a0881a1b1dbe 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/ModuleChunkSourcepath.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/ModuleChunkSourcepath.java @@ -23,6 +23,7 @@ import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ModuleFileIndex; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import java.util.ArrayList; @@ -83,7 +84,7 @@ public class ModuleChunkSourcepath extends CompositeGenerator{ addExcludePatterns(module, root, root, excludedFromModule, true); - final Include include = new Include(VfsUtil.getRelativePath(root, dirSetRoot, '/')); + final Include include = new Include(VfsUtilCore.getRelativePath(root, dirSetRoot, '/')); if (moduleFileIndex.isInTestSourceContent(root)) { testSourcesDirSet.add(include); testSourceRootFiles.add(root); @@ -147,7 +148,7 @@ public class ModuleChunkSourcepath extends CompositeGenerator{ } final boolean isIncluded = ModuleRootManager.getInstance(module).getFileIndex().isInContent(dir); if (isIncluded != parentIncluded) { - final String relativePath = VfsUtil.getRelativePath(dir, root, '/'); + final String relativePath = VfsUtilCore.getRelativePath(dir, root, '/'); if (isIncluded) { generator.add(new Include(relativePath + "/**")); } diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java index 1f4929bb2634..47a9ea339d10 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java @@ -63,10 +63,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.*; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.registry.Registry; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.*; import com.intellij.openapi.vfs.newvfs.ManagingFS; import com.intellij.openapi.vfs.newvfs.RefreshQueue; import com.intellij.openapi.vfs.newvfs.persistent.PersistentFS; @@ -1052,7 +1049,7 @@ public class CompileDriver { } private static void writeIndex(final BufferedWriter writer, final VirtualFile root, final VirtualFile file) throws IOException { - writer.write(VfsUtil.getRelativePath(file, root, '/')); + writer.write(VfsUtilCore.getRelativePath(file, root, '/')); writer.write('\n'); for (VirtualFile child : file.getChildren()) { diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java index c0a04a997893..1c764325466a 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java @@ -56,6 +56,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; @@ -724,7 +725,7 @@ public class BackendCompilerWrapper { */ protected static String calcPackagePath(VirtualFile srcFile, VirtualFile sourceRoot, String packagePrefix) { final String prefix = packagePrefix != null && packagePrefix.length() > 0 ? packagePrefix.replace('.', '/') + "/" : ""; - return prefix + VfsUtil.getRelativePath(srcFile, sourceRoot, '/'); + return prefix + VfsUtilCore.getRelativePath(srcFile, sourceRoot, '/'); } @Nullable diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/resourceCompiler/ResourceCompiler.java b/java/compiler/impl/src/com/intellij/compiler/impl/resourceCompiler/ResourceCompiler.java index 12ef0f48e3a8..ae95ced0efa3 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/resourceCompiler/ResourceCompiler.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/resourceCompiler/ResourceCompiler.java @@ -36,7 +36,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.util.Chunk; @@ -94,7 +94,7 @@ public class ResourceCompiler implements TranslatingCompiler { continue; } final String sourcePath = file.getPath(); - final String relativePath = VfsUtil.getRelativePath(file, fileRoot, '/'); + final String relativePath = VfsUtilCore.getRelativePath(file, fileRoot, '/'); final boolean inTests = ((CompileContextEx)context).isInTestSourceContent(file); final VirtualFile outputDir = inTests? context.getModuleOutputDirectoryForTests(module) : context.getModuleOutputDirectory(module); if (outputDir == null) { 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 c333b135da30..9263535b843b 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 @@ -25,6 +25,7 @@ import com.intellij.openapi.util.Trinity; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packaging.artifacts.Artifact; import com.intellij.packaging.artifacts.ArtifactManager; @@ -336,7 +337,7 @@ public class ArtifactUtil { relativePath = ((FileCopyPackagingElement)element).getOutputFileName(); } else { - relativePath = VfsUtil.getRelativePath(file, root, '/'); + relativePath = VfsUtilCore.getRelativePath(file, root, '/'); } artifacts.add(Trinity.create(artifact, path, relativePath)); return false; @@ -361,7 +362,7 @@ public class ArtifactUtil { @NotNull PackagingElementResolvingContext context) { for (VirtualFile sourceRoot : moduleElement.getSourceRoots(context)) { if (VfsUtil.isAncestor(sourceRoot, file, true)) { - return VfsUtil.getRelativePath(file, sourceRoot, '/'); + return VfsUtilCore.getRelativePath(file, sourceRoot, '/'); } } return null; diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java index 073079b81e22..2bbfb08db1b0 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java @@ -33,7 +33,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Trinity; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.FieldPanel; @@ -417,7 +417,7 @@ public class SourcePathsStep extends AbstractStepWithProgress orderEntries = index.getOrderEntriesForFile(virtualFile); if (orderEntries.isEmpty()) { diff --git a/java/java-tests/testSrc/com/intellij/openapi/vfs/VfsUtilTest.java b/java/java-tests/testSrc/com/intellij/openapi/vfs/VfsUtilTest.java index c19c44973bba..c9f857b36418 100644 --- a/java/java-tests/testSrc/com/intellij/openapi/vfs/VfsUtilTest.java +++ b/java/java-tests/testSrc/com/intellij/openapi/vfs/VfsUtilTest.java @@ -124,9 +124,9 @@ public class VfsUtilTest extends IdeaTestCase { final VirtualFile vSubSubDir = LocalFileSystem.getInstance().findFileByIoFile(subSubDir); assertNotNull(vSubSubDir); - assertEquals("subDir", VfsUtil.getRelativePath(vSubDir, vTestRoot, '/')); - assertEquals("subDir/subSubDir", VfsUtil.getRelativePath(vSubSubDir, vTestRoot, '/')); - assertEquals("", VfsUtil.getRelativePath(vTestRoot, vTestRoot, '/')); + assertEquals("subDir", VfsUtilCore.getRelativePath(vSubDir, vTestRoot, '/')); + assertEquals("subDir/subSubDir", VfsUtilCore.getRelativePath(vSubSubDir, vTestRoot, '/')); + assertEquals("", VfsUtilCore.getRelativePath(vTestRoot, vTestRoot, '/')); } public void testAsyncRefresh() throws Throwable { diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java index 914cf9a2998b..b5fadb731fbe 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java @@ -16,6 +16,7 @@ package com.intellij.openapi.vfs; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class VfsUtilCore { /** @@ -37,4 +38,46 @@ public class VfsUtilCore { parent = parent.getParent(); } } + + /** + * Gets the relative path of file to its ancestor. Uses separator for + * separating files. + * + * @param file the file + * @param ancestor parent file + * @param separator character to use as files separator + * @return the relative path or {@code null} if {@code ancestor} is not ancestor for {@code file} + */ + @Nullable + public static String getRelativePath(@NotNull VirtualFile file, @NotNull VirtualFile ancestor, char separator) { + if (!file.getFileSystem().equals(ancestor.getFileSystem())) return null; + + int length = 0; + VirtualFile parent = file; + while (true) { + if (parent == null) return null; + if (parent.equals(ancestor)) break; + if (length > 0) { + length++; + } + length += parent.getName().length(); + parent = parent.getParent(); + } + + char[] chars = new char[length]; + int index = chars.length; + parent = file; + while (true) { + if (parent.equals(ancestor)) break; + if (index < length) { + chars[--index] = separator; + } + String name = parent.getName(); + for (int i = name.length() - 1; i >= 0; i--) { + chars[--index] = name.charAt(i); + } + parent = parent.getParent(); + } + return new String(chars); + } } diff --git a/platform/lang-api/src/com/intellij/openapi/roots/ui/util/OrderEntryCellAppearanceUtils.java b/platform/lang-api/src/com/intellij/openapi/roots/ui/util/OrderEntryCellAppearanceUtils.java index ebafb3a04e29..d318c87f7c0c 100644 --- a/platform/lang-api/src/com/intellij/openapi/roots/ui/util/OrderEntryCellAppearanceUtils.java +++ b/platform/lang-api/src/com/intellij/openapi/roots/ui/util/OrderEntryCellAppearanceUtils.java @@ -26,10 +26,7 @@ import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.ui.LightFilePointer; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.JarFileSystem; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.*; import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.PathUtil; import com.intellij.util.PlatformIcons; @@ -179,7 +176,7 @@ public class OrderEntryCellAppearanceUtils { relativePath = absolutePath.startsWith(contentPath) ? absolutePath.substring(contentPath.length()) : absolutePath; } else { - relativePath = VfsUtil.getRelativePath(folderFile.getFile(), file, File.separatorChar); + relativePath = VfsUtilCore.getRelativePath(folderFile.getFile(), file, File.separatorChar); textAttributes = SimpleTextAttributes.REGULAR_ATTRIBUTES; } if (relativePath == null) relativePath = ""; diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java index 7d618bcb8cc8..42e91eb9c034 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java @@ -29,6 +29,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NonNls; @@ -188,13 +189,13 @@ public class FilePatternPackageSet extends PatternBasedPackageSet { VirtualFile projectBaseDir) { final VirtualFile contentRootForFile = index.getContentRootForFile(virtualFile); if (contentRootForFile != null) { - return VfsUtil.getRelativePath(virtualFile, contentRootForFile, '/'); + return VfsUtilCore.getRelativePath(virtualFile, contentRootForFile, '/'); } final Module module = index.getModuleForFile(virtualFile); if (module != null) { if (projectBaseDir != null) { if (VfsUtil.isAncestor(projectBaseDir, virtualFile, false)){ - final String projectRelativePath = VfsUtil.getRelativePath(virtualFile, projectBaseDir, '/'); + final String projectRelativePath = VfsUtilCore.getRelativePath(virtualFile, projectBaseDir, '/'); return useFQName ? projectRelativePath : projectRelativePath.substring(projectRelativePath.indexOf('/') + 1); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileIncludeContextHectorPanel.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileIncludeContextHectorPanel.java index 2ecca2581a27..b94df9eafd43 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileIncludeContextHectorPanel.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/FileIncludeContextHectorPanel.java @@ -20,7 +20,7 @@ import com.intellij.openapi.editor.HectorComponentPanel; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.include.FileIncludeManager; @@ -105,7 +105,7 @@ public class FileIncludeContextHectorPanel extends HectorComponentPanel { root = fileIndex.getContentRootForFile(file); } if (root != null) { - return VfsUtil.getRelativePath(file, root, '/'); + return VfsUtilCore.getRelativePath(file, root, '/'); } } return null; diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworkNode.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworkNode.java index aaa5866c55ee..f6fb05ec9103 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworkNode.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworkNode.java @@ -19,7 +19,7 @@ import com.intellij.framework.detection.DetectedFrameworkDescription; import com.intellij.framework.detection.DetectionExcludesConfiguration; import com.intellij.framework.detection.FrameworkDetectionContext; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ColoredTreeCellRenderer; import com.intellij.ui.SimpleTextAttributes; @@ -97,7 +97,7 @@ class DetectedFrameworkNode extends DetectedFrameworkTreeNodeBase { private String getRelativePath(@NotNull VirtualFile file) { final VirtualFile dir = myContext.getBaseDir(); if (dir != null) { - final String path = VfsUtil.getRelativePath(dir, file, File.separatorChar); + final String path = VfsUtilCore.getRelativePath(dir, file, File.separatorChar); if (path != null) { return path; } diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/FrameworkDirectoryNode.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/FrameworkDirectoryNode.java index aedf1ccb83d0..4d26b019373c 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/FrameworkDirectoryNode.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/FrameworkDirectoryNode.java @@ -17,7 +17,7 @@ package com.intellij.framework.detection.impl.ui; import com.intellij.framework.detection.DetectionExcludesConfiguration; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ColoredTreeCellRenderer; import com.intellij.util.PlatformIcons; @@ -48,7 +48,7 @@ class FrameworkDirectoryNode extends DetectedFrameworkTreeNodeBase { String path; if (parent instanceof FrameworkDirectoryNode) { final VirtualFile parentDir = ((FrameworkDirectoryNode)parent).myDirectory; - path = VfsUtil.getRelativePath(myDirectory, parentDir, File.separatorChar); + path = VfsUtilCore.getRelativePath(myDirectory, parentDir, File.separatorChar); LOG.assertTrue(path != null, myDirectory + " is not under " + parentDir); } else { diff --git a/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java b/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java index 3b21a9616f16..ce1af63e43ae 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java @@ -29,6 +29,7 @@ import com.intellij.openapi.roots.ex.ProjectRootManagerEx; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NonNls; @@ -61,7 +62,7 @@ public class PatchProjectUtil { final Set included = new HashSet(); iterate(contentRoot, new ContentIterator() { public boolean processFile(final VirtualFile fileOrDir) { - String relativeName = VfsUtil.getRelativePath(fileOrDir, contentRoot, '/'); + String relativeName = VfsUtilCore.getRelativePath(fileOrDir, contentRoot, '/'); for (Pattern module : excludePatterns.keySet()) { if (module == null || module.matcher(modules[idx].getName()).matches()) { final Set dirPatterns = excludePatterns.get(module); diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentRootPanel.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentRootPanel.java index b1312ce9318d..c0c369de120c 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentRootPanel.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentRootPanel.java @@ -25,6 +25,7 @@ import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.ui.HoverHyperlinkLabel; @@ -215,7 +216,7 @@ public abstract class ContentRootPanel extends JPanel { final VirtualFile contentEntryFile = getContentEntry().getFile(); final String packagePrefix = folder instanceof SourceFolder? ((SourceFolder)folder).getPackagePrefix() : ""; if (folderFile != null && contentEntryFile != null) { - String path = folderFile.equals(contentEntryFile)? "." :VfsUtil.getRelativePath(folderFile, contentEntryFile, File.separatorChar); + String path = folderFile.equals(contentEntryFile)? "." : VfsUtilCore.getRelativePath(folderFile, contentEntryFile, File.separatorChar); if (packagePrefix.length() > 0) { path = path + " (" + packagePrefix + ")"; } diff --git a/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleVcsPathPresenter.java b/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleVcsPathPresenter.java index f896114b234d..0b1cda9c553d 100644 --- a/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleVcsPathPresenter.java +++ b/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleVcsPathPresenter.java @@ -26,7 +26,7 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.vcs.FilePath; import com.intellij.openapi.vcs.changes.ContentRevision; import com.intellij.openapi.vcs.changes.patch.RelativePathCalculator; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -56,7 +56,7 @@ public class ModuleVcsPathPresenter extends VcsPathPresenter { result.append(module.getName()); result.append("] "); result.append(contentRoot.getName()); - String relativePath = VfsUtil.getRelativePath(file, contentRoot, File.separatorChar); + String relativePath = VfsUtilCore.getRelativePath(file, contentRoot, File.separatorChar); if (relativePath.length() > 0) { result.append(File.separatorChar); result.append(relativePath); diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java index d48cdc176d67..ebe65aadcd1a 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java @@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; @@ -66,13 +67,13 @@ public class DirectoryNode extends PackageDependenciesNode { else { final VirtualFile sourceRoot = index.getSourceRootForFile(myVDirectory); if (myVDirectory == sourceRoot) { - myFQName = VfsUtil.getRelativePath(myVDirectory, contentRoot, '/'); + myFQName = VfsUtilCore.getRelativePath(myVDirectory, contentRoot, '/'); } else if (sourceRoot != null) { - myFQName = VfsUtil.getRelativePath(myVDirectory, sourceRoot, '/'); + myFQName = VfsUtilCore.getRelativePath(myVDirectory, sourceRoot, '/'); } else { - myFQName = VfsUtil.getRelativePath(myVDirectory, contentRoot, '/'); + myFQName = VfsUtilCore.getRelativePath(myVDirectory, contentRoot, '/'); } } @@ -97,7 +98,7 @@ public class DirectoryNode extends PackageDependenciesNode { if (baseDir != null) { if (myVDirectory != baseDir) { if (VfsUtil.isAncestor(baseDir, myVDirectory, false)) { - return VfsUtil.getRelativePath(myVDirectory, baseDir, '/'); + return VfsUtilCore.getRelativePath(myVDirectory, baseDir, '/'); } else { return myVDirectory.getPresentableUrl(); } @@ -145,7 +146,7 @@ public class DirectoryNode extends PackageDependenciesNode { if (contentRoot == null) { return ""; } - return VfsUtil.getRelativePath(directory, contentRoot, '/'); + return VfsUtilCore.getRelativePath(directory, contentRoot, '/'); } public PsiElement getPsiElement() { diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/ProjectPatternProvider.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/ProjectPatternProvider.java index 93d5084cfc4a..7c263449c640 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/ProjectPatternProvider.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/ProjectPatternProvider.java @@ -29,7 +29,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.IconLoader; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packageDependencies.DependencyUISettings; import com.intellij.psi.PsiFile; @@ -109,7 +109,7 @@ public class ProjectPatternProvider extends PatternDialectProvider { LOG.assertTrue(virtualFile != null); final VirtualFile contentRoot = ProjectRootManager.getInstance(file.getProject()).getFileIndex().getContentRootForFile(virtualFile); if (contentRoot == null) return null; - final String fqName = VfsUtil.getRelativePath(virtualFile, contentRoot, '/'); + final String fqName = VfsUtilCore.getRelativePath(virtualFile, contentRoot, '/'); if (fqName != null) return new FilePatternPackageSet(getModulePattern(node), fqName); } return null; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java index 43eaaafe6706..e2cec868744c 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java @@ -29,6 +29,7 @@ import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileSystem; import com.intellij.openapi.vfs.newvfs.NewVirtualFileSystem; @@ -458,7 +459,7 @@ public class FileReference implements FileReferenceOwner, PsiPolyVariantReferenc final VirtualFile contextFile = context.getVirtualFile(); assert contextFile != null; if (VfsUtil.isAncestor(contextFile, dstVFile, true)) { - final String path = VfsUtil.getRelativePath(dstVFile, contextFile, '/'); + final String path = VfsUtilCore.getRelativePath(dstVFile, contextFile, '/'); if (path != null) { return rename(path); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PsiFileReferenceHelper.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PsiFileReferenceHelper.java index 61163438ed1a..46a61c1229b7 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PsiFileReferenceHelper.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/PsiFileReferenceHelper.java @@ -23,7 +23,7 @@ import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.DirectoryIndex; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; @@ -69,7 +69,7 @@ public class PsiFileReferenceHelper extends FileReferenceHelper { assert parentFile != null; VirtualFile root = index.getSourceRootForFile(parentFile); if (root != null) { - String path = VfsUtil.getRelativePath(parentFile, root, '.'); + String path = VfsUtilCore.getRelativePath(parentFile, root, '.'); if (path != null) { final Module module = ModuleUtil.findModuleForFile(file, project); diff --git a/platform/lang-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java index 777d73ac6b90..697be80c58dd 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java @@ -24,7 +24,7 @@ import com.intellij.CommonBundle; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Ref; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -207,7 +207,7 @@ public class MoveDirectoryWithClassesProcessor extends BaseRefactoringProcessor PsiDirectory rootDirectory, @NotNull TargetDirectoryWrapper targetDirectory) { final PsiElement[] children = directory.getChildren(); - final String relativePath = VfsUtil.getRelativePath(directory.getVirtualFile(), rootDirectory.getVirtualFile(), '/'); + final String relativePath = VfsUtilCore.getRelativePath(directory.getVirtualFile(), rootDirectory.getVirtualFile(), '/'); final TargetDirectoryWrapper newTargetDirectory = relativePath.length() == 0 ? targetDirectory diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java b/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java index 15f10cb78acb..724a2f1340f3 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java @@ -60,48 +60,6 @@ public class VfsUtil extends VfsUtilCore { file.setBinaryContent(text.getBytes(charset.name())); } - /** - * Gets the relative path of file to its ancestor. Uses separator for - * separating files. - * - * @param file the file - * @param ancestor parent file - * @param separator character to use as files separator - * @return the relative path or {@code null} if {@code ancestor} is not ancestor for {@code file} - */ - @Nullable - public static String getRelativePath(@NotNull VirtualFile file, @NotNull VirtualFile ancestor, char separator) { - if (!file.getFileSystem().equals(ancestor.getFileSystem())) return null; - - int length = 0; - VirtualFile parent = file; - while (true) { - if (parent == null) return null; - if (parent.equals(ancestor)) break; - if (length > 0) { - length++; - } - length += parent.getName().length(); - parent = parent.getParent(); - } - - char[] chars = new char[length]; - int index = chars.length; - parent = file; - while (true) { - if (parent.equals(ancestor)) break; - if (index < length) { - chars[--index] = separator; - } - String name = parent.getName(); - for (int i = name.length() - 1; i >= 0; i--) { - chars[--index] = name.charAt(i); - } - parent = parent.getParent(); - } - return new String(chars); - } - /** * Copies all files matching the filter from fromDir to toDir. * diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java index 9d75a2a4fb1b..aef72482d57b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java @@ -27,6 +27,7 @@ import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Computable; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.psi.PsiDirectory; @@ -136,7 +137,7 @@ public class EmptyDirectoryInspection extends BaseGlobalInspection { }); for (VirtualFile otherRoot : contentRoots) { if (VfsUtil.isAncestor(otherRoot, file, false)) { - return VfsUtil.getRelativePath(file, otherRoot, '/'); + return VfsUtilCore.getRelativePath(file, otherRoot, '/'); } } return null; diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidIncludingCompiler.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidIncludingCompiler.java index 7f73ec38cfd9..8129f0a0d2e7 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidIncludingCompiler.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidIncludingCompiler.java @@ -26,7 +26,7 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.HashMap; import org.jetbrains.android.facet.AndroidFacet; @@ -51,7 +51,7 @@ public class AndroidIncludingCompiler implements SourceGeneratingCompiler { @Nullable @Override public VirtualFile getPresentableFile(CompileContext context, Module module, VirtualFile outputRoot, VirtualFile generatedFile) { - String generatedFileRelativePath = VfsUtil.getRelativePath(generatedFile, outputRoot, '/'); + String generatedFileRelativePath = VfsUtilCore.getRelativePath(generatedFile, outputRoot, '/'); if (generatedFileRelativePath == null) { return null; } @@ -118,7 +118,7 @@ public class AndroidIncludingCompiler implements SourceGeneratingCompiler { return true; } if (fileOrDir.getFileType() == StdFileTypes.JAVA) { - String relativePath = VfsUtil.getRelativePath(fileOrDir, sourceRoot, '/'); + String relativePath = VfsUtilCore.getRelativePath(fileOrDir, sourceRoot, '/'); LOG.assertTrue(relativePath != null); MyItem existingItem = relativePath2GenItem.get(relativePath); if (existingItem != null) { diff --git a/plugins/android/src/org/jetbrains/android/compiler/tools/AndroidApkBuilder.java b/plugins/android/src/org/jetbrains/android/compiler/tools/AndroidApkBuilder.java index 2c1a943e5e3f..37e350121842 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/tools/AndroidApkBuilder.java +++ b/plugins/android/src/org/jetbrains/android/compiler/tools/AndroidApkBuilder.java @@ -26,7 +26,7 @@ import com.intellij.openapi.compiler.CompilerMessageCategory; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.HashMap; import com.intellij.util.containers.HashSet; @@ -321,7 +321,7 @@ public class AndroidApkBuilder { ArrayList list = new ArrayList(); collectNativeLibraries(child, list, debugBuild); for (VirtualFile file : list) { - String relativePath = VfsUtil.getRelativePath(file, nativeLibsFolder, File.separatorChar); + String relativePath = VfsUtilCore.getRelativePath(file, nativeLibsFolder, File.separatorChar); String path = FileUtil.toSystemIndependentName(SdkConstants.FD_APK_NATIVE_LIBS + File.separator + relativePath); if (added.add(path)) { builder.writeFile(toIoFile(file), path); @@ -387,7 +387,7 @@ public class AndroidApkBuilder { SignedJarBuilder jarBuilder, Set added) throws IOException { for (VirtualFile child : resources) { - final String relativePath = FileUtil.toSystemIndependentName(VfsUtil.getRelativePath(child, sourceRoot, File.separatorChar)); + final String relativePath = FileUtil.toSystemIndependentName(VfsUtilCore.getRelativePath(child, sourceRoot, File.separatorChar)); if (!added.contains(relativePath)) { File file = toIoFile(child); jarBuilder.writeFile(file, FileUtil.toSystemIndependentName(relativePath)); diff --git a/plugins/android/src/org/jetbrains/android/maven/AndroidMavenProviderImpl.java b/plugins/android/src/org/jetbrains/android/maven/AndroidMavenProviderImpl.java index c06f68f88536..a395d3ff3de5 100644 --- a/plugins/android/src/org/jetbrains/android/maven/AndroidMavenProviderImpl.java +++ b/plugins/android/src/org/jetbrains/android/maven/AndroidMavenProviderImpl.java @@ -23,6 +23,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.facet.AndroidFacetConfiguration; @@ -117,7 +118,7 @@ public class AndroidMavenProviderImpl implements AndroidMavenProvider { ResourceProcessor processor) { final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); if (!fileIndex.isIgnored(file)) { - String relPath = VfsUtil.getRelativePath(file, sourceRoot, '/'); + String relPath = VfsUtilCore.getRelativePath(file, sourceRoot, '/'); if (relPath != null && MavenUtil.isIncluded(relPath, includes, excludes)) { if (processor.process(file, resOutputDir + "/" + relPath)) { return true; diff --git a/plugins/devkit/src/util/ChooseModulesDialog.java b/plugins/devkit/src/util/ChooseModulesDialog.java index d74072b1ccd0..48729d290c66 100644 --- a/plugins/devkit/src/util/ChooseModulesDialog.java +++ b/plugins/devkit/src/util/ChooseModulesDialog.java @@ -22,6 +22,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.MultiLineLabelUI; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.xml.XmlFile; import com.intellij.ui.ColoredListCellRenderer; @@ -188,7 +189,7 @@ public class ChooseModulesDialog extends DialogWrapper { assert virtualFile != null; final VirtualFile projectPath = myProject.getBaseDir(); if (VfsUtil.isAncestor(projectPath, virtualFile, false)) { - append(" (" + VfsUtil.getRelativePath(virtualFile, projectPath, File.separatorChar) + ")", SimpleTextAttributes.GRAYED_ATTRIBUTES); + append(" (" + VfsUtilCore.getRelativePath(virtualFile, projectPath, File.separatorChar) + ")", SimpleTextAttributes.GRAYED_ATTRIBUTES); } else { append(" (" + virtualFile.getPresentableUrl() + ")", SimpleTextAttributes.GRAYED_ATTRIBUTES); } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EJavadocUtil.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EJavadocUtil.java index 9c9e94bb7607..7c2ed305d567 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EJavadocUtil.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EJavadocUtil.java @@ -30,10 +30,7 @@ import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.JarFileSystem; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.*; import com.intellij.openapi.vfs.ex.http.HttpFileSystem; import org.jdom.Element; import org.jetbrains.annotations.Nullable; @@ -165,7 +162,7 @@ public class EJavadocUtil { if (javadocFile != null) { final String relativeUrl; if (contentRoot != null && VfsUtil.isAncestor(contentRoot, javadocFile, false)) { - relativeUrl = "/" + VfsUtil.getRelativePath(javadocFile, baseDir, '/'); + relativeUrl = "/" + VfsUtilCore.getRelativePath(javadocFile, baseDir, '/'); } else { relativeUrl = collapse2eclipseRelative2OtherModule(project, javadocFile); } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EPathUtil.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EPathUtil.java index 4c30592eb638..cc85061f92d6 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EPathUtil.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EPathUtil.java @@ -31,10 +31,7 @@ import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.ProjectRootManagerImpl; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.JarFileSystem; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.eclipse.EclipseXml; @@ -192,7 +189,7 @@ public class EPathUtil { final VirtualFile[] contentRoots = ModuleRootManager.getInstance(module).getContentRoots(); for (VirtualFile otherRoot : contentRoots) { if (VfsUtil.isAncestor(otherRoot, file, false)) { - return "/" + module.getName() + "/" + VfsUtil.getRelativePath(file, otherRoot, '/'); + return "/" + module.getName() + "/" + VfsUtilCore.getRelativePath(file, otherRoot, '/'); } } return null; @@ -220,7 +217,7 @@ public class EPathUtil { } LOG.assertTrue(file != null, url); if (contentRoot != null && VfsUtil.isAncestor(contentRoot, file, false)) { //inside current project - return VfsUtil.getRelativePath(file, contentRoot, '/'); + return VfsUtilCore.getRelativePath(file, contentRoot, '/'); } else { final String path = collapse2eclipseRelative2OtherModule(project, file); //relative to other project if (path != null) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveScriptTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveScriptTest.java index e9c9292b763c..383cff2c6835 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveScriptTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveScriptTest.java @@ -105,7 +105,7 @@ public class GroovyMoveScriptTest extends LightCodeInsightFixtureTestCase { String testName = getTestName(true); final VirtualFile actualRoot = myFixture.copyDirectoryToProject(testName + "/before", ""); - performAction(fileNames, newDirName, VfsUtil.getRelativePath(actualRoot, myFixture.getTempDirFixture().getFile(""), '/')); + performAction(fileNames, newDirName, VfsUtilCore.getRelativePath(actualRoot, myFixture.getTempDirFixture().getFile(""), '/')); final VirtualFile expectedRoot = LocalFileSystem.getInstance().findFileByPath(getTestDataPath() + getTestName(true) + "/after"); //File expectedRoot = new File(getTestDataPath() + testName + "/after"); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java index f9f95d3aaf44..84cae7342a5d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java @@ -34,6 +34,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.text.CaseInsensitiveStringHashingStrategy; @@ -308,7 +309,7 @@ public class MavenResourceCompiler implements ClassPostProcessingCompiler { indicator); } else { - String relPath = VfsUtil.getRelativePath(eachSourceFile, sourceRoot, '/'); + String relPath = VfsUtilCore.getRelativePath(eachSourceFile, sourceRoot, '/'); if (fileIndex.isIgnored(eachSourceFile)) continue; if (!MavenUtil.isIncluded(relPath, includes, excludes)) continue; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java index 12273b323d99..e38981093af8 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java @@ -23,7 +23,7 @@ package org.jetbrains.idea.maven.wizards; import com.intellij.ide.util.projectWizard.ModuleWizardStep; import com.intellij.ide.util.projectWizard.ProjectWizardStepFactory; import com.intellij.ide.util.projectWizard.WizardContext; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.projectImport.ProjectImportProvider; import com.intellij.projectImport.SelectImportedProjectsStep; @@ -45,7 +45,7 @@ public class MavenProjectImportProvider extends ProjectImportProvider { stringBuilder.append(project.getMavenId()); VirtualFile root = ((MavenProjectBuilder)getBuilder()).getRootDirectory(); if (root != null) { - final String relPath = VfsUtil.getRelativePath(project.getDirectoryFile(), root, File.separatorChar); + final String relPath = VfsUtilCore.getRelativePath(project.getDirectoryFile(), root, File.separatorChar); if (relPath.length() != 0) { stringBuilder.append(" [").append(relPath).append("]"); }