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
>>>>>
>>>>

Reply via email to