Workspace Model: store the module library in library entry instead of the whole library table

GitOrigin-RevId: 4232df9a1b0433aad25b53a6ab6acaa960940ff9
This commit is contained in:
Alex Plate
2019-12-23 10:33:50 +00:00
committed by intellij-monorepo-bot
parent 95f278bc67
commit 655e780578
2 changed files with 8 additions and 7 deletions
@@ -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
}
@@ -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)