[json-settings] Add JsonSettingsModel JavaDoc, mark test-only classes and methods

GitOrigin-RevId: cb9b06b6d2c060bf96b6dad5aa9b1aa5ce4f439c
This commit is contained in:
Rustam Vishniakov
2024-05-08 12:08:23 +02:00
committed by intellij-monorepo-bot
parent 7b62ddb124
commit f4b1e85e0a
3 changed files with 18 additions and 25 deletions

View File

@@ -9094,28 +9094,6 @@ f:com.intellij.ide.settings.json.JsonSettingsModel$VariantInfo$$serializer
- typeParametersSerializers():kotlinx.serialization.KSerializer[]
f:com.intellij.ide.settings.json.JsonSettingsModel$VariantInfo$Companion
- f:serializer():kotlinx.serialization.KSerializer
f:com.intellij.ide.settings.json.JsonSettingsModel$WhiteList
- sf:Companion:com.intellij.ide.settings.json.JsonSettingsModel$WhiteList$Companion
- <init>():V
- <init>(java.util.List):V
- b:<init>(java.util.List,I,kotlin.jvm.internal.DefaultConstructorMarker):V
- f:component1():java.util.List
- f:copy(java.util.List):com.intellij.ide.settings.json.JsonSettingsModel$WhiteList
- bs:copy$default(com.intellij.ide.settings.json.JsonSettingsModel$WhiteList,java.util.List,I,java.lang.Object):com.intellij.ide.settings.json.JsonSettingsModel$WhiteList
- equals(java.lang.Object):Z
- f:getProperties():java.util.List
- hashCode():I
- toString():java.lang.String
f:com.intellij.ide.settings.json.JsonSettingsModel$WhiteList$$serializer
- kotlinx.serialization.internal.GeneratedSerializer
- sf:INSTANCE:com.intellij.ide.settings.json.JsonSettingsModel$WhiteList$$serializer
- childSerializers():kotlinx.serialization.KSerializer[]
- deserialize(kotlinx.serialization.encoding.Decoder):com.intellij.ide.settings.json.JsonSettingsModel$WhiteList
- getDescriptor():kotlinx.serialization.descriptors.SerialDescriptor
- serialize(kotlinx.serialization.encoding.Encoder,com.intellij.ide.settings.json.JsonSettingsModel$WhiteList):V
- typeParametersSerializers():kotlinx.serialization.KSerializer[]
f:com.intellij.ide.settings.json.JsonSettingsModel$WhiteList$Companion
- f:serializer():kotlinx.serialization.KSerializer
f:com.intellij.ide.settings.json.SettingsInspectorKt
- sf:buildComponentModel():com.intellij.ide.settings.json.JsonSettingsModel$ComponentModel
f:com.intellij.ide.startup.ServiceNotReadyException

View File

@@ -4,12 +4,19 @@ package com.intellij.ide.settings.json
import com.intellij.openapi.diagnostic.logger
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import org.jetbrains.annotations.VisibleForTesting
private val logger = logger<JsonSettingsModel>()
/**
* Contains supported settings which are publicly available to end users and can be edited without UI using only Json schema.
* See [Json Settings](https://youtrack.jetbrains.com/articles/IDEA-A-2100661939/Json-Settings)
*/
class JsonSettingsModel(val propertyMap: Map<String, PropertyDescriptor>) {
/**
* Supported property types.
*/
enum class PropertyType {
Boolean,
Integer,
@@ -20,11 +27,16 @@ class JsonSettingsModel(val propertyMap: Map<String, PropertyDescriptor>) {
Unsupported
}
/**
* Contains a pregenerated raw list of Persistent State Components converted to JsonSettingsModel.
*/
@VisibleForTesting
@Serializable
data class ComponentModel (
val components: List<ComponentInfo> = emptyList()
)
@VisibleForTesting
@Serializable
data class ComponentInfo (
val name: String?,
@@ -38,6 +50,7 @@ class JsonSettingsModel(val propertyMap: Map<String, PropertyDescriptor>) {
if (name != null && pluginId != null) "${pluginId}:${scope}:${name}" else null
}
@VisibleForTesting
@Serializable
data class ComponentPropertyInfo (
val name: String,
@@ -63,7 +76,7 @@ class JsonSettingsModel(val propertyMap: Map<String, PropertyDescriptor>) {
)
@Serializable
data class WhiteList (
internal class WhiteList (
val properties: List<String> = emptyList()
)
@@ -77,6 +90,7 @@ class JsonSettingsModel(val propertyMap: Map<String, PropertyDescriptor>) {
} ?: ComponentModel()
}
@VisibleForTesting
fun componentToSettingsModel(componentModel: ComponentModel): JsonSettingsModel {
val propertyMap = mutableMapOf<String, PropertyDescriptor>()
val filteredModel = filterSettings(componentModel)

View File

@@ -8,10 +8,11 @@ import com.intellij.openapi.extensions.PluginDescriptor
import com.intellij.serialization.MutableAccessor
import com.intellij.serviceContainer.ComponentManagerImpl
import com.intellij.util.xmlb.getBeanAccessors
import org.jetbrains.annotations.VisibleForTesting
import java.util.*
import java.util.function.IntPredicate
@VisibleForTesting
fun buildComponentModel(): JsonSettingsModel.ComponentModel =
JsonSettingsModel.ComponentModel(listAppComponents().map { descriptor ->
JsonSettingsModel.ComponentInfo(