strategy.KotlinxDataClassStrategy.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of avro-kotlin-serialization Show documentation
Show all versions of avro-kotlin-serialization Show documentation
Using kotlinx-serialization to encode/decode kotlin to avro.
The newest version!
package io.toolisticon.kotlin.avro.serialization.strategy
import io.toolisticon.kotlin.avro.serialization.AvroKotlinSerialization
import io.toolisticon.kotlin.avro.serialization.isKotlinxDataClass
import org.apache.avro.generic.GenericRecord
import kotlin.reflect.KClass
class KotlinxDataClassStrategy(
private val avroKotlinSerialization: AvroKotlinSerialization
) : GenericRecordSerializationStrategy {
override fun test(serializedType: KClass<*>): Boolean = serializedType.isKotlinxDataClass()
@Suppress("UNCHECKED_CAST")
override fun deserialize(serializedType: KClass<*>, data: GenericRecord): T {
return avroKotlinSerialization.avro4kGenericRecordCodec.decoder(serializedType).decode(data) as T
}
override fun serialize(data: T): GenericRecord {
return avroKotlinSerialization.avro4kGenericRecordCodec.encoder().encode(data)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy