All Downloads are FREE. Search and download functionalities are using the official Maven repository.

strategy.KotlinxDataClassStrategy.kt Maven / Gradle / Ivy

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