mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[Workspace Model] [IDEA-252915] Track the library ids and the sources of these IDs.
GitOrigin-RevId: 4cc58d01c1eeda07766b7823e529555024a8b6ab
This commit is contained in:
committed by
intellij-monorepo-bot
parent
89a9396c43
commit
be8f45e07c
+2
-1
@@ -191,7 +191,8 @@ class JpsProjectModelSynchronizer(private val project: Project) : Disposable {
|
||||
|
||||
val tmpBuilder = WorkspaceEntityStorageBuilder.create()
|
||||
val unloaded = unloadedModulePaths.map { modulePath ->
|
||||
serializers.findModuleSerializer(modulePath)!!.loadEntities(tmpBuilder, fileContentReader, errorReporter, virtualFileManager)
|
||||
serializers.findModuleSerializer(modulePath)!!.loadEntities(tmpBuilder, fileContentReader, errorReporter, virtualFileManager,
|
||||
HashMap())
|
||||
|
||||
val moduleEntity = tmpBuilder.resolve(ModuleId(modulePath.moduleName)) ?: return@map null
|
||||
val pointerManager = VirtualFilePointerManager.getInstance()
|
||||
|
||||
+2
-1
@@ -29,7 +29,8 @@ internal class ExternalModuleImlFileEntitiesSerializer(modulePath: ModulePath,
|
||||
override fun loadEntities(builder: WorkspaceEntityStorageBuilder,
|
||||
reader: JpsFileContentReader,
|
||||
errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager) {
|
||||
virtualFileManager: VirtualFileUrlManager,
|
||||
entitiesTrack: MutableMap<Any, Any>) {
|
||||
}
|
||||
|
||||
override fun acceptsSource(entitySource: EntitySource): Boolean {
|
||||
|
||||
+2
-1
@@ -76,7 +76,8 @@ internal open class JpsArtifactEntitiesSerializer(override val fileUrl: VirtualF
|
||||
override fun loadEntities(builder: WorkspaceEntityStorageBuilder,
|
||||
reader: JpsFileContentReader,
|
||||
errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager) {
|
||||
virtualFileManager: VirtualFileUrlManager,
|
||||
entitiesTrack: MutableMap<Any, Any>) {
|
||||
val artifactListElement = reader.loadComponent(fileUrl.url, ARTIFACT_MANAGER_COMPONENT_NAME)
|
||||
if (artifactListElement == null) return
|
||||
|
||||
|
||||
+7
-1
@@ -77,7 +77,10 @@ internal open class JpsLibraryEntitiesSerializer(override val fileUrl: VirtualFi
|
||||
get() = LibraryEntity::class.java
|
||||
|
||||
override fun loadEntities(builder: WorkspaceEntityStorageBuilder,
|
||||
reader: JpsFileContentReader, errorReporter: ErrorReporter, virtualFileManager: VirtualFileUrlManager) {
|
||||
reader: JpsFileContentReader,
|
||||
errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager,
|
||||
entitiesTrack: MutableMap<Any, Any>) {
|
||||
val libraryTableTag = reader.loadComponent(fileUrl.url, LIBRARY_TABLE_COMPONENT_NAME) ?: return
|
||||
for (libraryTag in libraryTableTag.getChildren(LIBRARY_TAG)) {
|
||||
val source = createEntitySource(libraryTag) ?: continue
|
||||
@@ -90,11 +93,14 @@ internal open class JpsLibraryEntitiesSerializer(override val fileUrl: VirtualFi
|
||||
|Entity with this library id already exists.
|
||||
|Library id: $libraryId
|
||||
|fileUrl: ${fileUrl.presentableUrl}
|
||||
|Previous file url: ${entitiesTrack[libraryId]}
|
||||
|library table id: $libraryTableId
|
||||
|internal entity source: $internalEntitySource
|
||||
""".trimMargin())
|
||||
}
|
||||
|
||||
entitiesTrack[libraryId] = fileUrl.presentableUrl
|
||||
|
||||
loadLibrary(name, libraryTag, libraryTableId, builder, source, virtualFileManager)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ object JpsProjectEntitiesLoader {
|
||||
val reader = CachingJpsFileContentReader(configLocation.baseDirectoryUrlString)
|
||||
val serializer = ModuleListSerializerImpl.createModuleEntitiesSerializer(moduleFile.toVirtualFileUrl(virtualFileManager), null, source,
|
||||
virtualFileManager)
|
||||
serializer.loadEntities(builder, reader, errorReporter, virtualFileManager)
|
||||
serializer.loadEntities(builder, reader, errorReporter, virtualFileManager, HashMap())
|
||||
}
|
||||
|
||||
private fun createProjectEntitiesSerializers(configLocation: JpsProjectConfigLocation,
|
||||
|
||||
+3
-2
@@ -186,8 +186,9 @@ class JpsProjectSerializersImpl(directorySerializersFactories: List<JpsDirectory
|
||||
}
|
||||
|
||||
val builder = WorkspaceEntityStorageBuilder.create()
|
||||
val entitiesTrack = HashMap<Any, Any>()
|
||||
affectedFileLoaders.forEach {
|
||||
it.loadEntities(builder, reader, errorReporter, virtualFileManager)
|
||||
it.loadEntities(builder, reader, errorReporter, virtualFileManager, entitiesTrack)
|
||||
}
|
||||
return Pair(changedSources, builder)
|
||||
}
|
||||
@@ -198,7 +199,7 @@ class JpsProjectSerializersImpl(directorySerializersFactories: List<JpsDirectory
|
||||
val tasks = fileSerializersByUrl.values.map { serializer ->
|
||||
Callable {
|
||||
val myBuilder = WorkspaceEntityStorageBuilder.create()
|
||||
serializer.loadEntities(myBuilder, reader, errorReporter, virtualFileManager)
|
||||
serializer.loadEntities(myBuilder, reader, errorReporter, virtualFileManager, HashMap())
|
||||
myBuilder
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -36,7 +36,6 @@ import java.nio.file.Paths
|
||||
import java.util.*
|
||||
import kotlin.Comparator
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.collections.HashMap
|
||||
|
||||
private const val MODULE_ROOT_MANAGER_COMPONENT_NAME = "NewModuleRootManager"
|
||||
private const val URL_ATTRIBUTE = "url"
|
||||
@@ -64,7 +63,10 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
|
||||
override fun hashCode() = modulePath.hashCode()
|
||||
|
||||
override fun loadEntities(builder: WorkspaceEntityStorageBuilder,
|
||||
reader: JpsFileContentReader, errorReporter: ErrorReporter, virtualFileManager: VirtualFileUrlManager) {
|
||||
reader: JpsFileContentReader,
|
||||
errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager,
|
||||
entitiesTrack: MutableMap<Any, Any>) {
|
||||
val externalStorageEnabled = externalStorageConfigurationManager?.isEnabled ?: false
|
||||
if (!externalStorageEnabled) {
|
||||
val moduleEntity = loadModuleEntity(reader, builder, errorReporter, virtualFileManager)
|
||||
|
||||
+11
-3
@@ -4,10 +4,13 @@ package com.intellij.workspaceModel.ide.impl.jps.serialization
|
||||
import com.intellij.openapi.components.ExpandMacroToPathMap
|
||||
import com.intellij.openapi.components.PathMacroMap
|
||||
import com.intellij.openapi.module.impl.ModulePath
|
||||
import com.intellij.workspaceModel.storage.bridgeEntities.ModuleEntity
|
||||
import com.intellij.workspaceModel.ide.JpsFileEntitySource
|
||||
import com.intellij.workspaceModel.ide.JpsProjectConfigLocation
|
||||
import com.intellij.workspaceModel.storage.*
|
||||
import com.intellij.workspaceModel.storage.EntitySource
|
||||
import com.intellij.workspaceModel.storage.WorkspaceEntity
|
||||
import com.intellij.workspaceModel.storage.WorkspaceEntityStorage
|
||||
import com.intellij.workspaceModel.storage.WorkspaceEntityStorageBuilder
|
||||
import com.intellij.workspaceModel.storage.bridgeEntities.ModuleEntity
|
||||
import com.intellij.workspaceModel.storage.url.VirtualFileUrl
|
||||
import com.intellij.workspaceModel.storage.url.VirtualFileUrlManager
|
||||
import org.jdom.Element
|
||||
@@ -34,8 +37,13 @@ interface JpsFileEntitiesSerializer<E : WorkspaceEntity> {
|
||||
val internalEntitySource: JpsFileEntitySource
|
||||
val fileUrl: VirtualFileUrl
|
||||
val mainEntityClass: Class<E>
|
||||
|
||||
/**
|
||||
* TODO: 02.11.2020 [entitiesTrack] is a temporal solution to find the root cause of IDEA-246753. It should be removed after the fix.
|
||||
*/
|
||||
fun loadEntities(builder: WorkspaceEntityStorageBuilder, reader: JpsFileContentReader, errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager)
|
||||
virtualFileManager: VirtualFileUrlManager,
|
||||
entitiesTrack: MutableMap<Any, Any>)
|
||||
fun saveEntities(mainEntities: Collection<E>,
|
||||
entities: Map<Class<out WorkspaceEntity>, List<WorkspaceEntity>>,
|
||||
storage: WorkspaceEntityStorage,
|
||||
|
||||
Reference in New Issue
Block a user