From 49471b78d70a88e828d87d478e0bd17dcda1a423 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 30 Jan 2019 19:28:27 +0300 Subject: [PATCH] reuse utility method PsiUtilCore.findFileSystemItem --- .../BaseSmartPointerPsiNode.java | 5 +---- .../com/intellij/ide/FileIconPatcherImpl.java | 7 ++----- .../com/intellij/ide/FileListPasteProvider.java | 10 +++------- .../ide/actions/GoToLinkTargetAction.java | 11 ++++------- .../ide/actions/GotoFileItemProvider.java | 4 ++-- .../ide/actions/SearchEverywhereAction.java | 7 ++----- .../intellij/ide/bookmarks/BookmarkItem.java | 6 ++---- .../ide/commander/ProjectListBuilder.java | 17 +++-------------- .../ide/favoritesTreeView/FavoritesPanel.java | 12 ++++-------- .../FavoritesTreeViewPanel.java | 4 +--- .../FavoritesViewTreeBuilder.java | 13 +++---------- .../ide/impl/SelectInTargetPsiWrapper.java | 3 +-- .../projectView/impl/ProjectTreeBuilder.java | 5 ++--- .../projectView/impl/ProjectViewDropTarget.java | 10 +++------- .../ide/scopeView/ScopeViewTreeModel.java | 4 +--- .../testAssistant/TestDataReferenceTestCase.kt | 5 ++--- .../extensions/python/VirtualFileExt.kt | 6 ++---- 17 files changed, 38 insertions(+), 91 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/favoritesTreeView/smartPointerPsiNodes/BaseSmartPointerPsiNode.java b/java/java-impl/src/com/intellij/ide/favoritesTreeView/smartPointerPsiNodes/BaseSmartPointerPsiNode.java index 67aac82afa1f..f2572cebf8f0 100644 --- a/java/java-impl/src/com/intellij/ide/favoritesTreeView/smartPointerPsiNodes/BaseSmartPointerPsiNode.java +++ b/java/java-impl/src/com/intellij/ide/favoritesTreeView/smartPointerPsiNodes/BaseSmartPointerPsiNode.java @@ -50,10 +50,7 @@ abstract class BaseSmartPointerPsiNode ext @Override public PsiElement getTargetElement() { VirtualFile file = getVirtualFileForValue(); - if (file == null) { - return null; - } - return file.isDirectory() ? PsiManager.getInstance(getProject()).findDirectory(file) : PsiManager.getInstance(getProject()).findFile(file); + return PsiUtilCore.findFileSystemItem(getProject(), file); } private VirtualFile getVirtualFileForValue() { diff --git a/platform/lang-impl/src/com/intellij/ide/FileIconPatcherImpl.java b/platform/lang-impl/src/com/intellij/ide/FileIconPatcherImpl.java index a3c55939ba0e..71c67085dcbc 100644 --- a/platform/lang-impl/src/com/intellij/ide/FileIconPatcherImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/FileIconPatcherImpl.java @@ -22,7 +22,7 @@ package com.intellij.ide; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFileSystemItem; -import com.intellij.psi.PsiManager; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.PsiIconUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -33,10 +33,7 @@ public class FileIconPatcherImpl implements FileIconProvider { @Override @Nullable public Icon getIcon(@NotNull final VirtualFile file, final int flags, final Project project) { - if (project == null || project.isDisposed()) return null; - - final PsiFileSystemItem psiFile = file.isDirectory() ? PsiManager.getInstance(project).findDirectory(file) - : PsiManager.getInstance(project).findFile(file); + PsiFileSystemItem psiFile = PsiUtilCore.findFileSystemItem(project, file); return psiFile == null ? null : PsiIconUtil.getProvidersIcon(psiFile, flags); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/FileListPasteProvider.java b/platform/lang-impl/src/com/intellij/ide/FileListPasteProvider.java index 0b8a8886cd08..1b85fc1be300 100644 --- a/platform/lang-impl/src/com/intellij/ide/FileListPasteProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/FileListPasteProvider.java @@ -29,7 +29,6 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFileSystemItem; -import com.intellij.psi.PsiManager; import com.intellij.psi.util.PsiUtilCore; import com.intellij.refactoring.copy.CopyFilesOrDirectoriesHandler; import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesHandler; @@ -65,12 +64,9 @@ public class FileListPasteProvider implements PasteProvider { final List elements = new ArrayList<>(); for (File file : fileList) { final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file); - if (vFile != null) { - final PsiManager instance = PsiManager.getInstance(project); - PsiFileSystemItem item = vFile.isDirectory() ? instance.findDirectory(vFile) : instance.findFile(vFile); - if (item != null) { - elements.add(item); - } + PsiFileSystemItem item = PsiUtilCore.findFileSystemItem(project, vFile); + if (item != null) { + elements.add(item); } } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GoToLinkTargetAction.java b/platform/lang-impl/src/com/intellij/ide/actions/GoToLinkTargetAction.java index 138a102e2dad..fd0446209db0 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GoToLinkTargetAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GoToLinkTargetAction.java @@ -23,7 +23,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFileSystemItem; -import com.intellij.psi.PsiManager; +import com.intellij.psi.util.PsiUtilCore; import org.jetbrains.annotations.NotNull; public class GoToLinkTargetAction extends DumbAwareAction { @@ -40,12 +40,9 @@ public class GoToLinkTargetAction extends DumbAwareAction { VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(e.getDataContext()); if (project != null && file != null && file.is(VFileProperty.SYMLINK)) { VirtualFile target = file.getCanonicalFile(); - if (target != null) { - PsiManager psiManager = PsiManager.getInstance(project); - PsiFileSystemItem psiFile = target.isDirectory() ? psiManager.findDirectory(target) : psiManager.findFile(target); - if (psiFile != null) { - ProjectView.getInstance(project).select(psiFile, target, false); - } + PsiFileSystemItem psiFile = PsiUtilCore.findFileSystemItem(project, target); + if (psiFile != null) { + ProjectView.getInstance(project).select(psiFile, target, false); } } } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java b/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java index 8316e0c74642..58e631d3149b 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java @@ -16,11 +16,11 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFileSystemItem; -import com.intellij.psi.PsiManager; import com.intellij.psi.codeStyle.FixingLayoutMatcher; import com.intellij.psi.codeStyle.MinusculeMatcher; import com.intellij.psi.codeStyle.NameUtil; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.FList; @@ -119,7 +119,7 @@ public class GotoFileItemProvider extends DefaultChooseByNameItemProvider { if (vFile != null) { ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(myProject); if (index.isInContent(vFile) || index.isInLibrary(vFile)) { - return vFile.isDirectory() ? PsiManager.getInstance(myProject).findDirectory(vFile) : PsiManager.getInstance(myProject).findFile(vFile); + return PsiUtilCore.findFileSystemItem(myProject, vFile); } } } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java index f291a53d3f2f..38bcba0edb27 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java @@ -86,6 +86,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.MinusculeMatcher; import com.intellij.psi.codeStyle.NameUtil; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.ui.*; import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.components.JBList; @@ -1125,11 +1126,7 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA @Nullable private Component tryFileRenderer(Matcher matcher, JList list, Object value, int index, boolean isSelected) { if (myProject != null && value instanceof VirtualFile) { - PsiManager psiManager = PsiManager.getInstance(myProject); - VirtualFile virtualFile = (VirtualFile)value; - value = !virtualFile.isValid() ? virtualFile : - virtualFile.isDirectory() ? psiManager.findDirectory(virtualFile) : - psiManager.findFile(virtualFile); + value = PsiUtilCore.findFileSystemItem(myProject, (VirtualFile)value); } if (value instanceof PsiElement) { diff --git a/platform/lang-impl/src/com/intellij/ide/bookmarks/BookmarkItem.java b/platform/lang-impl/src/com/intellij/ide/bookmarks/BookmarkItem.java index 109fc514bdbf..311ae1277b75 100644 --- a/platform/lang-impl/src/com/intellij/ide/bookmarks/BookmarkItem.java +++ b/platform/lang-impl/src/com/intellij/ide/bookmarks/BookmarkItem.java @@ -24,7 +24,7 @@ import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiManager; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.ui.*; import com.intellij.ui.popup.util.DetailView; import com.intellij.ui.popup.util.ItemWrapper; @@ -57,9 +57,7 @@ public class BookmarkItem extends ItemWrapper implements Comparable sourceFiles = new ArrayList<>(); for (File file : fileList) { final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file); - if (vFile != null) { - final PsiFileSystemItem psiFile = vFile.isDirectory() - ? PsiManager.getInstance(myProject).findDirectory(vFile) - : PsiManager.getInstance(myProject).findFile(vFile); - if (psiFile != null) { - sourceFiles.add(psiFile); - } + PsiFileSystemItem psiFile = PsiUtilCore.findFileSystemItem(myProject, vFile); + if (psiFile != null) { + sourceFiles.add(psiFile); } } return sourceFiles.toArray(new PsiFileSystemItem[0]); diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java index d5d353bf5dcf..8cedafdcd87a 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java @@ -733,9 +733,7 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider, Dock public void add(@NotNull DockableContent content, RelativePoint dropTarget) { if (content.getKey() instanceof VirtualFile) { VirtualFile vFile = (VirtualFile)content.getKey(); - final PsiFileSystemItem psiFile = vFile.isDirectory() - ? PsiManager.getInstance(myProject).findDirectory(vFile) - : PsiManager.getInstance(myProject).findFile(vFile); + PsiFileSystemItem psiFile = PsiUtilCore.findFileSystemItem(myProject, vFile); Point p = dropTarget.getScreenPoint(); SwingUtilities.convertPointFromScreen(p, myTree); FavoritesListNode node = findFavoritesListNode(p); diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesViewTreeBuilder.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesViewTreeBuilder.java index 7a3e56ecf00d..7b1ab834523d 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesViewTreeBuilder.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesViewTreeBuilder.java @@ -21,6 +21,7 @@ import com.intellij.openapi.vcs.FileStatusListener; import com.intellij.openapi.vcs.FileStatusManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.messages.MessageBusConnection; import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; @@ -206,16 +207,8 @@ public class FavoritesViewTreeBuilder extends BaseProjectTreeBuilder { @Override public void fileStatusChanged(@NotNull VirtualFile vFile) { - PsiElement element; - PsiManager psiManager = PsiManager.getInstance(myProject); - if (vFile.isDirectory()) { - element = psiManager.findDirectory(vFile); - } - else { - element = psiManager.findFile(vFile); - } - - if (!addSubtreeToUpdateByElement(element) && + PsiElement element = PsiUtilCore.findFileSystemItem(myProject, vFile); + if (element != null && !addSubtreeToUpdateByElement(element) && element instanceof PsiFile && ((PsiFile)element).getFileType() == StdFileTypes.JAVA) { addSubtreeToUpdateByElement(((PsiFile)element).getContainingDirectory()); diff --git a/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java b/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java index 39349ca555b2..2f8d3ae0bcf9 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java @@ -77,8 +77,7 @@ public abstract class SelectInTargetPsiWrapper implements SelectInTarget { VirtualFile file = context.getVirtualFile(); Object selector = context.getSelectorInFile(); if (selector == null) { - PsiManager psiManager = PsiManager.getInstance(myProject); - selector = file.isDirectory() ? psiManager.findDirectory(file) : psiManager.findFile(file); + selector = PsiUtilCore.findFileSystemItem(myProject, file); } if (selector instanceof PsiElement) { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectTreeBuilder.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectTreeBuilder.java index 0af79e24055d..81e4d4a962e7 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectTreeBuilder.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectTreeBuilder.java @@ -22,6 +22,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.problems.ProblemListener; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiManager; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.Alarm; import com.intellij.util.SmartList; import com.intellij.util.messages.MessageBusConnection; @@ -136,9 +137,7 @@ public class ProjectTreeBuilder extends BaseProjectTreeBuilder { } private PsiElement findPsi(@NotNull VirtualFile vFile) { - if (!vFile.isValid()) return null; - PsiManager psiManager = PsiManager.getInstance(myProject); - return vFile.isDirectory() ? psiManager.findDirectory(vFile) : psiManager.findFile(vFile); + return PsiUtilCore.findFileSystemItem(myProject, vFile); } private class MyProblemListener implements ProblemListener { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java index 17f3aa7216fe..1feaf6e22e9c 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java @@ -220,13 +220,9 @@ abstract class ProjectViewDropTarget implements DnDNativeTarget { List sourceFiles = new ArrayList<>(); for (File file : fileList) { final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file); - if (vFile != null) { - final PsiFileSystemItem psiFile = vFile.isDirectory() - ? PsiManager.getInstance(myProject).findDirectory(vFile) - : PsiManager.getInstance(myProject).findFile(vFile); - if (psiFile != null) { - sourceFiles.add(psiFile); - } + PsiFileSystemItem psiFile = PsiUtilCore.findFileSystemItem(myProject, vFile); + if (psiFile != null) { + sourceFiles.add(psiFile); } } return sourceFiles.toArray(new PsiFileSystemItem[0]); diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewTreeModel.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewTreeModel.java index a8249b379026..ad1259fbe01f 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewTreeModel.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewTreeModel.java @@ -478,9 +478,7 @@ public final class ScopeViewTreeModel extends BaseTreeModel im @Nullable final PsiFileSystemItem findFileSystemItem(@NotNull VirtualFile file) { - Project project = !file.isValid() ? null : getProject(); - PsiManager manager = project == null || project.isDisposed() ? null : PsiManager.getInstance(project); - return manager == null ? null : file.isDirectory() ? manager.findDirectory(file) : manager.findFile(file); + return PsiUtilCore.findFileSystemItem(getProject(), file); } @SuppressWarnings("SameParameterValue") diff --git a/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/testAssistant/TestDataReferenceTestCase.kt b/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/testAssistant/TestDataReferenceTestCase.kt index 4f25ef0bfb9e..0f8538036fb6 100644 --- a/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/testAssistant/TestDataReferenceTestCase.kt +++ b/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/testAssistant/TestDataReferenceTestCase.kt @@ -3,8 +3,8 @@ package org.jetbrains.idea.devkit.testAssistant import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiFile -import com.intellij.psi.PsiManager import com.intellij.psi.PsiReference +import com.intellij.psi.util.PsiUtilCore import junit.framework.TestCase abstract class TestDataReferenceTestCase : TestDataPathTestCase() { @@ -15,8 +15,7 @@ abstract class TestDataReferenceTestCase : TestDataPathTestCase() { } fun assertResolvedTo(virtualFile: VirtualFile, referenceTest: String) { - val psiManager = PsiManager.getInstance(project) - val fileSystemItem = if (virtualFile.isDirectory) psiManager.findDirectory(virtualFile) else psiManager.findFile(virtualFile) + val fileSystemItem = PsiUtilCore.findFileSystemItem(project, virtualFile) TestCase.assertEquals(fileSystemItem, myFixture.file.getReferenceForText(referenceTest).resolve()) } diff --git a/python/src/com/jetbrains/extensions/python/VirtualFileExt.kt b/python/src/com/jetbrains/extensions/python/VirtualFileExt.kt index a872b3106e15..ae0b5bee012f 100644 --- a/python/src/com/jetbrains/extensions/python/VirtualFileExt.kt +++ b/python/src/com/jetbrains/extensions/python/VirtualFileExt.kt @@ -4,11 +4,9 @@ package com.jetbrains.extensions.python import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiFileSystemItem -import com.intellij.psi.PsiManager +import com.intellij.psi.util.PsiUtilCore fun VirtualFile.toPsi(project: Project): PsiFileSystemItem? { - val manager = PsiManager.getInstance(project) - return if (this.isDirectory) manager.findDirectory(this) else manager.findFile(this) - + return PsiUtilCore.findFileSystemItem(project, this) } \ No newline at end of file