mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
[vfs] reducing the number of find-local-by-entry API calls
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user