add ProjectFileIndex#getSourceFolder to simplify clients (IDEA-CR-57371)
authorSergey Simonchik <sergey.simonchik@jetbrains.com>
Mon, 3 Feb 2020 11:13:26 +0000 (14:13 +0300)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Mon, 3 Feb 2020 11:39:23 +0000 (11:39 +0000)
No need to cast ProjectFileIndex.getInstance() to ProjectFileIndexImpl now.

GitOrigin-RevId: 58a104b4444e4bf24dde03e2482ae8d6bae6723c

platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/AbstractCreateFileFix.java
platform/lang-impl/src/com/intellij/ide/actions/CreateDirectoryOrPackageAction.java
platform/lang-impl/src/com/intellij/psi/impl/file/SourceRootIconProvider.java
platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/JpsFileTargetContextUtils.java
platform/projectModel-api/src/com/intellij/openapi/roots/ProjectFileIndex.java
platform/projectModel-impl/src/com/intellij/ide/projectView/impl/ProjectRootsUtil.java
platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java

index 3c83897e4f057efc50644a93b361592c1d95bf26..bd5ad8cb9d66f72998746f98cd73d2eab932a1d5 100644 (file)
@@ -9,9 +9,8 @@ import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.command.WriteCommandAction;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.command.WriteCommandAction;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.ProjectRootManager;
+import com.intellij.openapi.roots.ProjectFileIndex;
 import com.intellij.openapi.roots.SourceFolder;
 import com.intellij.openapi.roots.SourceFolder;
-import com.intellij.openapi.roots.impl.ProjectFileIndexImpl;
 import com.intellij.openapi.ui.popup.JBPopupFactory;
 import com.intellij.openapi.ui.popup.JBPopupListener;
 import com.intellij.openapi.ui.popup.LightweightWindowEvent;
 import com.intellij.openapi.ui.popup.JBPopupFactory;
 import com.intellij.openapi.ui.popup.JBPopupListener;
 import com.intellij.openapi.ui.popup.LightweightWindowEvent;
@@ -228,7 +227,7 @@ public abstract class AbstractCreateFileFix extends LocalQuickFixAndIntentionAct
     VirtualFile file = directory.getVirtualFile();
 
     Project project = directory.getProject();
     VirtualFile file = directory.getVirtualFile();
 
     Project project = directory.getProject();
