[platform] Reduce uses of obsolete DirectoryIndex; WorkspaceFileIndexEx#getInstance

GitOrigin-RevId: d966aa013eaa3ad63e407d917d7cd6dcb68ee883
This commit is contained in:
Tagir Valeev
2025-05-20 08:42:46 +00:00
committed by intellij-monorepo-bot
parent c556b1b564
commit 35a42d780f
11 changed files with 45 additions and 43 deletions
@@ -11,17 +11,18 @@ import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.FilteredQuery;
import com.intellij.util.Query;
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class ModulePackageIndexImpl extends ModulePackageIndex {
private static final Logger LOG = Logger.getInstance(ModulePackageIndexImpl.class);
private final ModuleFileIndex myModuleFileIndex;
private final DirectoryIndex myDirectoryIndex;
private final WorkspaceFileIndexEx myWorkspaceFileIndex;
public ModulePackageIndexImpl(@NotNull Module module) {
myModuleFileIndex = ModuleRootManager.getInstance(module).getFileIndex();
myDirectoryIndex = DirectoryIndex.getInstance(module.getProject());
myWorkspaceFileIndex = WorkspaceFileIndexEx.getInstance(module.getProject());
}
private final Condition<VirtualFile> myDirCondition = new Condition<>() {
@@ -33,17 +34,17 @@ public final class ModulePackageIndexImpl extends ModulePackageIndex {
@Override
public @NotNull Query<VirtualFile> getDirsByPackageName(@NotNull @NlsSafe String packageName, boolean includeLibrarySources) {
return new FilteredQuery<>(myDirectoryIndex.getDirectoriesByPackageName(packageName, includeLibrarySources), myDirCondition);
return new FilteredQuery<>(myWorkspaceFileIndex.getDirectoriesByPackageName(packageName, includeLibrarySources), myDirCondition);
}
@Override
public Query<VirtualFile> getFilesByPackageName(@NotNull String packageName) {
return new FilteredQuery<>(myDirectoryIndex.getFilesByPackageName(packageName), myDirCondition);
return new FilteredQuery<>(myWorkspaceFileIndex.getFilesByPackageName(packageName), myDirCondition);
}
@Override
public @Nullable String getPackageName(@NotNull VirtualFile fileOrDir) {
return myDirectoryIndex.getPackageName(fileOrDir);
return myWorkspaceFileIndex.getPackageName(fileOrDir);
}
@Override
@@ -51,6 +52,6 @@ public final class ModulePackageIndexImpl extends ModulePackageIndex {
if (!dir.isDirectory()) {
LOG.error(dir.getPresentableUrl() + " is not a directory");
}
return myDirectoryIndex.getPackageName(dir);
return myWorkspaceFileIndex.getPackageName(dir);
}
}
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.Query;
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -16,32 +17,32 @@ import org.jetbrains.annotations.Nullable;
public final class ProjectPackageIndexImpl extends PackageIndex {
private static final Logger LOG = Logger.getInstance(ProjectPackageIndexImpl.class);
private final DirectoryIndex myDirectoryIndex;
private final WorkspaceFileIndexEx myWorkspaceFileIndex;
@ApiStatus.Internal
public ProjectPackageIndexImpl(@NotNull Project project) {
myDirectoryIndex = DirectoryIndex.getInstance(project);
myWorkspaceFileIndex = WorkspaceFileIndexEx.getInstance(project);
}
@Override
public Query<VirtualFile> getDirsByPackageName(@NotNull @NlsSafe String packageName,
@NotNull GlobalSearchScope scope) {
return myDirectoryIndex.getDirectoriesByPackageName(packageName, scope);
return myWorkspaceFileIndex.getDirectoriesByPackageName(packageName, scope);
}
@Override
public Query<VirtualFile> getFilesByPackageName(@NotNull String packageName) {
return myDirectoryIndex.getFilesByPackageName(packageName);
return myWorkspaceFileIndex.getFilesByPackageName(packageName);
}
@Override
public @NotNull Query<VirtualFile> getDirsByPackageName(@NotNull @NlsSafe String packageName, boolean includeLibrarySources) {
return myDirectoryIndex.getDirectoriesByPackageName(packageName, includeLibrarySources);
return myWorkspaceFileIndex.getDirectoriesByPackageName(packageName, includeLibrarySources);
}
@Override
public @Nullable String getPackageName(@NotNull VirtualFile fileOrDir) {
return myDirectoryIndex.getPackageName(fileOrDir);
return myWorkspaceFileIndex.getPackageName(fileOrDir);
}
@Override
@@ -49,6 +50,6 @@ public final class ProjectPackageIndexImpl extends PackageIndex {
if (!dir.isDirectory()) {
LOG.error(dir.getPresentableUrl() + " is not a directory");
}
return myDirectoryIndex.getPackageName(dir);
return myWorkspaceFileIndex.getPackageName(dir);
}
}
@@ -11,7 +11,6 @@ import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.roots.TestSourcesFilter;
import com.intellij.openapi.roots.impl.DirectoryIndex;
import com.intellij.openapi.roots.ui.configuration.CommonContentEntriesEditor;
import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
import com.intellij.openapi.ui.Messages;
@@ -29,6 +28,7 @@ import com.intellij.util.IncorrectOperationException;
import com.intellij.util.Query;
import com.intellij.util.ThreeState;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -47,7 +47,7 @@ public final class PlatformPackageUtil {
*/
@ApiStatus.Internal
public static String getPackageName(@NotNull VirtualFile directory, @NotNull Project project) {
return DirectoryIndex.getInstance(project).getPackageName(directory);
return WorkspaceFileIndexEx.getInstance(project).getPackageName(directory);
}
/**
@@ -56,7 +56,7 @@ public final class PlatformPackageUtil {
*/
@ApiStatus.Internal
public static @NotNull Query<VirtualFile> getDirectoriesByPackageName(@NotNull String packageName, boolean includeLibrarySources, @NotNull Project project) {
return DirectoryIndex.getInstance(project).getDirectoriesByPackageName(packageName, includeLibrarySources);
return WorkspaceFileIndexEx.getInstance(project).getDirectoriesByPackageName(packageName, includeLibrarySources);
}
/**
@@ -65,7 +65,7 @@ public final class PlatformPackageUtil {
*/
@ApiStatus.Internal
public static Query<VirtualFile> getDirectoriesByPackageName(@NotNull String packageName, @NotNull GlobalSearchScope scope, @NotNull Project project) {
return DirectoryIndex.getInstance(project).getDirectoriesByPackageName(packageName, true).filtering(scope::contains);
return WorkspaceFileIndexEx.getInstance(project).getDirectoriesByPackageName(packageName, true).filtering(scope::contains);
}
@@ -43,7 +43,6 @@ import com.intellij.util.indexing.EntityIndexingService
import com.intellij.util.indexing.ProjectEntityIndexingService
import com.intellij.util.indexing.roots.WorkspaceIndexingRootsBuilder
import com.intellij.workspaceModel.core.fileIndex.EntityStorageKind
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndex
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndexContributor
import com.intellij.workspaceModel.core.fileIndex.impl.PlatformInternalWorkspaceFileIndexContributor
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx
@@ -240,7 +239,7 @@ open class ProjectRootManagerComponent(
try {
@Suppress("UsagesOfObsoleteApi")
(DirectoryIndex.getInstance(project) as? DirectoryIndexImpl)?.reset()
(WorkspaceFileIndex.getInstance(project) as WorkspaceFileIndexEx).indexData.resetCustomContributors()
WorkspaceFileIndexEx.getInstance(project).indexData.resetCustomContributors()
project.messageBus.syncPublisher(ModuleRootListener.TOPIC).beforeRootsChange(ModuleRootEventImpl(project, fileTypes))
}
finally {
@@ -253,7 +252,7 @@ open class ProjectRootManagerComponent(
try {
@Suppress("UsagesOfObsoleteApi")
(DirectoryIndex.getInstance(project) as? DirectoryIndexImpl)?.reset()
(WorkspaceFileIndex.getInstance(project) as WorkspaceFileIndexEx).indexData.resetCustomContributors()
WorkspaceFileIndexEx.getInstance(project).indexData.resetCustomContributors()
val isFromWorkspaceOnly = EntityIndexingService.getInstance().isFromWorkspaceOnly(indexingInfos)
project.messageBus.syncPublisher(ModuleRootListener.TOPIC)
@@ -25,7 +25,7 @@ import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndex
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileKind
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileSetWithCustomData
import com.intellij.workspaceModel.core.fileIndex.impl.ModuleRelatedRootData
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx
import com.intellij.workspaceModel.ide.impl.legacyBridge.library.ProjectLibraryTableBridgeImpl.Companion.libraryMap
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.findModule
import com.intellij.workspaceModel.ide.legacyBridge.ModuleDependencyIndex
@@ -58,7 +58,7 @@ class IndexingIteratorsProviderImpl(
private fun doGetIndexingIterators(): List<IndexableFilesIterator> {
val model = WorkspaceModel.getInstance(project)
val index = WorkspaceFileIndex.getInstance(project) as WorkspaceFileIndexImpl
val index = WorkspaceFileIndexEx.getInstance(project)
val storage = model.currentSnapshot
val virtualFileUrlManager = model.getVirtualFileUrlManager()
val moduleDependencyIndex by lazy { ModuleDependencyIndex.getInstance(project) }
@@ -175,12 +175,12 @@ class IndexingIteratorsProviderImpl(
return iterators
}
private fun isNestedRootOfModuleContent(root: VirtualFile, module: Module, workspaceFileIndexImpl: WorkspaceFileIndexImpl): Boolean {
private fun isNestedRootOfModuleContent(root: VirtualFile, module: Module, workspaceFileIndex: WorkspaceFileIndexEx): Boolean {
val parent = root.getParent()
if (parent == null) {
return false
}
val fileInfo = workspaceFileIndexImpl.getFileInfo(
val fileInfo = workspaceFileIndex.getFileInfo(
parent,
honorExclusion = false,
includeContentSets = true,
@@ -15,7 +15,6 @@ import com.intellij.platform.backend.workspace.WorkspaceModel
import com.intellij.platform.workspace.jps.entities.*
import com.intellij.platform.workspace.storage.EntityPointer
import com.intellij.platform.workspace.storage.ImmutableEntityStorage
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndex
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileSet
import com.intellij.workspaceModel.core.fileIndex.impl.LibrariesAndSdkContributors
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx
@@ -30,7 +29,7 @@ import org.jetbrains.annotations.ApiStatus
internal class ProjectModelEntityContextProvider : CodeInsightContextProvider {
override fun getContexts(file: VirtualFile, project: Project): List<CodeInsightContext> {
val workspaceFileIndex = WorkspaceFileIndex.getInstance(project) as WorkspaceFileIndexEx
val workspaceFileIndex = WorkspaceFileIndexEx.getInstance(project)
val fileSets = workspaceFileIndex.findFileSets(
file = file,
@@ -7,8 +7,8 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.OrderEntry;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.EmptyQuery;
import com.intellij.util.Query;
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -30,21 +30,24 @@ public abstract class DirectoryIndex {
return project.getService(DirectoryIndex.class);
}
public abstract @NotNull
Query<VirtualFile> getDirectoriesByPackageName(@NotNull String packageName, boolean includeLibrarySources);
/**
* @deprecated use {@link WorkspaceFileIndexEx#getDirectoriesByPackageName(String, boolean)}}
*/
@Deprecated
public abstract @NotNull Query<VirtualFile> getDirectoriesByPackageName(@NotNull String packageName, boolean includeLibrarySources);
/**
* @return a query producing single file source root files which correspond to {@code packageName}.
* @deprecated use {@link WorkspaceFileIndexEx#getDirectoriesByPackageName(String, GlobalSearchScope)}}
*/
@ApiStatus.Experimental
public @NotNull Query<VirtualFile> getFilesByPackageName(@NotNull String packageName) {
return EmptyQuery.getEmptyQuery();
}
@Deprecated
public Query<VirtualFile> getDirectoriesByPackageName(@NotNull String packageName, @NotNull GlobalSearchScope scope) {
return getDirectoriesByPackageName(packageName, true).filtering(scope::contains);
}
/**
* @deprecated use {@link WorkspaceFileIndexEx#getPackageName(VirtualFile)}}
*/
@Deprecated
public abstract @Nullable String getPackageName(@NotNull VirtualFile fileOrDir);
public abstract @NotNull List<OrderEntry> getOrderEntries(@NotNull VirtualFile fileOrDir);
@@ -102,11 +102,6 @@ public final class DirectoryIndexImpl extends DirectoryIndex implements Disposab
return myWorkspaceFileIndex.getDirectoriesByPackageName(packageName, includeLibrarySources);
}
@Override
public @NotNull Query<VirtualFile> getFilesByPackageName(@NotNull String packageName) {
return myWorkspaceFileIndex.getFilesByPackageName(packageName);
}
@Override
public Query<VirtualFile> getDirectoriesByPackageName(@NotNull String packageName,
@NotNull GlobalSearchScope scope) {
@@ -185,7 +185,7 @@ public class ProjectFileIndexImpl extends FileIndexBase implements ProjectFileIn
@Override
public String getPackageNameByDirectory(@NotNull VirtualFile dir) {
if (!dir.isDirectory()) LOG.error(dir.getPresentableUrl());
return myDirectoryIndex.getPackageName(dir);
return myWorkspaceFileIndex.getPackageName(dir);
}
@Override
@@ -2,6 +2,7 @@
package com.intellij.workspaceModel.core.fileIndex.impl
import com.intellij.openapi.components.serviceIfCreated
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ProjectManager
import com.intellij.openapi.roots.ContentIteratorEx
import com.intellij.openapi.vfs.AsyncFileListener
@@ -20,6 +21,10 @@ import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileSetWithCustomData
import org.jetbrains.annotations.ApiStatus
interface WorkspaceFileIndexEx : WorkspaceFileIndex {
companion object {
@JvmStatic
fun getInstance(project: Project): WorkspaceFileIndexEx = WorkspaceFileIndex.getInstance(project) as WorkspaceFileIndexEx
}
/**
* An internal variant of [findFileSetWithCustomData] method which provides more information if [file] isn't included in the workspace
* or if multiple file sets are associated with [file].
@@ -10,7 +10,6 @@ import com.intellij.platform.workspace.storage.EntityPointer
import com.intellij.platform.workspace.storage.WorkspaceEntity
import com.intellij.psi.PsiFile
import com.intellij.util.SmartList
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndex
import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileSetWithCustomData
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexEx
import com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileSetRecognizer
@@ -64,7 +63,7 @@ internal object CandidateCollector {
val originalVirtualFileForOutsider = if (isOutsiderFile(virtualFile)) getOutsiderFileOrigin(project, virtualFile) else null
val workspaceModel = WorkspaceModel.Companion.getInstance(project)
val workspaceFileIndex = WorkspaceFileIndex.Companion.getInstance(project) as WorkspaceFileIndexEx
val workspaceFileIndex = WorkspaceFileIndexEx.Companion.getInstance(project)
val fileSets = workspaceFileIndex.getFileInfo(
originalVirtualFileForOutsider ?: virtualFile,
honorExclusion = false,