From 2dfb3f61d88a21f2d227acd5c857c32f145f43b5 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 14 Feb 2022 15:58:14 +0100 Subject: [PATCH] [KPM] KotlinExternalModelContainer: Provide ids API KT-51262 KT-51220 --- .../kotlin/gradle/kpm/KotlinExternalModelContainer.kt | 2 ++ .../kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt index 03ca4cd9d42..a34b8eaeb5f 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi import java.io.Serializable abstract class KotlinExternalModelContainer internal constructor() : Serializable { + abstract val ids: Set> abstract operator fun contains(key: KotlinExternalModelKey): Boolean abstract operator fun get(key: KotlinExternalModelKey): T? fun getOrThrow(key: KotlinExternalModelKey): T = get(key) @@ -20,6 +21,7 @@ abstract class KotlinExternalModelContainer internal constructor() : Serializabl } object Empty : KotlinExternalModelContainer() { + override val ids: Set> = emptySet() override fun contains(key: KotlinExternalModelKey): Boolean = false override fun get(key: KotlinExternalModelKey): T? = null } diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt index 5c527e4a401..76f75cde962 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt @@ -11,6 +11,9 @@ import java.io.Serializable internal class KotlinMutableExternalModelContainerImpl : KotlinMutableExternalModelContainer(), Serializable { private val values = mutableMapOf, Any>() + override val ids: Set> + @Synchronized get() = values.keys.map { it.id }.toSet() + @Synchronized override fun set(key: KotlinExternalModelKey, value: T) { values[key] = value @@ -47,6 +50,9 @@ private class SerializedKotlinExternalModelContainer( private val deserializedValues = mutableMapOf, Any>() + override val ids: Set> + @Synchronized get() = serializedValues.keys + deserializedValues.keys + @Synchronized override fun contains(key: KotlinExternalModelKey): Boolean { return key.id in deserializedValues || key.id in serializedValues