From 655e780578db846d8bf16eb8d249f9bad8f23385 Mon Sep 17 00:00:00 2001 From: Alex Plate Date: Wed, 18 Dec 2019 18:37:23 +0300 Subject: [PATCH] Workspace Model: store the module library in library entry instead of the whole library table GitOrigin-RevId: 4232df9a1b0433aad25b53a6ab6acaa960940ff9 --- .../typedModel/module/OrderEntriesViaTypedEntity.kt | 9 +++------ .../typedModel/module/RootModelViaTypedEntityImpl.kt | 6 +++++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/OrderEntriesViaTypedEntity.kt b/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/OrderEntriesViaTypedEntity.kt index e7b4ec0f59b1..a953b637a551 100644 --- a/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/OrderEntriesViaTypedEntity.kt +++ b/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/OrderEntriesViaTypedEntity.kt @@ -10,14 +10,12 @@ import com.intellij.openapi.roots.impl.ClonableOrderEntry import com.intellij.openapi.roots.impl.ModuleRootManagerImpl import com.intellij.openapi.roots.impl.ProjectRootManagerImpl import com.intellij.openapi.roots.libraries.Library -import com.intellij.openapi.roots.libraries.LibraryTable import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager import com.intellij.util.ArrayUtil import com.intellij.workspace.api.LibraryTableId import com.intellij.workspace.api.ModuleDependencyItem -import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeLibrary import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer internal abstract class OrderEntryViaTypedEntity( @@ -173,7 +171,7 @@ internal class LibraryOrderEntryViaTypedEntity( model: RootModelViaTypedEntityImpl, index: Int, internal val libraryDependencyItem: ModuleDependencyItem.Exportable.LibraryDependency, - private val moduleLibraryTable: LibraryTable, + private val moduleLibrary: Library?, itemUpdater: (((ModuleDependencyItem) -> ModuleDependencyItem) -> Unit)? ) : LibraryOrderEntryBaseViaTypedEntity(model, index, libraryDependencyItem, itemUpdater), LibraryOrderEntry, ClonableOrderEntry { @@ -197,8 +195,7 @@ internal class LibraryOrderEntryViaTypedEntity( .getLibraryTableByLevel(LibraryTablesRegistrar.PROJECT_LEVEL, project) ?.getLibraryByName(libraryId.name) } - is LibraryTableId.ModuleLibraryTableId -> - moduleLibraryTable.libraries.firstOrNull { (it as LegacyBridgeLibrary).libraryId == libraryId } + is LibraryTableId.ModuleLibraryTableId -> moduleLibrary is LibraryTableId.GlobalLibraryTableId -> { LibraryTablesRegistrar.getInstance() ?.getLibraryTableByLevel(parentId.level, project) @@ -239,7 +236,7 @@ internal class LibraryOrderEntryViaTypedEntity( override fun cloneEntry(rootModel: ModifiableRootModel, projectRootManager: ProjectRootManagerImpl, filePointerManager: VirtualFilePointerManager - ): OrderEntry = LibraryOrderEntryViaTypedEntity(model, index, libraryDependencyItem.copy(), rootModel.moduleLibraryTable, if (isModifiable) updater else null) + ): OrderEntry = LibraryOrderEntryViaTypedEntity(model, index, libraryDependencyItem.copy(), library, if (isModifiable) updater else null) override fun isSynthetic(): Boolean = isModuleLevel } diff --git a/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/RootModelViaTypedEntityImpl.kt b/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/RootModelViaTypedEntityImpl.kt index 2a33defffe26..d517dcb6d0d3 100644 --- a/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/RootModelViaTypedEntityImpl.kt +++ b/platform/workspaceModel-ide/src/com/intellij/workspace/legacyBridge/typedModel/module/RootModelViaTypedEntityImpl.kt @@ -18,6 +18,7 @@ import com.intellij.workspace.api.* import com.intellij.workspace.legacyBridge.intellij.LegacyBridgeCompilerModuleExtension import com.intellij.workspace.legacyBridge.intellij.LegacyBridgeFilePointerProvider import com.intellij.workspace.legacyBridge.intellij.LegacyBridgeModule +import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeLibrary import java.util.* import java.util.concurrent.atomic.AtomicReference import kotlin.collections.HashMap @@ -131,7 +132,10 @@ internal class RootModelViaTypedEntityImpl(internal val moduleEntityId: Persiste return when (item) { is ModuleDependencyItem.Exportable.ModuleDependency -> ModuleOrderEntryViaTypedEntity(this, index, item, updater) - is ModuleDependencyItem.Exportable.LibraryDependency -> LibraryOrderEntryViaTypedEntity(this, index, item, moduleLibraryTable, updater) + is ModuleDependencyItem.Exportable.LibraryDependency -> { + val library = moduleLibraryTable.libraries.firstOrNull { (it as? LegacyBridgeLibrary)?.libraryId == item.library } + LibraryOrderEntryViaTypedEntity(this, index, item, library, updater) + } is ModuleDependencyItem.SdkDependency -> SdkOrderEntryViaTypedEntity(this, index, item) is ModuleDependencyItem.InheritedSdkDependency -> InheritedSdkOrderEntryViaTypedEntity(this, index, item) is ModuleDependencyItem.ModuleSourceDependency -> ModuleSourceOrderEntryViaTypedEntity(this, index, item)