[KPM] KotlinExternalModelContainer: Provide ids API

KT-51262
KT-51220
This commit is contained in:
sebastian.sellmair
2022-02-14 15:58:14 +01:00
committed by Space
parent cf1ffb9cf6
commit 2dfb3f61d8
2 changed files with 8 additions and 0 deletions
@@ -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<KotlinExternalModelId<*>>
abstract operator fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean
abstract operator fun <T : Any> get(key: KotlinExternalModelKey<T>): T?
fun <T : Any> getOrThrow(key: KotlinExternalModelKey<T>): T = get(key)
@@ -20,6 +21,7 @@ abstract class KotlinExternalModelContainer internal constructor() : Serializabl
}
object Empty : KotlinExternalModelContainer() {
override val ids: Set<KotlinExternalModelId<*>> = emptySet()
override fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean = false
override fun <T : Any> get(key: KotlinExternalModelKey<T>): T? = null
}
@@ -11,6 +11,9 @@ import java.io.Serializable
internal class KotlinMutableExternalModelContainerImpl : KotlinMutableExternalModelContainer(), Serializable {
private val values = mutableMapOf<KotlinExternalModelKey<*>, Any>()
override val ids: Set<KotlinExternalModelId<*>>
@Synchronized get() = values.keys.map { it.id }.toSet()
@Synchronized
override fun <T : Any> set(key: KotlinExternalModelKey<T>, value: T) {
values[key] = value
@@ -47,6 +50,9 @@ private class SerializedKotlinExternalModelContainer(
private val deserializedValues = mutableMapOf<KotlinExternalModelId<*>, Any>()
override val ids: Set<KotlinExternalModelId<*>>
@Synchronized get() = serializedValues.keys + deserializedValues.keys
@Synchronized
override fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean {
return key.id in deserializedValues || key.id in serializedValues