-    ProjectFileIndexImpl projectFileIndex = (ProjectFileIndexImpl)ProjectRootManager.getInstance(project).getFileIndex();
+    ProjectFileIndex projectFileIndex = ProjectFileIndex.getInstance(project);
     SourceFolder sourceFolder = projectFileIndex.getSourceFolder(file);
     if (sourceFolder != null && sourceFolder.getFile() != null) {
       return IconUtil.getIcon(sourceFolder.getFile(), 0, project);
     SourceFolder sourceFolder = projectFileIndex.getSourceFolder(file);
     if (sourceFolder != null && sourceFolder.getFile() != null) {
       return IconUtil.getIcon(sourceFolder.getFile(), 0, project);
index 821c0c7f78e01999997f7a19444eb76a7827898e..b890c312228b1c819c5def60634b718ec41f0d33 100644 (file)
@@ -22,9 +22,8 @@ import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.ContentEntry;
 import com.intellij.openapi.roots.ModifiableRootModel;
 import com.intellij.openapi.roots.ModuleRootManager;
 import com.intellij.openapi.roots.ContentEntry;
 import com.intellij.openapi.roots.ModifiableRootModel;
 import com.intellij.openapi.roots.ModuleRootManager;
-import com.intellij.openapi.roots.ProjectRootManager;
+import com.intellij.openapi.roots.ProjectFileIndex;
 import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
 import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
-import com.intellij.openapi.roots.impl.ProjectFileIndexImpl;
 import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.ui.popup.JBPopup;
 import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.ui.popup.JBPopup;
@@ -284,7 +283,7 @@ public class CreateDirectoryOrPackageAction extends AnAction implements DumbAwar
 
     if (!toMarkAsRoots.isEmpty()) {
       Project project = toMarkAsRoots.get(0).first.getProject();
 
     if (!toMarkAsRoots.isEmpty()) {
       Project project = toMarkAsRoots.get(0).first.getProject();
-      ProjectFileIndexImpl index = (ProjectFileIndexImpl)ProjectRootManager.getInstance(project).getFileIndex();
+      ProjectFileIndex index = ProjectFileIndex.getInstance(project);
 
       WriteAction.run(() -> ProjectRootManagerEx.getInstanceEx(project).mergeRootsChangesDuring(() -> {
         for (Pair<PsiFileSystemItem, JpsModuleSourceRootType<?>> each : toMarkAsRoots) {
 
       WriteAction.run(() -> ProjectRootManagerEx.getInstanceEx(project).mergeRootsChangesDuring(() -> {
         for (Pair<PsiFileSystemItem, JpsModuleSourceRootType<?>> each : toMarkAsRoots) {
index 53629ec33922c1fae198b3bfda1af51af54d2ee8..25a2f0c29b47abb64e0a9bc678ecac9718612bca 100644 (file)
@@ -66,10 +66,9 @@ public class SourceRootIconProvider {
         }
       }
       else {
         }
       }
       else {
-        ProjectFileIndexImpl indexImpl = ObjectUtils.tryCast(index, ProjectFileIndexImpl.class);
-        SourceFolder sourceFolder = indexImpl != null ? indexImpl.getSourceFolder(vFile) : null;
+        SourceFolder sourceFolder = index.getSourceFolder(vFile);
         if (sourceFolder != null && vFile.equals(sourceFolder.getFile())) {
         if (sourceFolder != null && vFile.equals(sourceFolder.getFile())) {
-          SourceFolder parentSourceFolder = parent == null ? null : indexImpl.getSourceFolder(parent);
+          SourceFolder parentSourceFolder = parent == null ? null : index.getSourceFolder(parent);
 
           // do not mark files under folder of the same root type (e.g. test root file under test root dir)
           // but mark file if they are under different root type (e.g. test root file under source root dir)
 
           // do not mark files under folder of the same root type (e.g. test root file under test root dir)
           // but mark file if they are under different root type (e.g. test root file under source root dir)
index 3e3e77b883c8034d00b8b7a16fcef702912386b4..aebe4f0001445b44f977dc1154579404f91730b6 100644 (file)
@@ -3,9 +3,7 @@ package com.intellij.psi.impl.source.resolve.reference.impl.providers;
 
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.ProjectFileIndex;
 
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.ProjectFileIndex;
-import com.intellij.openapi.roots.ProjectRootManager;
 import com.intellij.openapi.roots.SourceFolder;
 import com.intellij.openapi.roots.SourceFolder;
-import com.intellij.openapi.roots.impl.ProjectFileIndexImpl;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiFileSystemItem;
 import com.intellij.util.containers.ContainerUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiFileSystemItem;
 import com.intellij.util.containers.ContainerUtil;
@@ -118,7 +116,7 @@ public final class JpsFileTargetContextUtils {
 
   @Nullable
   private static SourceFolder getSourceFolder(@NotNull Project project, @NotNull VirtualFile directory) {
 
   @Nullable
   private static SourceFolder getSourceFolder(@NotNull Project project, @NotNull VirtualFile directory) {
-    ProjectFileIndexImpl projectFileIndex = (ProjectFileIndexImpl)ProjectRootManager.getInstance(project).getFileIndex();
+    ProjectFileIndex projectFileIndex = ProjectFileIndex.getInstance(project);
     return projectFileIndex.getSourceFolder(directory);
   }
 
     return projectFileIndex.getSourceFolder(directory);
   }
 
index 57520e826d6b94acd691c80122e8d6206af35021..237f2a429b23e3761f14e9b529e065ca71593a78 100644 (file)
@@ -1,7 +1,6 @@
 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 package com.intellij.openapi.roots;
 
 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 package com.intellij.openapi.roots;
 
-import com.intellij.openapi.components.ServiceManager;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.project.Project;
@@ -143,4 +142,9 @@ public interface ProjectFileIndex extends FileIndex {
    * @return true if {@code file} is ignored, false otherwise.
    */
   boolean isUnderIgnored(@NotNull VirtualFile file);
    * @return true if {@code file} is ignored, false otherwise.
    */
   boolean isUnderIgnored(@NotNull VirtualFile file);
+
+  @Nullable
+  default SourceFolder getSourceFolder(@NotNull VirtualFile fileOrDir) {
+    return null;
+  }
 }
 }
index cf090a4dac8548c47ecb488c6b07811c6c460e07..ad4873cbb9b8761040c18f91c9e182f688fc6f56 100644 (file)
@@ -6,7 +6,6 @@ import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.*;
 import com.intellij.openapi.roots.impl.DirectoryIndex;
 import com.intellij.openapi.roots.impl.DirectoryInfo;
 import com.intellij.openapi.roots.*;
 import com.intellij.openapi.roots.impl.DirectoryIndex;
 import com.intellij.openapi.roots.impl.DirectoryInfo;
-import com.intellij.openapi.roots.impl.ProjectFileIndexImpl;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiCodeFragment;
 import com.intellij.psi.PsiDirectory;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiCodeFragment;
 import com.intellij.psi.PsiDirectory;
@@ -112,7 +111,7 @@ public class ProjectRootsUtil {
 
   @Nullable
   public static SourceFolder findSourceFolder(@NotNull Module module, @NotNull VirtualFile root) {
 
   @Nullable
   public static SourceFolder findSourceFolder(@NotNull Module module, @NotNull VirtualFile root) {
-    final ProjectFileIndexImpl index = (ProjectFileIndexImpl)ProjectRootManager.getInstance(module.getProject()).getFileIndex();
+    ProjectFileIndex index = ProjectFileIndex.getInstance(module.getProject());
     SourceFolder folder = index.getModuleForFile(root) == module ? index.getSourceFolder(root) : null;
     return folder != null && root.equals(folder.getFile()) ? folder : null;
   }
     SourceFolder folder = index.getModuleForFile(root) == module ? index.getSourceFolder(root) : null;
     return folder != null && root.equals(folder.getFile()) ? folder : null;
   }
index 800165f47158223770cc4a96b687db70ab9380da..3114da7393216136a9e240279b91036037193a0d 100644 (file)
@@ -223,6 +223,8 @@ public class ProjectFileIndexImpl extends FileIndexBase implements ProjectFileIn
     return info.isInModuleSource(fileOrDir) && rootTypes.contains(myDirectoryIndex.getSourceRootType(info));
   }
 
     return info.isInModuleSource(fileOrDir) && rootTypes.contains(myDirectoryIndex.getSourceRootType(info));
   }
 
+  @Nullable
+  @Override
   public SourceFolder getSourceFolder(@NotNull VirtualFile fileOrDir) {
     return myDirectoryIndex.getSourceRootFolder(getInfoForFileOrDirectory(fileOrDir));
   }
   public SourceFolder getSourceFolder(@NotNull VirtualFile fileOrDir) {
     return myDirectoryIndex.getSourceRootFolder(getInfoForFileOrDirectory(fileOrDir));
   }