From f6f1d78dcd10ee7982d27972c3fcb34ce458eccb Mon Sep 17 00:00:00 2001 From: Rustam Vishniakov Date: Fri, 10 May 2024 18:14:35 +0200 Subject: [PATCH] [json-settings] Use generated JsonSettingsModel in the test GitOrigin-RevId: 1d292ce985896b2f54fe1fbee198b48159e591de --- platform/platform-impl/api-dump-unreviewed.txt | 17 ++++++++++------- .../ide/settings/json/JsonSettingsModel.kt | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/platform/platform-impl/api-dump-unreviewed.txt b/platform/platform-impl/api-dump-unreviewed.txt index 5a34220f1730..874d3b23fc2a 100644 --- a/platform/platform-impl/api-dump-unreviewed.txt +++ b/platform/platform-impl/api-dump-unreviewed.txt @@ -8925,6 +8925,7 @@ f:com.intellij.ide.projectWizard.NewProjectWizardConstants$Language *f:com.intellij.ide.settings.json.JsonSettingsModel - *sf:Companion:com.intellij.ide.settings.json.JsonSettingsModel$Companion - (java.util.Map):V +- f:getPluginId(java.lang.String,java.lang.String):java.lang.String - f:getPropertyMap():java.util.Map *f:com.intellij.ide.settings.json.JsonSettingsModel$Companion - f:componentToSettingsModel(com.intellij.ide.settings.json.JsonSettingsModel$ComponentModel):com.intellij.ide.settings.json.JsonSettingsModel @@ -9013,20 +9014,22 @@ f:com.intellij.ide.projectWizard.NewProjectWizardConstants$Language *f:com.intellij.ide.settings.json.JsonSettingsModel$ComponentPropertyInfo$Companion - f:serializer():kotlinx.serialization.KSerializer *f:com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor -- (java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List):V -- b:(java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List,I,kotlin.jvm.internal.DefaultConstructorMarker):V +- (java.lang.String,java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List):V +- b:(java.lang.String,java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List,I,kotlin.jvm.internal.DefaultConstructorMarker):V - f:component1():java.lang.String - f:component2():java.lang.String -- f:component3():com.intellij.ide.settings.json.JsonSettingsModel$PropertyType -- f:component4():java.lang.String +- f:component3():java.lang.String +- f:component4():com.intellij.ide.settings.json.JsonSettingsModel$PropertyType - f:component5():java.lang.String -- f:component6():java.util.List -- f:copy(java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List):com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor -- bs:copy$default(com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor,java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List,I,java.lang.Object):com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor +- f:component6():java.lang.String +- f:component7():java.util.List +- f:copy(java.lang.String,java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List):com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor +- bs:copy$default(com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor,java.lang.String,java.lang.String,java.lang.String,com.intellij.ide.settings.json.JsonSettingsModel$PropertyType,java.lang.String,java.lang.String,java.util.List,I,java.lang.Object):com.intellij.ide.settings.json.JsonSettingsModel$PropertyDescriptor - equals(java.lang.Object):Z - f:getComponentName():java.lang.String - f:getMapTo():java.lang.String - f:getName():java.lang.String +- f:getPluginId():java.lang.String - f:getStorage():java.lang.String - f:getType():com.intellij.ide.settings.json.JsonSettingsModel$PropertyType - f:getVariants():java.util.List diff --git a/platform/platform-impl/src/com/intellij/ide/settings/json/JsonSettingsModel.kt b/platform/platform-impl/src/com/intellij/ide/settings/json/JsonSettingsModel.kt index 7661365187d8..ec4791fb6034 100644 --- a/platform/platform-impl/src/com/intellij/ide/settings/json/JsonSettingsModel.kt +++ b/platform/platform-impl/src/com/intellij/ide/settings/json/JsonSettingsModel.kt @@ -16,6 +16,13 @@ private val logger = logger() @ApiStatus.Experimental class JsonSettingsModel(val propertyMap: Map) { + private val propertyPluginIdMap: Map by lazy { + propertyMap.values.filter { it.pluginId != "com.intellij" }.mapNotNull { property -> + property.pluginId?.let { "${property.componentName}.${property.name}" to it } + }.toMap() + } + + /** * Supported property types. */ @@ -63,6 +70,7 @@ class JsonSettingsModel(val propertyMap: Map) { ) data class PropertyDescriptor ( + val pluginId: String?, val componentName: String, val name: String, val type: PropertyType, @@ -82,6 +90,13 @@ class JsonSettingsModel(val propertyMap: Map) { val properties: List = emptyList() ) + /** + * @return Real production Plugin ID instead of "com.intellij" when the IDE is launched in debug or test mode. Not to be used in + * production. + */ + @VisibleForTesting + fun getPluginId(componentName: String, propertyName: String): String? = propertyPluginIdMap["${componentName}.${propertyName}"] + companion object { val instance: JsonSettingsModel by lazy { componentToSettingsModel(loadFromJson()) } @@ -109,7 +124,7 @@ class JsonSettingsModel(val propertyMap: Map) { private fun jsonDataToPropertyDescriptor(componentInfo: ComponentInfo, propertyInfo: ComponentPropertyInfo): PropertyDescriptor? { return if (componentInfo.name != null && componentInfo.storage != null) { - PropertyDescriptor(componentInfo.name, propertyInfo.name, propertyInfo.type, componentInfo.storage, + PropertyDescriptor(componentInfo.pluginId, componentInfo.name, propertyInfo.name, propertyInfo.type, componentInfo.storage, propertyInfo.mapTo ?: propertyInfo.name, propertyInfo.variants) } else null