From 040dd517d87fb9045130ba81e421ecfea6d553fa Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 15 Apr 2021 14:30:45 +0600 Subject: [PATCH] hotfixes --- .../typed_serializer/TypedSerializer.kt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/serialization/typed_serializer/src/commonMain/kotlin/dev/inmo/micro_utils/serialization/typed_serializer/TypedSerializer.kt b/serialization/typed_serializer/src/commonMain/kotlin/dev/inmo/micro_utils/serialization/typed_serializer/TypedSerializer.kt index 02a486a957e..d1f75914f4c 100644 --- a/serialization/typed_serializer/src/commonMain/kotlin/dev/inmo/micro_utils/serialization/typed_serializer/TypedSerializer.kt +++ b/serialization/typed_serializer/src/commonMain/kotlin/dev/inmo/micro_utils/serialization/typed_serializer/TypedSerializer.kt @@ -6,13 +6,13 @@ import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.* import kotlin.reflect.KClass -class TypedSerializer( +open class TypedSerializer( kClass: KClass, presetSerializers: Map> = emptyMap() ) : KSerializer { - private val serializers = presetSerializers.toMutableMap() + protected val serializers = presetSerializers.toMutableMap() @InternalSerializationApi - override val descriptor: SerialDescriptor = buildSerialDescriptor( + override open val descriptor: SerialDescriptor = buildSerialDescriptor( "TextSourceSerializer", SerialKind.CONTEXTUAL ) { @@ -21,7 +21,7 @@ class TypedSerializer( } @InternalSerializationApi - override fun deserialize(decoder: Decoder): T { + override open fun deserialize(decoder: Decoder): T { return decoder.decodeStructure(descriptor) { var type: String? = null lateinit var result: T @@ -45,12 +45,12 @@ class TypedSerializer( } @InternalSerializationApi - private fun CompositeEncoder.encode(value: O) { + protected open fun CompositeEncoder.encode(value: O) { encodeSerializableElement(descriptor, 1, value::class.serializer() as KSerializer, value) } @InternalSerializationApi - override fun serialize(encoder: Encoder, value: T) { + override open fun serialize(encoder: Encoder, value: T) { encoder.encodeStructure(descriptor) { val valueSerializer = value::class.serializer() val type = serializers.keys.first { serializers[it] == valueSerializer } @@ -60,13 +60,11 @@ class TypedSerializer( } - fun include(type: String, serializer: KSerializer) { - require(type !in serializers.keys) + open fun include(type: String, serializer: KSerializer) { serializers[type] = serializer } - fun exclude(type: String) { - require(type !in serializers.keys) + open fun exclude(type: String) { serializers.remove(type) } }