Skip to content

Commit 2a06c79

Browse files
authored
java compatibility fix (#33)
1 parent 8104735 commit 2a06c79

File tree

6 files changed

+14
-8
lines changed

6 files changed

+14
-8
lines changed

kaa/src/main/scala/com/davideicardi/kaa/avro/AvroSingleObjectEncoding.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ object AvroSingleObjectEncoding {
1111
* Note: this is not the same encoding using by Confluent Avro serializer.
1212
* Confluent Avro serializer uses 0x00 as magic byte and and id of 4 bytes (incremental? not an hash).
1313
*/
14-
val default : AvroSingleObjectEncoding = {
14+
val AVRO_OFFICIAL : AvroSingleObjectEncoding = {
1515
new AvroSingleObjectEncoding(
1616
Array(0xC3.toByte, 0x01.toByte),
1717
ByteOrder.LITTLE_ENDIAN,

kaa/src/main/scala/com/davideicardi/kaa/avro/AvroSingleObjectSerializer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.davideicardi.kaa.SchemaNotFoundException
77
class AvroSingleObjectSerializer[T >: Null : SchemaFor : Encoder : Decoder]
88
(
99
schemaRegistry: SchemaRegistry,
10-
encoding: AvroSingleObjectEncoding = AvroSingleObjectEncoding.default
10+
encoding: AvroSingleObjectEncoding = AvroSingleObjectEncoding.AVRO_OFFICIAL
1111
){
1212
private val binarySerializer = new AvroBinarySerializer[T]()
1313
private lazy val currentSchemaId = schemaRegistry.put(binarySerializer.currentSchema)

kaa/src/main/scala/com/davideicardi/kaa/avro/GenericAvroSingleObjectSerializer.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ import org.apache.avro.generic.GenericRecord
77
class GenericAvroSingleObjectSerializer
88
(
99
schemaRegistry: SchemaRegistry,
10-
encoding: AvroSingleObjectEncoding = AvroSingleObjectEncoding.default
10+
encoding: AvroSingleObjectEncoding,
1111
){
12+
def this(schemaRegistry: SchemaRegistry) = {
13+
this(schemaRegistry, AvroSingleObjectEncoding.AVRO_OFFICIAL)
14+
}
1215

1316
private val binarySerializer = new GenericAvroBinarySerializer()
1417

@@ -19,7 +22,10 @@ class GenericAvroSingleObjectSerializer
1922
encoding.encode(bytes, currentSchemaId)
2023
}
2124

22-
def deserialize(bytes: Array[Byte], readerSchema: Option[Schema] = None): GenericRecord = {
25+
def deserialize(bytes: Array[Byte]): GenericRecord = {
26+
deserialize(bytes, None)
27+
}
28+
def deserialize(bytes: Array[Byte], readerSchema: Option[Schema]): GenericRecord = {
2329
val (schemaId, serialized) = encoding.decode(bytes)
2430
val schema = schemaRegistry.get(schemaId)
2531
.getOrElse(throw new SchemaNotFoundException(s"Schema $schemaId not found in registry"))

kaa/src/test/scala/kaa/darwin/AvroSingleObjectSerializerSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class AvroSingleObjectSerializerSpec extends AnyFlatSpec with should.Matchers {
2828
it should "serialize a class with a single object encoding" in {
2929
val encoded = singleObjectSerializer.serialize(dragonite)
3030

31-
val (schemaId, bin) = AvroSingleObjectEncoding.default.decode(encoded)
31+
val (schemaId, bin) = AvroSingleObjectEncoding.AVRO_OFFICIAL.decode(encoded)
3232
val binarySerializer = new AvroBinarySerializer[Pokemon]
3333

3434
schemaId should be (AvroUtils.calcFingerprint(AvroSchema[Pokemon]))

kaa/src/test/scala/kaa/darwin/GenericAvroSingleObjectSerializerSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class GenericAvroSingleObjectSerializerSpec extends AnyFlatSpec with should.Matc
6868

6969
val encoded = singleObjectSerializer.serialize(record)
7070

71-
val (schemaId, bin) = AvroSingleObjectEncoding.default.decode(encoded)
71+
val (schemaId, bin) = AvroSingleObjectEncoding.AVRO_OFFICIAL.decode(encoded)
7272
val binarySerializer = new GenericAvroBinarySerializer
7373

7474
schemaId should be (AvroUtils.calcFingerprint(schemaV1))

sample/src/main/scala/sampleApp.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ object SampleApp {
2525
val bytesV2 = serializerV2.serialize(SuperheroV2("Spiderman", "Peter Parker"))
2626

2727
// v1 schema
28-
val (schemaIdv1, _) = AvroSingleObjectEncoding.default.decode(bytesV1)
28+
val (schemaIdv1, _) = AvroSingleObjectEncoding.AVRO_OFFICIAL.decode(bytesV1)
2929
println(s"v1 $schemaIdv1")
30-
val (schemaIdv2, _) = AvroSingleObjectEncoding.default.decode(bytesV2)
30+
val (schemaIdv2, _) = AvroSingleObjectEncoding.AVRO_OFFICIAL.decode(bytesV2)
3131
println(s"v2 $schemaIdv2")
3232

3333
// normal deserialization

0 commit comments

Comments
 (0)