update exposed and adapt to new version of kotlin serialization

This commit is contained in:
2021-12-28 21:16:34 +06:00
parent d45aef9fe5
commit f4ee6c2890
5 changed files with 19 additions and 15 deletions

View File

@@ -11,8 +11,7 @@ open class TypedSerializer<T : Any>(
presetSerializers: Map<String, KSerializer<out T>> = emptyMap(),
) : KSerializer<T> {
protected val serializers = presetSerializers.toMutableMap()
@ExperimentalSerializationApi
@InternalSerializationApi
@OptIn(InternalSerializationApi::class)
override val descriptor: SerialDescriptor = buildSerialDescriptor(
"TypedSerializer",
SerialKind.CONTEXTUAL
@@ -21,8 +20,7 @@ open class TypedSerializer<T : Any>(
element("value", ContextualSerializer(kClass).descriptor)
}
@ExperimentalSerializationApi
@InternalSerializationApi
@OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
override fun deserialize(decoder: Decoder): T {
return decoder.decodeStructure(descriptor) {
var type: String? = null
@@ -46,14 +44,12 @@ open class TypedSerializer<T : Any>(
}
}
@ExperimentalSerializationApi
@InternalSerializationApi
@OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
protected open fun <O: T> CompositeEncoder.encode(value: O) {
encodeSerializableElement(descriptor, 1, value::class.serializer() as KSerializer<O>, value)
}
@ExperimentalSerializationApi
@InternalSerializationApi
@OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
override fun serialize(encoder: Encoder, value: T) {
encoder.encodeStructure(descriptor) {
val valueSerializer = value::class.serializer()