IJPL-196089 Changes in ModuleCustomImlDataEntity should not implicitly trigger indexing

Custom module options were deprecated a long time ago. If a plugin uses custom options which participate in indexing, then these options should be supplied via `com.intellij.filePropertyPusher` extensions

GitOrigin-RevId: 39abd45f8acfb101ae9442323f7e906a21b15ffe
This commit is contained in:
Andrei.Kuznetsov
2025-07-16 12:06:06 +00:00
committed by intellij-monorepo-bot
parent eeab79bb12
commit 69e7be4c19
2 changed files with 0 additions and 78 deletions
@@ -1,77 +0,0 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.util.indexing.roots;
import com.intellij.openapi.project.Project;
import com.intellij.platform.workspace.jps.entities.ModuleCustomImlDataEntity;
import com.intellij.platform.workspace.jps.entities.ModuleEntity;
import com.intellij.platform.workspace.jps.entities.ModuleExtensions;
import com.intellij.platform.workspace.storage.WorkspaceEntity;
import com.intellij.util.indexing.roots.builders.IndexableIteratorBuilders;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@ApiStatus.Internal
public final class ModuleCustomImlDataFilesIndexableEntityProvider implements IndexableEntityProvider.Enforced<ModuleCustomImlDataEntity> {
@Override
public @NotNull Class<ModuleCustomImlDataEntity> getEntityClass() {
return ModuleCustomImlDataEntity.class;
}
@Override
public @NotNull Collection<DependencyOnParent<? extends WorkspaceEntity>> getDependencies() {
return Collections.singletonList(DependencyOnParent.create(
ModuleEntity.class, ModuleCustomImlDataFilesIndexableEntityProvider::getReplacedParentEntityIteratorBuilder));
}
@Override
public @NotNull Collection<? extends IndexableIteratorBuilder> getAddedEntityIteratorBuilders(@NotNull ModuleCustomImlDataEntity entity,
@NotNull Project project) {
return IndexableIteratorBuilders.INSTANCE.forModuleContent(entity.getModule().getSymbolicId());
}
@Override
public @NotNull Collection<? extends IndexableIteratorBuilder> getRemovedEntityIteratorBuilders(@NotNull ModuleCustomImlDataEntity entity,
@NotNull Project project) {
return getAddedEntityIteratorBuilders(entity, project);
}
@Override
public @NotNull Collection<? extends IndexableIteratorBuilder> getReplacedEntityIteratorBuilders(@NotNull ModuleCustomImlDataEntity oldEntity,
@NotNull ModuleCustomImlDataEntity newEntity,
@NotNull Project project) {
if (shouldBeRescanned(oldEntity, newEntity)) {
return IndexableIteratorBuilders.INSTANCE.forModuleContent(newEntity.getModule().getSymbolicId());
}
return Collections.emptyList();
}
private static boolean shouldBeRescanned(@Nullable ModuleCustomImlDataEntity oldData, @Nullable ModuleCustomImlDataEntity newData) {
if ((oldData == null) != (newData == null)) {
return true;
}
if (newData != null) {
if (!Objects.equals(newData.getRootManagerTagCustomData(), oldData.getRootManagerTagCustomData())) {
return true;
}
if (!Objects.equals(newData.getCustomModuleOptions(), oldData.getCustomModuleOptions())) {
return true;
}
}
return false;
}
private static @NotNull Collection<? extends IndexableIteratorBuilder> getReplacedParentEntityIteratorBuilder(@NotNull ModuleEntity oldEntity,
@NotNull ModuleEntity newEntity) {
if (shouldBeRescanned(ModuleExtensions.getCustomImlData(oldEntity), ModuleExtensions.getCustomImlData(newEntity))) {
List<IndexableIteratorBuilder> result = new ArrayList<>();
result.addAll(IndexableIteratorBuilders.INSTANCE.forModuleContent(oldEntity.getSymbolicId()));
result.addAll(IndexableIteratorBuilders.INSTANCE.forModuleContent(newEntity.getSymbolicId()));
return result;
}
return Collections.emptyList();
}
}
@@ -105,7 +105,6 @@
<projectStructure.sourceRootEditHandler implementation="com.intellij.openapi.roots.ui.configuration.JavaTestSourceRootEditHandler"/>
<indexableEntityProvider implementation="com.intellij.util.indexing.roots.ModuleDependencyEntitiesIndexableEntityProvider"/>
<indexableEntityProvider implementation="com.intellij.util.indexing.roots.ModuleCustomImlDataFilesIndexableEntityProvider"/>
<indexableIteratorBuilderHandler implementation="com.intellij.util.indexing.roots.builders.ModuleRootsIndexableIteratorHandler"/>
<indexableIteratorBuilderHandler implementation="com.intellij.util.indexing.roots.builders.SdkIndexableIteratorHandler"/>
<indexableIteratorBuilderHandler implementation="com.intellij.util.indexing.roots.builders.LibraryIndexableIteratorHandler"/>