That did it! I tried something similar at one point, but I must have left off the 'T' in "new SpecificDatumReader<T>" and that resulted in a GenericRecord instead of T.
Thanks for your help! On Mon, Apr 19, 2021 at 5:58 PM Scott Reynolds <[email protected]> wrote: > > This code below returns type T and uses SpecificDatumReader<T>. > > final BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(...); > final DatumReader<T> datumReader = new SpecificDatumReader<T>(v2Schema, > v1Schema); > try { > final T record = datumReader.read(null, decoder); > return record; > } catch (java.io.IOException ioe) { > // Handle it > } > > On Mon, Apr 19, 2021 at 4:30 PM Stephen Kittelson < > [email protected]> wrote: > >> Let's say I used avro-tools to generate code for v2 of "mySchema", and a >> message comes on a queue that was written with v1 of "mySchema". If I >> understand right, the best way to handle the situation is to realize that >> the message was written with v1 of "mySchema", get the v1 schema using a >> schema registry, and deserialize the message using v1. >> >> At this point, is it at all possible to somehow convert the resulting >> objects into the corresponding fields and objects from the avro-tools >> generated code for v2? >> >> So far, it looks like the only way to handle the message results in a >> "GenericRecord" which requires string keys to access the values of the >> fields. I'd much prefer to use the generated code for v2 and turn any typos >> into compile errors instead of runtime errors, know the data type of the >> value while coding, and avoid setting up a bunch of enums to contain the >> string keys. >> >> I also asked this on StackOverflow: >> https://stackoverflow.com/questions/67170438/how-to-convert-an-avro-message-deserialized-with-an-older-version-of-the-schema >> <https://urldefense.com/v3/__https://stackoverflow.com/questions/67170438/how-to-convert-an-avro-message-deserialized-with-an-older-version-of-the-schema__;!!NCc8flgU!MEeZAEsURGjKdqMhk5sA6zxMvb16BTwHvOnHY2fSmdNueabHsiG7syKxaa_0rm6I$> >> >> -- >> Stephen >> >
