[KPM] KotlinExternalModelContainer: Provide ids API
KT-51262 KT-51220
This commit is contained in:
committed by
Space
parent
cf1ffb9cf6
commit
2dfb3f61d8
+2
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
|
|||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
abstract class KotlinExternalModelContainer internal constructor() : 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> contains(key: KotlinExternalModelKey<T>): Boolean
|
||||||
abstract operator fun <T : Any> get(key: KotlinExternalModelKey<T>): T?
|
abstract operator fun <T : Any> get(key: KotlinExternalModelKey<T>): T?
|
||||||
fun <T : Any> getOrThrow(key: KotlinExternalModelKey<T>): T = get(key)
|
fun <T : Any> getOrThrow(key: KotlinExternalModelKey<T>): T = get(key)
|
||||||
@@ -20,6 +21,7 @@ abstract class KotlinExternalModelContainer internal constructor() : Serializabl
|
|||||||
}
|
}
|
||||||
|
|
||||||
object Empty : KotlinExternalModelContainer() {
|
object Empty : KotlinExternalModelContainer() {
|
||||||
|
override val ids: Set<KotlinExternalModelId<*>> = emptySet()
|
||||||
override fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean = false
|
override fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean = false
|
||||||
override fun <T : Any> get(key: KotlinExternalModelKey<T>): T? = null
|
override fun <T : Any> get(key: KotlinExternalModelKey<T>): T? = null
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -11,6 +11,9 @@ import java.io.Serializable
|
|||||||
internal class KotlinMutableExternalModelContainerImpl : KotlinMutableExternalModelContainer(), Serializable {
|
internal class KotlinMutableExternalModelContainerImpl : KotlinMutableExternalModelContainer(), Serializable {
|
||||||
private val values = mutableMapOf<KotlinExternalModelKey<*>, Any>()
|
private val values = mutableMapOf<KotlinExternalModelKey<*>, Any>()
|
||||||
|
|
||||||
|
override val ids: Set<KotlinExternalModelId<*>>
|
||||||
|
@Synchronized get() = values.keys.map { it.id }.toSet()
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
override fun <T : Any> set(key: KotlinExternalModelKey<T>, value: T) {
|
override fun <T : Any> set(key: KotlinExternalModelKey<T>, value: T) {
|
||||||
values[key] = value
|
values[key] = value
|
||||||
@@ -47,6 +50,9 @@ private class SerializedKotlinExternalModelContainer(
|
|||||||
|
|
||||||
private val deserializedValues = mutableMapOf<KotlinExternalModelId<*>, Any>()
|
private val deserializedValues = mutableMapOf<KotlinExternalModelId<*>, Any>()
|
||||||
|
|
||||||
|
override val ids: Set<KotlinExternalModelId<*>>
|
||||||
|
@Synchronized get() = serializedValues.keys + deserializedValues.keys
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
override fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean {
|
override fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean {
|
||||||
return key.id in deserializedValues || key.id in serializedValues
|
return key.id in deserializedValues || key.id in serializedValues
|
||||||
|
|||||||
Reference in New Issue
Block a user