Search code examples
javajacksonavrouuid

Serialization of UUID to string in Jackson Avro > 2.11.0


I have object with UUID property and I want to serialize it to String in Avro schema. Jackson 2.11 introduced fix to serialize UUIDs more effectively and since then I am getting

Caused by: java.lang.ClassCastException: class [B cannot be cast to class java.lang.CharSequence ([B and java.lang.CharSequence are in module java.base of loader 'bootstrap')
    at org.apache.avro.generic.GenericDatumWriter.writeString(GenericDatumWriter.java:323)
    at org.apache.avro.generic.GenericDatumWriter.writeString(GenericDatumWriter.java:315)
    at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:150)
    at com.fasterxml.jackson.dataformat.avro.ser.NonBSGenericDatumWriter.write(NonBSGenericDatumWriter.java:123)
    at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:206)
    at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:195)
    at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:130)
    at com.fasterxml.jackson.dataformat.avro.ser.NonBSGenericDatumWriter.write(NonBSGenericDatumWriter.java:123)
    at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
    at com.fasterxml.jackson.dataformat.avro.ser.RootContext.complete(RootContext.java:122)
    at com.fasterxml.jackson.dataformat.avro.AvroGenerator._complete(AvroGenerator.java:621)
    at com.fasterxml.jackson.dataformat.avro.AvroGenerator.writeEndObject(AvroGenerator.java:410)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:180)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)

Is there any way to switch to previous behavior? We do not want to change Avro schema just to be able to upgrade Jackson.


Solution

  • It is actually a bug fixed here https://github.com/FasterXML/jackson-databind/issues/2815