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