[vfs] reducing the number of find-local-by-entry API calls

This commit is contained in:
Roman Shevchenko
2017-08-21 19:11:13 +02:00
parent ecd27b5418
commit 1cb16f2614
24 changed files with 134 additions and 131 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,8 +36,6 @@ import com.intellij.packaging.impl.elements.ManifestFileUtil;
import com.intellij.packaging.impl.elements.ProductionModuleOutputElementType;
import com.intellij.packaging.impl.elements.TestModuleOutputElementType;
import com.intellij.util.CommonProcessors;
import com.intellij.util.PathUtil;
import com.intellij.util.Processor;
import gnu.trove.THashSet;
import org.jetbrains.annotations.Nullable;
@@ -153,7 +151,7 @@ public class JarFromModulesTemplate extends ArtifactTemplate {
archive.addOrFindChild(factory.createDirectoryCopyWithParentDirectories(classesRoot.getPath(), "/"));
}
else {
final PackagingElement<?> child = factory.createFileCopyWithParentDirectories(PathUtil.getLocalFile(classesRoot).getPath(), "/");
final PackagingElement<?> child = factory.createFileCopyWithParentDirectories(VfsUtil.getLocalFile(classesRoot).getPath(), "/");
root.addOrFindChild(child);
classpath.addAll(ManifestFileUtil.getClasspathForElements(Collections.singletonList(child), myContext, PlainArtifactType.getInstance()));
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,12 +24,12 @@ import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.elements.PackagingElement;
import com.intellij.project.IntelliJProjectConfiguration;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.util.PathUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -88,7 +88,7 @@ public abstract class PackagingElementsTestCase extends ArtifactsTestCase {
}
protected static String getLocalJarPath(VirtualFile jarEntry) {
return PathUtil.getLocalFile(jarEntry).getPath();
return VfsUtil.getLocalFile(jarEntry).getPath();
}
protected Library addProjectLibrary(final @Nullable Module module, final String name, final VirtualFile... jars) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -44,6 +44,7 @@ import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.Comparing;
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.pom.java.LanguageLevel;
@@ -53,7 +54,6 @@ import com.intellij.psi.impl.compiled.ClsParsingUtil;
import com.intellij.ui.EditorNotificationPanel;
import com.intellij.ui.EditorNotifications;
import com.intellij.ui.GuiUtils;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashMap;
import org.jetbrains.annotations.NotNull;
@@ -294,7 +294,7 @@ public class AttachSourcesNotificationProvider extends EditorNotifications.Provi
descriptor.setDescription(ProjectBundle.message("library.attach.sources.description"));
Library firstLibrary = libraries.get(0).getLibrary();
VirtualFile[] roots = firstLibrary != null ? firstLibrary.getFiles(OrderRootType.CLASSES) : VirtualFile.EMPTY_ARRAY;
VirtualFile[] candidates = FileChooser.chooseFiles(descriptor, myProject, roots.length == 0 ? null : PathUtil.getLocalFile(roots[0]));
VirtualFile[] candidates = FileChooser.chooseFiles(descriptor, myProject, roots.length == 0 ? null : VfsUtil.getLocalFile(roots[0]));
if (candidates.length == 0) return ActionCallback.REJECTED;
VirtualFile[] files = LibrarySourceRootDetectorUtil.scanAndSelectDetectedJavaSourceRoots(myParentComponent, candidates);
if (files.length == 0) return ActionCallback.REJECTED;

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -53,7 +53,7 @@ public abstract class AbstractAttachSourceProvider implements AttachSourcesProvi
if (entry != null) {
VirtualFileSystem fs = entry.getFileSystem();
if (fs instanceof JarFileSystem) {
return ((JarFileSystem)fs).getLocalVirtualFileFor(entry);
return ((JarFileSystem)fs).getLocalByEntry(entry);
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -39,9 +39,9 @@ import com.intellij.openapi.util.io.FileUtilRt;
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.openapi.vfs.newvfs.ArchiveFileSystem;
import com.intellij.util.PathUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -95,7 +95,7 @@ public abstract class ChangeLibraryLevelActionBase extends AnAction {
for (OrderRootType type : OrderRootType.getAllTypes()) {
for (VirtualFile root : library.getFiles(type)) {
if (root.isInLocalFileSystem() || root.getFileSystem() instanceof ArchiveFileSystem) {
fileToCopy.add(VfsUtil.virtualToIoFile(PathUtil.getLocalFile(root)));
fileToCopy.add(VfsUtilCore.virtualToIoFile(VfsUtil.getLocalFile(root)));
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,10 +21,9 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.ui.CellAppearanceEx;
import com.intellij.openapi.roots.ui.OrderEntryAppearanceService;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.util.PathUtil;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -468,7 +467,7 @@ public class ModuleDependenciesAnalyzer {
public VirtualFile getLocalFile() {
VirtualFile file = VirtualFileManager.getInstance().findFileByUrl(myUrl);
if (file != null) {
file = PathUtil.getLocalFile(file);
file = VfsUtil.getLocalFile(file);
}
return file;
}

View File

@@ -43,10 +43,7 @@ import com.intellij.openapi.ui.ex.MultiLineLabel;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.vfs.*;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.AnActionButton;
import com.intellij.ui.AnActionButtonRunnable;
@@ -55,7 +52,6 @@ import com.intellij.ui.border.CustomLineBorder;
import com.intellij.ui.treeStructure.Tree;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IconUtil;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.FilteringIterator;
import com.intellij.util.containers.HashSet;
@@ -534,7 +530,7 @@ public class LibraryRootsComponent implements Disposable, LibraryEditorComponent
VirtualFile[] files = getLibraryEditor().getFiles(type);
for (VirtualFile file : files) {
if (!VfsUtilCore.isUnder(file, excludedRoots)) {
roots.add(PathUtil.getLocalFile(file));
roots.add(VfsUtil.getLocalFile(file));
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
package com.intellij.internal.statistic.libraryJar;
import com.intellij.internal.statistic.AbstractProjectsUsagesCollector;
import com.intellij.internal.statistic.CollectUsagesException;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.application.ApplicationManager;
@@ -49,9 +48,9 @@ public class LibraryJarUsagesCollector extends AbstractProjectsUsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getProjectUsages(@NotNull final Project project) throws CollectUsagesException {
final LibraryJarDescriptor[] descriptors = LibraryJarStatisticsService.getInstance().getTechnologyDescriptors();
final Set<UsageDescriptor> result = new HashSet<>(descriptors.length);
public Set<UsageDescriptor> getProjectUsages(@NotNull Project project) {
LibraryJarDescriptor[] descriptors = LibraryJarStatisticsService.getInstance().getTechnologyDescriptors();
Set<UsageDescriptor> result = new HashSet<>(descriptors.length);
ApplicationManager.getApplication().runReadAction(() -> {
for (LibraryJarDescriptor descriptor : descriptors) {
@@ -60,25 +59,20 @@ public class LibraryJarUsagesCollector extends AbstractProjectsUsagesCollector {
PsiClass[] psiClasses = JavaPsiFacade.getInstance(project).findClasses(className, ProjectScope.getLibrariesScope(project));
for (PsiClass psiClass : psiClasses) {
if (psiClass == null) continue;
VirtualFile jarFile = JarFileSystem.getInstance().getLocalVirtualFileFor(psiClass.getContainingFile().getVirtualFile());
if (jarFile == null) continue;
String version = getVersionByJarManifest(jarFile);
if (version == null) {
version = getVersionByJarFileName(jarFile.getName());
VirtualFile jarFile = JarFileSystem.getInstance().getVirtualFileForJar(psiClass.getContainingFile().getVirtualFile());
if (jarFile != null) {
String version = getVersionByJarManifest(jarFile);
if (version == null) {
version = getVersionByJarFileName(jarFile.getName());
}
if (version != null && StringUtil.containsChar(version, '.')) {
result.add(new UsageDescriptor(descriptor.myName + "_" + version, 1));
}
}
if (version == null ||
!StringUtil.containsChar(version, '.')) {
continue;
}
result.add(new UsageDescriptor(descriptor.myName + "_" + version, 1));
}
}
});
return result;
}
@@ -100,4 +94,4 @@ public class LibraryJarUsagesCollector extends AbstractProjectsUsagesCollector {
public GroupDescriptor getGroupId() {
return GROUP;
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,15 +24,14 @@ import java.util.Collection;
import java.util.Collections;
public class ClsElementWritingAccessProvider extends WritingAccessProvider {
@NotNull
@Override
public Collection<VirtualFile> requestWriting(final VirtualFile... files) {
public Collection<VirtualFile> requestWriting(VirtualFile... files) {
return Collections.emptyList();
}
@Override
public boolean isPotentiallyWritable(@NotNull final VirtualFile file) {
return JarFileSystem.getInstance().getLocalVirtualFileFor(file) == null;
public boolean isPotentiallyWritable(@NotNull VirtualFile file) {
return JarFileSystem.getInstance().getLocalByEntry(file) == null;
}
}
}

View File

@@ -24,6 +24,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileProvider;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.vfs.VirtualFileSystem;
import com.intellij.util.io.URLUtil;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
@@ -53,20 +54,6 @@ public class PathUtil {
return FileUtil.toSystemDependentName(StringUtil.trimEnd(path, URLUtil.JAR_SEPARATOR));
}
@NotNull
public static VirtualFile getLocalFile(@NotNull VirtualFile file) {
if (!file.isValid()) {
return file;
}
if (file.getFileSystem() instanceof LocalFileProvider) {
final VirtualFile localFile = ((LocalFileProvider)file.getFileSystem()).getLocalVirtualFileFor(file);
if (localFile != null) {
return localFile;
}
}
return file;
}
@NotNull
public static String getJarPathForClass(@NotNull Class aClass) {
final String pathForClass = PathManager.getJarPathForClass(aClass);
@@ -173,4 +160,22 @@ public class PathUtil {
public static String makeFileName(@NotNull String name, @Nullable String extension) {
return StringUtil.isEmpty(extension) ? name : name + '.' + extension;
}
//<editor-fold desc="Deprecated stuff.">
/** @deprecated use {@code VfsUtil.getLocalFile(file)} instead (to be removed in IDEA 2019) */
@NotNull
public static VirtualFile getLocalFile(@NotNull VirtualFile file) {
if (file.isValid()) {
VirtualFileSystem fileSystem = file.getFileSystem();
if (fileSystem instanceof LocalFileProvider) {
VirtualFile localFile = ((LocalFileProvider)fileSystem).getLocalVirtualFileFor(file);
if (localFile != null) {
return localFile;
}
}
}
return file;
}
//</editor-fold>
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,12 +23,12 @@ import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PsiFileSystemItemProcessor;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.PathUtil;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -170,11 +170,9 @@ public class DefaultNavBarExtension extends AbstractNavBarModelExtension {
else if (psiElement instanceof PsiDirectory) {
PsiDirectory psiDirectory = (PsiDirectory)psiElement;
Project project = psiElement.getProject();
PsiDirectory parentDirectory = psiDirectory.getParentDirectory();
if (parentDirectory == null) {
VirtualFile jar = PathUtil.getLocalFile(psiDirectory.getVirtualFile());
VirtualFile jar = VfsUtil.getLocalFile(psiDirectory.getVirtualFile());
if (ProjectRootManager.getInstance(project).getFileIndex().isInContent(jar)) {
parentDirectory = PsiManager.getInstance(project).findDirectory(jar.getParent());
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,10 +31,10 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.intellij.util.PathUtil;
import com.intellij.util.PlatformIcons;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
@@ -122,15 +122,14 @@ public class ExternalLibrariesNode extends ProjectViewNode<String> {
private static boolean hasExternalEntries(ProjectFileIndex index, LibraryOrderEntry orderEntry) {
for (VirtualFile file : LibraryGroupNode.getLibraryRoots(orderEntry)) {
if (!index.isInContent(PathUtil.getLocalFile(file))) return true;
if (!index.isInContent(VfsUtil.getLocalFile(file))) return true;
}
return false;
}
@Override
protected void update(PresentationData presentation) {
presentation.setPresentableText(IdeBundle.message("node.projectview.external.libraries"));
presentation.setIcon(PlatformIcons.LIBRARY_ICON);
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,6 +37,7 @@ import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.registry.Registry;
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.pom.NavigatableWithText;
@@ -47,7 +48,6 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.file.PsiDirectoryFactory;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.util.IconUtil;
import com.intellij.util.PathUtil;
import com.intellij.util.PlatformUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -113,8 +113,8 @@ public class PsiDirectoryNode extends BasePsiNode<PsiDirectory> implements Navig
}
boolean shouldShowUrl = parentValue instanceof Module || parentValue instanceof Project;
data.setLocationString(ProjectViewDirectoryHelper.getInstance(project).getLocationString(psiDirectory,
shouldShowUrl,
data.setLocationString(ProjectViewDirectoryHelper.getInstance(project).getLocationString(psiDirectory,
shouldShowUrl,
shouldShowSourcesRoot()));
setupIcon(data, psiDirectory);
@@ -201,7 +201,7 @@ public class PsiDirectoryNode extends BasePsiNode<PsiDirectory> implements Navig
VirtualFile directory = value.getVirtualFile();
if (directory.getFileSystem() instanceof LocalFileSystem) {
file = PathUtil.getLocalFile(file);
file = VfsUtil.getLocalFile(file);
}
if (!VfsUtilCore.isAncestor(directory, file, false)) {

View File

@@ -33,12 +33,12 @@ import com.intellij.openapi.util.Iconable;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VFileProperty;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.NavigatableWithText;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -207,6 +207,6 @@ public class PsiFileNode extends BasePsiNode<PsiFile> implements NavigatableWith
@Override
public boolean contains(@NotNull VirtualFile file) {
return super.contains(file) || isArchive() && Comparing.equal(PathUtil.getLocalFile(file), getVirtualFile());
return super.contains(file) || isArchive() && Comparing.equal(VfsUtil.getLocalFile(file), getVirtualFile());
}
}
}

View File

@@ -25,6 +25,7 @@ import com.intellij.openapi.util.Condition;
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.newvfs.ArchiveFileSystem;
import com.intellij.openapi.vfs.newvfs.NewVirtualFile;
import com.intellij.util.*;
import com.intellij.util.containers.ContainerUtil;
@@ -559,6 +560,20 @@ public class VfsUtil extends VfsUtilCore {
return file;
}
@NotNull
public static VirtualFile getLocalFile(@NotNull VirtualFile file) {
if (file.isValid()) {
VirtualFileSystem fileSystem = file.getFileSystem();
if (fileSystem instanceof ArchiveFileSystem) {
VirtualFile localFile = ((ArchiveFileSystem)fileSystem).getLocalByEntry(file);
if (localFile != null) {
return localFile;
}
}
}
return file;
}
//<editor-fold desc="Deprecated stuff.">
/** @deprecated to be removed in IDEA 2018 */
public static void copyFromResource(@NotNull VirtualFile file, @NonNls @NotNull String resourceUrl) throws IOException {

View File

@@ -37,9 +37,9 @@ import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.UserDataHolderBase;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import org.gradle.initialization.BuildLayoutParameters;
import org.jetbrains.annotations.NotNull;
@@ -152,7 +152,7 @@ public class GradleAttachSourcesProvider implements AttachSourcesProvider {
@NotNull
private static File getSourceFile(String artifactCoordinates, VirtualFile classesFile, Project project) {
LibraryData data = new LibraryData(GradleConstants.SYSTEM_ID, artifactCoordinates);
data.addPath(LibraryPathType.BINARY, PathUtil.getLocalFile(classesFile).getPath());
data.addPath(LibraryPathType.BINARY, VfsUtil.getLocalFile(classesFile).getPath());
String serviceDirectory = GradleSettings.getInstance(project).getServiceDirectoryPath();
File gradleUserHome =
serviceDirectory != null ? new File(serviceDirectory) : new BuildLayoutParameters().getGradleUserHomeDir();

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,9 +26,9 @@ import com.intellij.openapi.roots.libraries.LibraryTable;
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileProvider;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileSystem;
import com.intellij.openapi.vfs.newvfs.ArchiveFileSystem;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.GlobalSearchScope;
@@ -125,10 +125,15 @@ public class LibrariesUtil {
}
private static VirtualFile getLocalFor(VirtualFile virtualFile) {
VirtualFileSystem fileSystem = virtualFile == null ? null : virtualFile.getFileSystem();
return fileSystem instanceof LocalFileProvider ? ((LocalFileProvider)fileSystem).getLocalVirtualFileFor(virtualFile) : null;
}
if (virtualFile != null) {
VirtualFileSystem fileSystem = virtualFile.getFileSystem();
if (fileSystem instanceof ArchiveFileSystem) {
return ((ArchiveFileSystem)fileSystem).getLocalByEntry(virtualFile);
}
}
return null;
}
@Nullable
public static String getGroovyHomePath(@NotNull Module module) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,12 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.plugins.groovy.util;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.StandardFileSystems;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiManager;
@@ -79,21 +79,17 @@ public abstract class SdkHomeSettings implements PersistentStateComponent<SdkHom
}
private static List<VirtualFile> calcRoots(@Nullable VirtualFile home) {
if (home == null) {
return Collections.emptyList();
}
if (home == null) return Collections.emptyList();
final VirtualFile lib = home.findChild("lib");
if (lib == null) {
return Collections.emptyList();
}
VirtualFile lib = home.findChild("lib");
if (lib == null) return Collections.emptyList();
List<VirtualFile> result = new ArrayList<>();
for (VirtualFile file : lib.getChildren()) {
if ("jar".equals(file.getExtension())) {
ContainerUtil.addIfNotNull(result, StandardFileSystems.getJarRootForLocalFile(file));
ContainerUtil.addIfNotNull(result, JarFileSystem.getInstance().getRootByLocal(file));
}
}
return result;
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,17 +26,15 @@ import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.ClassLoaderUtil;
import com.intellij.openapi.util.Key;
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.*;
import com.intellij.psi.impl.light.LightMethodBuilder;
import com.intellij.psi.util.*;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.lang.UrlClassLoader;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames;
@@ -57,7 +55,6 @@ public class AntTasksProvider {
private static final Object ourLock = new Object();
public static final ParameterizedCachedValueProvider<Map<List<URL>,AntClassLoader>,Project> PROVIDER =
new ParameterizedCachedValueProvider<Map<List<URL>, AntClassLoader>, Project>() {
@Nullable
@Override
public CachedValueProvider.Result<Map<List<URL>, AntClassLoader>> compute(Project project) {
final Map<List<URL>, AntClassLoader> map = ContainerUtil.createSoftValueMap();
@@ -67,8 +64,7 @@ public class AntTasksProvider {
public static final Key<ParameterizedCachedValue<Map<List<URL>,AntClassLoader>,Project>> KEY =
Key.create("ANtClassLoader");
private AntTasksProvider() {
}
private AntTasksProvider() { }
public static Set<LightMethodBuilder> getAntTasks(PsiElement place) {
final PsiFile file = place.getContainingFile();
@@ -108,8 +104,8 @@ public class AntTasksProvider {
final ArrayList<URL> urls = new ArrayList<>();
for (VirtualFile jar : jars) {
VirtualFile localFile = PathUtil.getLocalFile(jar);
if (localFile.getFileSystem() instanceof LocalFileSystem) {
VirtualFile localFile = VfsUtil.getLocalFile(jar);
if (localFile.isInLocalFileSystem()) {
urls.add(VfsUtilCore.convertToURL(localFile.getUrl()));
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -52,7 +52,6 @@ import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.PathUtil;
import com.intellij.util.PathsList;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
@@ -243,23 +242,23 @@ public abstract class MvcFramework {
final List<File> toExclude = new ArrayList<>();
VirtualFile sdkRoot = getSdkRoot(module);
if (sdkRoot != null) toExclude.add(VfsUtil.virtualToIoFile(sdkRoot));
if (sdkRoot != null) toExclude.add(VfsUtilCore.virtualToIoFile(sdkRoot));
ContainerUtil.addIfNotNull(toExclude, getCommonPluginsDir(module));
final VirtualFile appRoot = findAppRoot(module);
if (appRoot != null) {
VirtualFile pluginDir = appRoot.findChild(MvcModuleStructureUtil.PLUGINS_DIRECTORY);
if (pluginDir != null) toExclude.add(VfsUtil.virtualToIoFile(pluginDir));
if (pluginDir != null) toExclude.add(VfsUtilCore.virtualToIoFile(pluginDir));
VirtualFile libDir = appRoot.findChild("lib");
if (libDir != null) toExclude.add(VfsUtil.virtualToIoFile(libDir));
if (libDir != null) toExclude.add(VfsUtilCore.virtualToIoFile(libDir));
}
final Library library = MvcModuleStructureUtil.findUserLibrary(module, getUserLibraryName());
if (library != null) {
for (VirtualFile file : library.getFiles(OrderRootType.CLASSES)) {
toExclude.add(VfsUtil.virtualToIoFile(PathUtil.getLocalFile(file)));
toExclude.add(VfsUtilCore.virtualToIoFile(VfsUtil.getLocalFile(file)));
}
}
return toExclude;
@@ -276,7 +275,7 @@ public abstract class MvcFramework {
eachRoot:
for (VirtualFile file : rootFiles) {
for (final File excluded : toExclude) {
if (VfsUtil.isAncestor(excluded, VfsUtil.virtualToIoFile(file), false)) {
if (VfsUtilCore.isAncestor(excluded, VfsUtilCore.virtualToIoFile(file), false)) {
continue eachRoot;
}
}

View File

@@ -31,10 +31,7 @@ import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.registry.Registry
import com.intellij.openapi.util.registry.RegistryValue
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileVisitor
import com.intellij.openapi.vfs.*
import com.intellij.pom.Navigatable
import com.intellij.psi.PsiManager
import com.intellij.psi.impl.compiled.ClsFileImpl
@@ -159,7 +156,7 @@ class IdeaDecompilerTest : LightCodeInsightFixtureTestCase() {
return fs.refreshAndFindFileByPath(path)!!
}
private fun RegistryValue.withValue(testValue: Boolean, block: () -> Unit): Unit {
private fun RegistryValue.withValue(testValue: Boolean, block: () -> Unit) {
val currentValue = asBoolean()
try {
setValue(testValue)
@@ -191,7 +188,7 @@ class IdeaDecompilerTest : LightCodeInsightFixtureTestCase() {
}
}
else if (ArchiveFileType.INSTANCE == file.fileType) {
val jarFile = StandardFileSystems.getJarRootForLocalFile(file)
val jarFile = JarFileSystem.getInstance().getRootByLocal(file)
if (jarFile != null) {
VfsUtilCore.visitChildrenRecursively(jarFile, this)
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,7 +24,7 @@ import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
import com.intellij.openapi.vfs.StandardFileSystems;
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.search.GlobalSearchScope;
@@ -41,6 +41,7 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
import javax.swing.*;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -91,8 +92,14 @@ public class MavenGroovyPomScriptType extends GroovyRunnableScriptType {
}
public static List<VirtualFile> additionalScopeFiles() {
VirtualFile virtualFile = VfsUtil.findFileByIoFile(GroovyFacetUtil.getBundledGroovyJar(), false);
return virtualFile == null ? ContainerUtil.emptyList() : ContainerUtil.list(StandardFileSystems.getJarRootForLocalFile(virtualFile));
VirtualFile jarFile = VfsUtil.findFileByIoFile(GroovyFacetUtil.getBundledGroovyJar(), false);
if (jarFile != null) {
VirtualFile jarRoot = JarFileSystem.getInstance().getRootByLocal(jarFile);
if (jarRoot != null) {
return Collections.singletonList(jarRoot);
}
}
return ContainerUtil.emptyList();
}
private static boolean hasModuleWithGroovyLibrary(@NotNull Project project) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -64,7 +64,7 @@ public class PyRemoteLibrariesNode extends PsiDirectoryNode {
VirtualFile remoteLibrary = PySdkUtil.findAnyRemoteLibrary(sdk);
if (remoteLibrary != null && remoteLibrary.getFileType() instanceof ArchiveFileType) {
remoteLibrary = JarFileSystem.getInstance().getLocalVirtualFileFor(remoteLibrary);
remoteLibrary = JarFileSystem.getInstance().getLocalByEntry(remoteLibrary);
}
if (remoteLibrary != null) {

View File

@@ -128,7 +128,7 @@ public class PyTreeStructureProvider implements SelectableTreeStructureProvider,
continue;
}
if (dir.getFileSystem() instanceof JarFileSystem) {
dir = ((JarFileSystem)dir.getFileSystem()).getLocalVirtualFileFor(dir);
dir = ((JarFileSystem)dir.getFileSystem()).getLocalByEntry(dir);
}
if (dir == null) {
continue;