mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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:
committed by
intellij-monorepo-bot
parent
eeab79bb12
commit
69e7be4c19
-77
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user