encodeToByteArray() fails when applied with primitives
for example:
Avro.default.encodeToByteArray(String.serializer(), "foo"))
triggers
Exception in thread "main" kotlinx.serialization.SerializationException: Non-serializable class kotlin.String is not supported by class com.sksamuel.avro4k.encoder.RootRecordEncoder encoder
at kotlinx.serialization.encoding.AbstractEncoder.encodeValue(AbstractEncoder.kt:36)
at kotlinx.serialization.encoding.AbstractEncoder.encodeString(AbstractEncoder.kt:50)
at kotlinx.serialization.internal.StringSerializer.serialize(Primitives.kt:139)
at kotlinx.serialization.internal.StringSerializer.serialize(Primitives.kt:137)
at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:259)
at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18)
at com.sksamuel.avro4k.Avro.toRecord(Avro.kt:220)
at com.sksamuel.avro4k.Avro$openOutputStream$builder$1$1.invoke(Avro.kt:199)
at com.sksamuel.avro4k.Avro$openOutputStream$builder$1$1.invoke(Avro.kt:104)
at com.sksamuel.avro4k.io.AvroDataOutputStream.write(AvroDataOutputStream.kt:44)
at com.sksamuel.avro4k.Avro.encodeToByteArray(Avro.kt:179)
at io.infinitic.common.MainKt.main(main.kt:18)
I lost a few hours with this issue the other day! I tried to encode an enum class as a byte array and got an error of the form Non-serializable class kotlin.Int is not supported by class com.sksamuel.avro4k.encoder.RootRecordEncoder encoder. Would be great to fix this or at least improve the error message. I spent a long time thinking that I wasn't calling the right method to serialize my data...
See https://github.com/avro-kotlin/avro4k/issues/148
Currently WIP, will fixed available in next weeks
Closing this issue, as it will be covered by https://github.com/avro-kotlin/avro4k/issues/187