diff options
author | Tor Norbye <tnorbye@google.com> | 2013-07-08 11:26:24 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-07-08 11:26:24 -0700 |
commit | c1ace1f7e1e49c81bb4b75377c99f07be340abfe (patch) | |
tree | 9d0db96bd3d86ddfec80e7e3554cad9dcc066553 /plugins/eclipse | |
parent | c6218e46d5d2017e987ecdbd99b318a95c42abc0 (diff) | |
download | idea-c1ace1f7e1e49c81bb4b75377c99f07be340abfe.tar.gz |
Snapshot aea001abfc1b38fec3a821bcd5174cc77dc75787 from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: Icdea2a2bd7ad43b4d05967b1f0479db3bda1c93c
Diffstat (limited to 'plugins/eclipse')
3 files changed, 30 insertions, 7 deletions
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 9dcbeede2a30..c5a23e1b1d43 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EPathUtil.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EPathUtil.java @@ -90,9 +90,21 @@ public class EPathUtil { /** * @return url */ - static String expandEclipsePath2Url(final String path, ModifiableRootModel model, final List<String> currentRoots) { + static String expandEclipsePath2Url(final String path, + final ModifiableRootModel model, + final List<String> currentRoots) { final VirtualFile contentRoot = getContentRoot(model); LOG.assertTrue(contentRoot != null); + return expandEclipsePath2Url(path, model, currentRoots, contentRoot); + } + + /** + * @return url + */ + static String expandEclipsePath2Url(final String path, + final ModifiableRootModel model, + final List<String> currentRoots, + @NotNull final VirtualFile contentRoot) { final String rootPath = contentRoot.getPath(); String url = null; if (new File(path).exists()) { //absolute path @@ -209,6 +221,12 @@ public class EPathUtil { return url.substring(projectUrl.length()); //leading / } + final String path = VfsUtilCore.urlToPath(url); + final String projectPath = projectBaseDir.getPath(); + if (path.startsWith(projectPath)) { + return ProjectRootManagerImpl.extractLocalPath(path.substring(projectPath.length())); + } + return ProjectRootManagerImpl.extractLocalPath(url); } } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java index 951d161f9354..ce34809a5305 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java @@ -125,6 +125,10 @@ public class EclipseClasspathReader extends AbstractEclipseClasspathReader<Modif @Override protected String expandEclipsePath2Url(ModifiableRootModel rootModel, String path) { + final VirtualFile contentRoot = myContentEntry.getFile(); + if (contentRoot != null) { + return EPathUtil.expandEclipsePath2Url(path, rootModel, myCurrentRoots, contentRoot); + } return EPathUtil.expandEclipsePath2Url(path, rootModel, myCurrentRoots); } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/IdeaSpecificSettings.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/IdeaSpecificSettings.java index fa34a48a548d..ce03200ad98d 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/IdeaSpecificSettings.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/IdeaSpecificSettings.java @@ -25,12 +25,13 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.module.ModuleUtil; +import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.DirectoryIndexExcludePolicy; +import com.intellij.openapi.roots.impl.ProjectRootManagerImpl; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; import com.intellij.openapi.util.Comparing; @@ -39,7 +40,7 @@ import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.JarFileSystem; -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.openapi.vfs.pointers.VirtualFilePointer; @@ -320,7 +321,7 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl } } } - if (entryFile == null || excludeFile == null || VfsUtil.isAncestor(entryFile, excludeFile, false)) { + if (entryFile == null || excludeFile == null || VfsUtilCore.isAncestor(entryFile, excludeFile, false)) { Element element = new Element(IdeaXml.EXCLUDE_FOLDER_TAG); contentEntryElement.addContent(element); element.setAttribute(IdeaXml.URL_ATTR, exludeFolderUrl); @@ -453,13 +454,13 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl public static boolean appendModuleRelatedRoot(Element element, String classesUrl, final String rootName, ModuleRootModel model) { VirtualFile file = VirtualFileManager.getInstance().findFileByUrl(classesUrl); + final Project project = model.getModule().getProject(); if (file != null) { if (file.getFileSystem() instanceof JarFileSystem) { file = JarFileSystem.getInstance().getVirtualFileForJar(file); assert file != null; } - final Project project = model.getModule().getProject(); - final Module module = ModuleUtil.findModuleForFile(file, project); + final Module module = ModuleUtilCore.findModuleForFile(file, project); if (module != null) { return appendRelatedToModule(element, classesUrl, rootName, file, module); } else if (ProjectRootManager.getInstance(project).getFileIndex().isIgnored(file)) { @@ -474,7 +475,7 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl private static boolean appendRelatedToModule(Element element, String classesUrl, String rootName, VirtualFile file, Module module) { final VirtualFile[] contentRoots = ModuleRootManager.getInstance(module).getContentRoots(); for (VirtualFile contentRoot : contentRoots) { - if (VfsUtil.isAncestor(contentRoot, file, false)) { + if (VfsUtilCore.isAncestor(contentRoot, file, false)) { final Element clsElement = new Element(rootName); clsElement.setAttribute(PROJECT_RELATED, PathMacroManager.getInstance(module.getProject()).collapsePath(classesUrl)); element.addContent(clsElement); |