diff --git a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/FacetManagerBridge.kt b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/FacetManagerBridge.kt index d552bbdea5ad..1a814a0f4181 100644 --- a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/FacetManagerBridge.kt +++ b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/FacetManagerBridge.kt @@ -16,10 +16,7 @@ import com.intellij.openapi.util.JDOMExternalizable import com.intellij.openapi.util.JDOMUtil import com.intellij.platform.backend.workspace.WorkspaceModel import com.intellij.platform.workspace.jps.JpsImportedEntitySource -import com.intellij.platform.workspace.jps.entities.FacetEntity -import com.intellij.platform.workspace.jps.entities.ModuleEntity -import com.intellij.platform.workspace.jps.entities.ModuleSettingsBase -import com.intellij.platform.workspace.jps.entities.modifyEntity +import com.intellij.platform.workspace.jps.entities.* import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInstrumentationApi import com.intellij.platform.workspace.storage.instrumentation.MutableEntityStorageInstrumentation @@ -136,7 +133,7 @@ class FacetModelBridge(private val moduleBridge: ModuleBridge) : FacetModelBase( // Initialize facet bridges after loading from cache val moduleEntity = (moduleBridge.diff ?: moduleBridge.entityStorage.current).resolve(moduleBridge.moduleEntityId) ?: error("Module entity should be available") - val facetTypeToSerializer = BaseIdeSerializationContext.CUSTOM_FACET_RELATED_ENTITY_SERIALIZER_EP.extensionList.associateBy { it.supportedFacetType } + val facetTypeToSerializer = BaseIdeSerializationContext.CUSTOM_FACET_RELATED_ENTITY_SERIALIZER_EP.extensionList.associateBy { FacetEntityTypeId(it.supportedFacetType) } val facetMapping = facetMapping() val mappings = ArrayList>>() for (facetContributor in WorkspaceFacetContributor.EP_NAME.extensionList) { @@ -148,7 +145,7 @@ class FacetModelBridge(private val moduleBridge: ModuleBridge) : FacetModelBase( } } else { - moduleEntity.facets.filter { !facetTypeToSerializer.containsKey(it.facetType) }.forEach { + moduleEntity.facets.filter { !facetTypeToSerializer.containsKey(it.typeId) }.forEach { fun initFacet(entity: FacetEntity): Facet<*> { val under = entity.underlyingFacet?.let { initFacet(it) } var existingFacet = facetMapping().getDataByEntity(entity) @@ -190,13 +187,13 @@ class FacetModelBridge(private val moduleBridge: ModuleBridge) : FacetModelBase( internal fun createFacet(entity: FacetEntity, underlyingFacet: Facet<*>?): Facet<*> { val registry = FacetTypeRegistry.getInstance() - val facetType = registry.findFacetType(entity.facetType) + val facetType = registry.findFacetType(entity.typeId.name) if (facetType == null) { return FacetManagerBase.createInvalidFacet(moduleBridge, FacetState().apply { name = entity.name - setFacetType(entity.facetType) + setFacetType(entity.typeId.name) configuration = entity.configurationXmlTag?.let { JDOMUtil.load(it) } - }, underlyingFacet, ProjectBundle.message("error.message.unknown.facet.type.0", entity.facetType), true, true) + }, underlyingFacet, ProjectBundle.message("error.message.unknown.facet.type.0", entity.typeId.name), true, true) } val configuration = facetType.createDefaultConfiguration() diff --git a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/ModifiableFacetModelBridgeImpl.kt b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/ModifiableFacetModelBridgeImpl.kt index 40e9c287a6a4..f8f345246ee5 100644 --- a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/ModifiableFacetModelBridgeImpl.kt +++ b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/facet/ModifiableFacetModelBridgeImpl.kt @@ -65,7 +65,7 @@ class ModifiableFacetModelBridgeImpl(private val initialStorage: EntityStorage, val facetConfigurationXml = FacetUtil.saveFacetConfiguration(facet)?.let { JDOMUtil.write(it) } val underlyingEntity = facet.underlyingFacet?.let { diff.facetMapping().getEntities(it).single() as FacetEntity } val facetTypeId = if (facet !is InvalidFacet) facet.type.stringId else facet.configuration.facetState.facetType - val entity = diff addEntity FacetEntity(facet.name, moduleEntity.symbolicId, facetTypeId, source) { + val entity = diff addEntity FacetEntity(facet.name, moduleEntity.symbolicId, FacetEntityTypeId(facetTypeId), source) { configurationXmlTag = facetConfigurationXml module = moduleEntity underlyingFacet = underlyingEntity diff --git a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/EntityTracingLogger.kt b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/EntityTracingLogger.kt index bc6ea7744e77..d766477d34b2 100644 --- a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/EntityTracingLogger.kt +++ b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/EntityTracingLogger.kt @@ -4,10 +4,7 @@ package com.intellij.workspaceModel.ide.impl import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.project.Project import com.intellij.platform.backend.workspace.WorkspaceModel -import com.intellij.platform.workspace.jps.entities.FacetEntity -import com.intellij.platform.workspace.jps.entities.FacetId -import com.intellij.platform.workspace.jps.entities.ModuleEntity -import com.intellij.platform.workspace.jps.entities.ModuleId +import com.intellij.platform.workspace.jps.entities.* import com.intellij.platform.workspace.storage.EntityChange import com.intellij.platform.workspace.storage.EntityStorage import com.intellij.platform.workspace.storage.WorkspaceEntity @@ -22,7 +19,7 @@ class EntityTracingLogger { when (tokens.size) { 3 -> { val (moduleName, facetTypeId, facetName) = tokens - FacetId(facetName, facetTypeId, ModuleId(moduleName)) + FacetId(facetName, FacetEntityTypeId(facetTypeId), ModuleId(moduleName)) } 1 -> ModuleId(tokens.first()) else -> null diff --git a/platform/workspace/jps/gen/com/intellij/java/workspace/entities/MetadataStorageImpl.kt b/platform/workspace/jps/gen/com/intellij/java/workspace/entities/MetadataStorageImpl.kt index a568c2fc9ed3..2c4fcc183e19 100644 --- a/platform/workspace/jps/gen/com/intellij/java/workspace/entities/MetadataStorageImpl.kt +++ b/platform/workspace/jps/gen/com/intellij/java/workspace/entities/MetadataStorageImpl.kt @@ -163,7 +163,7 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.FacetId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "presentableName", valueType = primitiveTypeStringNotNullable, withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false), -OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "type", valueType = primitiveTypeStringNotNullable, withDefault = false), +OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "type", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.FacetEntityTypeId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf())), withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "parentId", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "presentableName", valueType = primitiveTypeStringNotNullable, withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf("com.intellij.platform.workspace.storage.SymbolicEntityId"))), withDefault = false)), supertypes = listOf("com.intellij.platform.workspace.storage.SymbolicEntityId")) @@ -412,12 +412,12 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "moduleId", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "presentableName", valueType = primitiveTypeStringNotNullable, withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf("com.intellij.platform.workspace.storage.SymbolicEntityId"))), withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "module", valueType = ValueTypeMetadata.EntityReference(connectionType = ConnectionId.ConnectionType.ONE_TO_MANY, entityFqName = "com.intellij.platform.workspace.jps.entities.ModuleEntity", isChild = false, isNullable = false), withDefault = false), -OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "facetType", valueType = primitiveTypeStringNotNullable, withDefault = false), +OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "typeId", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.FacetEntityTypeId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf())), withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "configurationXmlTag", valueType = primitiveTypeStringNullable, withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "underlyingFacet", valueType = ValueTypeMetadata.EntityReference(connectionType = ConnectionId.ConnectionType.ONE_TO_MANY, entityFqName = "com.intellij.platform.workspace.jps.entities.FacetEntity", isChild = false, isNullable = true), withDefault = false), OwnPropertyMetadata(isComputable = true, isKey = false, isOpen = false, name = "symbolicId", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.FacetId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "presentableName", valueType = primitiveTypeStringNotNullable, withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false), -OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "type", valueType = primitiveTypeStringNotNullable, withDefault = false), +OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "type", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.FacetEntityTypeId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf())), withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "parentId", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "presentableName", valueType = primitiveTypeStringNotNullable, withDefault = false), OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf("com.intellij.platform.workspace.storage.SymbolicEntityId"))), withDefault = false)), supertypes = listOf("com.intellij.platform.workspace.storage.SymbolicEntityId"))), withDefault = false)), extProperties = listOf(ExtPropertyMetadata(isComputable = false, isOpen = false, name = "childrenFacets", receiverFqn = "com.intellij.platform.workspace.jps.entities.FacetEntity", valueType = ValueTypeMetadata.EntityReference(connectionType = ConnectionId.ConnectionType.ONE_TO_MANY, entityFqName = "com.intellij.platform.workspace.jps.entities.FacetEntity", isChild = true, isNullable = false), withDefault = false)), isAbstract = false) @@ -599,7 +599,7 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ExcludeUrlEntity", metadataHash = -827124331) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ExcludeUrlOrderEntity", metadataHash = -2115225774) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ExternalSystemModuleOptionsEntity", metadataHash = 1113105028) - addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.FacetEntity", metadataHash = 2025153625) + addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.FacetEntity", metadataHash = 1372939205) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.FacetsOrderEntity", metadataHash = 351485456) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryEntity", metadataHash = 856518134) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryPropertiesEntity", metadataHash = 242117557) @@ -618,7 +618,8 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryTableId\$ModuleLibraryTableId", metadataHash = -1817822292) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleId", metadataHash = -684863835) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryTableId\$ProjectLibraryTableId", metadataHash = -1574432194) - addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.FacetId", metadataHash = 126109331) + addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.FacetEntityTypeId", metadataHash = -963163377) + addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.FacetId", metadataHash = 1507367017) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryTypeId", metadataHash = 282033134) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryRoot", metadataHash = -909142712) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryRootTypeId", metadataHash = -389178127) @@ -635,7 +636,7 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.SdkRoot", metadataHash = 18907249) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.SdkRootTypeId", metadataHash = 1718825746) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.SourceRootTypeId", metadataHash = 619871016) - addMetadataHash(typeFqn = "com.intellij.platform.workspace.storage.SymbolicEntityId", metadataHash = 1426059948) + addMetadataHash(typeFqn = "com.intellij.platform.workspace.storage.SymbolicEntityId", metadataHash = 1670602672) addMetadataHash(typeFqn = "com.intellij.platform.workspace.storage.EntitySource", metadataHash = 1035119344) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.CustomModuleEntitySource", metadataHash = -826697445) addMetadataHash(typeFqn = "com.intellij.java.configurationStore.SampleDummyParentCustomModuleEntitySource", metadataHash = -1785529430) diff --git a/platform/workspace/jps/gen/com/intellij/platform/workspace/jps/entities/FacetEntityImpl.kt b/platform/workspace/jps/gen/com/intellij/platform/workspace/jps/entities/FacetEntityImpl.kt index 09c3d3b35024..235ee7576c97 100644 --- a/platform/workspace/jps/gen/com/intellij/platform/workspace/jps/entities/FacetEntityImpl.kt +++ b/platform/workspace/jps/gen/com/intellij/platform/workspace/jps/entities/FacetEntityImpl.kt @@ -1,7 +1,6 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.workspace.jps.entities -import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.EntityInformation import com.intellij.platform.workspace.storage.EntitySource import com.intellij.platform.workspace.storage.EntityType @@ -57,10 +56,10 @@ open class FacetEntityImpl(private val dataSource: FacetEntityData) : FacetEntit override val module: ModuleEntity get() = snapshot.extractOneToManyParent(MODULE_CONNECTION_ID, this)!! - override val facetType: String + override val typeId: FacetEntityTypeId get() { - readField("facetType") - return dataSource.facetType + readField("typeId") + return dataSource.typeId } override val configurationXmlTag: String? @@ -131,8 +130,8 @@ open class FacetEntityImpl(private val dataSource: FacetEntityData) : FacetEntit error("Field FacetEntity#module should be initialized") } } - if (!getEntityData().isFacetTypeInitialized()) { - error("Field FacetEntity#facetType should be initialized") + if (!getEntityData().isTypeIdInitialized()) { + error("Field FacetEntity#typeId should be initialized") } } @@ -146,7 +145,7 @@ open class FacetEntityImpl(private val dataSource: FacetEntityData) : FacetEntit if (this.entitySource != dataSource.entitySource) this.entitySource = dataSource.entitySource if (this.name != dataSource.name) this.name = dataSource.name if (this.moduleId != dataSource.moduleId) this.moduleId = dataSource.moduleId - if (this.facetType != dataSource.facetType) this.facetType = dataSource.facetType + if (this.typeId != dataSource.typeId) this.typeId = dataSource.typeId if (this.configurationXmlTag != dataSource?.configurationXmlTag) this.configurationXmlTag = dataSource.configurationXmlTag updateChildToParentReferences(parents) } @@ -217,12 +216,13 @@ open class FacetEntityImpl(private val dataSource: FacetEntityData) : FacetEntit changedProperty.add("module") } - override var facetType: String - get() = getEntityData().facetType + override var typeId: FacetEntityTypeId + get() = getEntityData().typeId set(value) { checkModificationAllowed() - getEntityData(true).facetType = value - changedProperty.add("facetType") + getEntityData(true).typeId = value + changedProperty.add("typeId") + } override var configurationXmlTag: String? @@ -279,12 +279,12 @@ open class FacetEntityImpl(private val dataSource: FacetEntityData) : FacetEntit class FacetEntityData : WorkspaceEntityData.WithCalculableSymbolicId(), SoftLinkable { lateinit var name: String lateinit var moduleId: ModuleId - lateinit var facetType: String + lateinit var typeId: FacetEntityTypeId var configurationXmlTag: String? = null internal fun isNameInitialized(): Boolean = ::name.isInitialized internal fun isModuleIdInitialized(): Boolean = ::moduleId.isInitialized - internal fun isFacetTypeInitialized(): Boolean = ::facetType.isInitialized + internal fun isTypeIdInitialized(): Boolean = ::typeId.isInitialized override fun getLinks(): Set> { val result = HashSet>() @@ -347,7 +347,7 @@ class FacetEntityData : WorkspaceEntityData.WithCalculableSymbolicId { - return FacetId(name, facetType, moduleId) + return FacetId(name, typeId, moduleId) } override fun getEntityInterface(): Class { @@ -361,7 +361,7 @@ class FacetEntityData : WorkspaceEntityData.WithCalculableSymbolicId): WorkspaceEntity { - return FacetEntity(name, moduleId, facetType, entitySource) { + return FacetEntity(name, moduleId, typeId, entitySource) { this.configurationXmlTag = this@FacetEntityData.configurationXmlTag parents.filterIsInstance().singleOrNull()?.let { this.module = it } this.underlyingFacet = parents.filterIsInstance().singleOrNull() @@ -383,7 +383,7 @@ class FacetEntityData : WorkspaceEntityData.WithCalculableSymbolicId( LIBRARY_CONNECTION_ID, @@ -55,7 +57,8 @@ open class LibraryPropertiesEntityImpl(private val dataSource: LibraryProperties } - class Builder(result: LibraryPropertiesEntityData?) : ModifiableWorkspaceEntityBase(result), LibraryPropertiesEntity.Builder { + class Builder(result: LibraryPropertiesEntityData?) : ModifiableWorkspaceEntityBase( + result), LibraryPropertiesEntity.Builder { constructor() : this(LibraryPropertiesEntityData()) override fun applyToBuilder(builder: MutableEntityStorage) { @@ -125,8 +128,8 @@ open class LibraryPropertiesEntityImpl(private val dataSource: LibraryProperties get() { val _diff = diff return if (_diff != null) { - _diff.extractOneToOneParent(LIBRARY_CONNECTION_ID, this) - ?: this.entityLinks[EntityLink(false, LIBRARY_CONNECTION_ID)]!! as LibraryEntity + _diff.extractOneToOneParent(LIBRARY_CONNECTION_ID, this) ?: this.entityLinks[EntityLink(false, + LIBRARY_CONNECTION_ID)]!! as LibraryEntity } else { this.entityLinks[EntityLink(false, LIBRARY_CONNECTION_ID)]!! as LibraryEntity @@ -192,7 +195,8 @@ class LibraryPropertiesEntityData : WorkspaceEntityData } override fun getMetadata(): EntityMetadata { - return MetadataStorageImpl.getMetadataByTypeFqn("com.intellij.platform.workspace.jps.entities.LibraryPropertiesEntity") as EntityMetadata + return MetadataStorageImpl.getMetadataByTypeFqn( + "com.intellij.platform.workspace.jps.entities.LibraryPropertiesEntity") as EntityMetadata } override fun getEntityInterface(): Class { diff --git a/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/facet.kt b/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/facet.kt index 449c317eedb9..c8ecd016099e 100644 --- a/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/facet.kt +++ b/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/facet.kt @@ -1,7 +1,6 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.workspace.jps.entities -import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.EntitySource import com.intellij.platform.workspace.storage.EntityType import com.intellij.platform.workspace.storage.GeneratedCodeApiVersion @@ -10,19 +9,21 @@ import com.intellij.platform.workspace.storage.WorkspaceEntity import com.intellij.platform.workspace.storage.annotations.Child import org.jetbrains.annotations.NonNls +data class FacetEntityTypeId(val name: @NonNls String) + /** * Describes a [Facet][com.intellij.facet.Facet]. * See [package documentation](psi_element://com.intellij.platform.workspace.jps.entities) for more details. */ interface FacetEntity: ModuleSettingsBase { val module: ModuleEntity - val facetType: @NonNls String + val typeId: FacetEntityTypeId val configurationXmlTag: @NonNls String? // underlyingFacet is a parent facet!! val underlyingFacet: FacetEntity? override val symbolicId: FacetId - get() = FacetId(name, facetType, moduleId) + get() = FacetId(name, typeId, moduleId) //region generated code @GeneratedCodeApiVersion(2) @@ -31,7 +32,7 @@ interface FacetEntity: ModuleSettingsBase { override var name: String override var moduleId: ModuleId override var module: ModuleEntity - override var facetType: String + override var typeId: FacetEntityTypeId override var configurationXmlTag: String? override var underlyingFacet: FacetEntity? } @@ -43,14 +44,14 @@ interface FacetEntity: ModuleSettingsBase { operator fun invoke( name: String, moduleId: ModuleId, - facetType: String, + typeId: FacetEntityTypeId, entitySource: EntitySource, init: (Builder.() -> Unit)? = null, ): FacetEntity { val builder = builder() builder.name = name builder.moduleId = moduleId - builder.facetType = facetType + builder.typeId = typeId builder.entitySource = entitySource init?.invoke(builder) return builder diff --git a/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/persistent_Id.kt b/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/persistent_Id.kt index f8f53e8448af..e6d154f39114 100644 --- a/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/persistent_Id.kt +++ b/platform/workspace/jps/src/com/intellij/platform/workspace/jps/entities/persistent_Id.kt @@ -20,7 +20,7 @@ data class ModuleId(val name: @NlsSafe String) : SymbolicEntityId override fun hashCode(): Int = name.hashCode() } -data class FacetId(val name: @NlsSafe String, val type: @NonNls String, val parentId: ModuleId) : SymbolicEntityId { +data class FacetId(val name: @NlsSafe String, val type: FacetEntityTypeId, val parentId: ModuleId) : SymbolicEntityId { override val presentableName: String get() = name } diff --git a/platform/workspace/jps/src/com/intellij/platform/workspace/jps/serialization/impl/DefaultFacetEntitySerializer.kt b/platform/workspace/jps/src/com/intellij/platform/workspace/jps/serialization/impl/DefaultFacetEntitySerializer.kt index 1661f6137e95..2ab90ec4787f 100644 --- a/platform/workspace/jps/src/com/intellij/platform/workspace/jps/serialization/impl/DefaultFacetEntitySerializer.kt +++ b/platform/workspace/jps/src/com/intellij/platform/workspace/jps/serialization/impl/DefaultFacetEntitySerializer.kt @@ -3,16 +3,16 @@ package com.intellij.platform.workspace.jps.serialization.impl import com.intellij.openapi.util.JDOMUtil import com.intellij.platform.workspace.jps.JpsImportedEntitySource -import com.intellij.platform.workspace.jps.entities.FacetEntity -import com.intellij.platform.workspace.jps.entities.FacetId -import com.intellij.platform.workspace.jps.entities.ModuleEntity -import com.intellij.platform.workspace.jps.entities.childrenFacets +import com.intellij.platform.workspace.jps.entities.* import com.intellij.platform.workspace.storage.EntitySource +import com.intellij.util.containers.ConcurrentFactoryMap import org.jdom.Element import org.jetbrains.jps.model.serialization.facet.FacetState import java.util.concurrent.ConcurrentHashMap import java.util.function.Function +private val facetEntityTypes = ConcurrentFactoryMap.createMap { FacetEntityTypeId(it) } + class DefaultFacetEntitySerializer: CustomFacetRelatedEntitySerializer { override val rootEntityType: Class get() = FacetEntity::class.java @@ -40,8 +40,9 @@ class DefaultFacetEntitySerializer: CustomFacetRelatedEntitySerializer""" module = moduleEntity } @@ -132,7 +135,7 @@ class FacetModelBridgeTest { val moduleEntity = builder addEntity ModuleEntity(name = "test", dependencies = emptyList(), entitySource = source) - builder addEntity FacetEntity("AnotherMockFacet", moduleEntity.symbolicId, "AnotherMockFacetId", source) { + builder addEntity FacetEntity("AnotherMockFacet", moduleEntity.symbolicId, FacetEntityTypeId("AnotherMockFacetId"), source) { configurationXmlTag = """ @@ -200,9 +203,9 @@ class FacetModelBridgeTest { runWriteActionAndWait { WorkspaceModel.getInstance(projectModel.project).updateProjectModel { builder -> val moduleEntity = builder.entities().first() - builder addEntity FacetEntity("myName", moduleEntity.symbolicId, "MockFacetId", moduleEntity.entitySource) { + builder addEntity FacetEntity("myName", moduleEntity.symbolicId, MOCK_FACET_TYPE_ID, moduleEntity.entitySource) { this.module = moduleEntity - underlyingFacet = FacetEntity("anotherName", moduleEntity.symbolicId, "MockFacetId", moduleEntity.entitySource) { + underlyingFacet = FacetEntity("anotherName", moduleEntity.symbolicId, MOCK_FACET_TYPE_ID, moduleEntity.entitySource) { this.module = moduleEntity } } diff --git a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/FacetWorkspaceModelTest.kt b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/FacetWorkspaceModelTest.kt index f17ed4f53652..65ef93f68461 100644 --- a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/FacetWorkspaceModelTest.kt +++ b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/FacetWorkspaceModelTest.kt @@ -59,7 +59,7 @@ class FacetWorkspaceModelTest { runWriteActionAndWait { projectModel.project.workspaceModel.updateProjectModel { builder -> val moduleEntity = builder.entities(ModuleEntity::class.java).first() - builder addEntity FacetEntity("myName", moduleEntity.symbolicId, "MockFacetId", moduleEntity.entitySource) { + builder addEntity FacetEntity("myName", moduleEntity.symbolicId, MOCK_FACET_TYPE_ID, moduleEntity.entitySource) { this.module = moduleEntity } } @@ -89,7 +89,7 @@ class FacetWorkspaceModelTest { val moduleEntity = builder.entities(ModuleEntity::class.java).first() Assert.assertTrue(moduleEntity.facets.isEmpty()) builder.modifyEntity(moduleEntity) { - this.facets = listOf(FacetEntity("myName", moduleEntity.symbolicId, "MockFacetId", moduleEntity.entitySource)) + this.facets = listOf(FacetEntity("myName", moduleEntity.symbolicId, MOCK_FACET_TYPE_ID, moduleEntity.entitySource)) } } } diff --git a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsProjectEntitiesLoaderTest.kt b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsProjectEntitiesLoaderTest.kt index 21bbad77cd50..e524d6f5dbe5 100644 --- a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsProjectEntitiesLoaderTest.kt +++ b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsProjectEntitiesLoaderTest.kt @@ -216,7 +216,7 @@ class JpsProjectEntitiesLoaderTest : HeavyPlatformTestCase() { val storage = loadProject(projectDir) val modules = storage.entities(ModuleEntity::class.java).associateBy { it.name } val single = modules.getValue("single").facets.single() - assertEquals("foo", single.facetType) + assertEquals("foo", single.typeId.name) assertEquals("Foo", single.name) assertEquals(""" diff --git a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsSplitModuleAndContentRootTest.kt b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsSplitModuleAndContentRootTest.kt index 6c868e25a47b..4e50127581e0 100644 --- a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsSplitModuleAndContentRootTest.kt +++ b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/impl/jps/serialization/JpsSplitModuleAndContentRootTest.kt @@ -576,7 +576,7 @@ class JpsSplitModuleAndContentRootTest { val mockFacetType = MockFacetType() registerFacetType(mockFacetType, projectModel.disposableRule.disposable) val moduleEntity = builder.entities(ModuleEntity::class.java).single() - builder addEntity FacetEntity("MyFacet", moduleEntity.symbolicId, MockFacetType.ID.toString(), + builder addEntity FacetEntity("MyFacet", moduleEntity.symbolicId, FacetEntityTypeId(MockFacetType.ID.toString()), getInternalFileSource(moduleEntity.entitySource)!!) { this.module = moduleEntity } diff --git a/plugins/kotlin/fir/src/org/jetbrains/kotlin/idea/fir/extensions/KtCompilerPluginsProviderIdeImpl.kt b/plugins/kotlin/fir/src/org/jetbrains/kotlin/idea/fir/extensions/KtCompilerPluginsProviderIdeImpl.kt index 8249691cc9c9..a2d8eebed39f 100644 --- a/plugins/kotlin/fir/src/org/jetbrains/kotlin/idea/fir/extensions/KtCompilerPluginsProviderIdeImpl.kt +++ b/plugins/kotlin/fir/src/org/jetbrains/kotlin/idea/fir/extensions/KtCompilerPluginsProviderIdeImpl.kt @@ -99,9 +99,9 @@ internal class KtCompilerPluginsProviderIdeImpl(private val project: Project, cs private val EntityChange.facetTypes: List get() = when (this) { - is EntityChange.Added -> listOf(entity.facetType) - is EntityChange.Removed -> listOf(entity.facetType) - is EntityChange.Replaced -> listOf(oldEntity.facetType, newEntity.facetType) + is EntityChange.Added -> listOf(entity.typeId.name) + is EntityChange.Removed -> listOf(entity.typeId.name) + is EntityChange.Replaced -> listOf(oldEntity.typeId.name, newEntity.typeId.name) } private fun createNewCache(): PluginsCache? {