Thank you for your explanation, much appreciated. I ended up with one record type schema and one enum type schema, and combined them with union. Cheers!
On Thu, 3 Apr 2025, 09:10 Martin Grigorov, <[email protected]> wrote: > Class fields are mapped to Record schema fields. > To be able to set values you need an instance of the type, i. e. a class > field. > > On Wed, 2 Apr 2025 at 12:20, Bagi <[email protected]> wrote: > >> Just wanted to add that the Java reflection is able to fetch the enum >> like in the example I posted earlier: >> >> Class<?> myClass = AvroTest.class; >> Class<?>[] declaredClasses = myClass.getDeclaredClasses(); >> >> Then loop through declaredClasses, check if its 'isEnum()', if yes - >> 'getName()' and 'getEnumConstants()' to get name and values. >> >> Regards, Bagi >> >> On Wed, 2 Apr 2025, 09:31 Bagi, <[email protected]> wrote: >> >>> Hi Martin, >>> >>> Many thanks for your reply. I am not saying it's behaving incorrectly, >>> just trying to find a way to have the enum shown in the schema. I have >>> class like that, where there is enum defined but not the field with its >>> type. I only just started with Avro and wanted to check if that is >>> possible. Right now, my schema is incomplete. >>> >>> Regards, Bagi >>> >>> On Wed, 2 Apr 2025, 07:22 Martin Grigorov, <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> IMO it behaves correctly! >>>> >>>> AvroTest class is mapped to a Record schema and its class fields are >>>> mapped to record fields. >>>> >>>> What kind of schema do you expect to be generated without the fields? >>>> >>>> On Tue, 1 Apr 2025 at 13:07, Bagi <[email protected]> wrote: >>>> >>>>> Hi, >>>>> >>>>> Newb here. Having an issue with generating the schema when there is an >>>>> enum at the top of the tree. Using Avro 1.12.0, I am trying to generate >>>>> .avsc file from Java class file, using the following command: >>>>> ReflectData.get().getSchema(AvroTest.class); >>>>> >>>>> Here is the AvroTest.java: >>>>> public class AvroTest { >>>>> public enum MyEnum { >>>>> ENONE, ENTWO, ENTHREE; >>>>> } >>>>> } >>>>> >>>>> The ReflectData is ignoring this enum. Workaround is to add field with >>>>> that enum to the class, ie. >>>>> private MyEnum myEnum; >>>>> >>>>> Is there any other way to force the enum to be added to the generated >>>>> schema? Perhaps something similar to @AvroName annotation but for enums? >>>>> >>>>> Regards, Bagi >>>>> >>>>
