
com.avsystem.commons.kafka.SerdeRegistry.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of commons-kafka_2.12 Show documentation
Show all versions of commons-kafka_2.12 Show documentation
AVSystem commons library for Scala
The newest version!
package com.avsystem.commons
package kafka
import java.io.ByteArrayInputStream
import com.avsystem.commons.kafka.exceptions.UnsupportedVersionEvent
import com.avsystem.commons.serialization.GenCodec
class SerdeRegistry[T](codecs: Map[Byte, GenCodec[_ <: T]]) extends AbstractDeserializer[T] {
private val registry = codecs.mapValues(new CodecSerde(_))
override def deserialize(topic: String, data: Array[Byte]): T = {
val input = new ByteArrayInputStream(data)
val version = input.read()
if (version != -1) {
registry.get(version.toByte) match {
case Some(serde: CodecSerde[T]) => serde.deserialize(input)
case _ => throw new UnsupportedVersionEvent(s"Unsupported version ${data.head}, add proper serde to registry.")
}
} else {
throw new UnsupportedVersionEvent(s"Error during deserialization, end of the stream reached.")
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy