Doug Cutting commented on AVRO-2143:

According to the spec, $ is not valid in namespaces.  It seems the Java 
implementation currently does not validate namespaces, so it is permitted in 
Java.  And, as you've discovered, it's currently required to handle reflection 
of nested classes.

So, currently schemas generated by Java from reflected nested classes might 
fail to be parsed by other implementations which might (correctly) not permit $ 
in namespaces.

I'll submit a pull request to fix this.

> ReflectData should determine inner class names in a different way.
> ------------------------------------------------------------------
>                 Key: AVRO-2143
>                 URL: https://issues.apache.org/jira/browse/AVRO-2143
>             Project: Avro
>          Issue Type: Improvement
>    Affects Versions: 1.7.7
>            Reporter: Miguel
>            Priority: Major
> I used ReflectData to generate schemas containing inner classes. These 
> classes were named automatically by ReflectData with dollar ('$'), with, for 
> example com.company.avro.House$Type. Nevertheless @AvroAlias does not support 
> aliases containing '$' in names. In particulr, it fails in validateName in 
> Schema core class. The failure is correct given that AVRO name specs does 
> notinclude the '$' symbol. 
> I suppose that ReflectData should, for example, generate inner class names in 
> a different way, such as replacing '$' by dots ('.'), or it should fail.
> And a detail: Although I cannot add aliases with '$', I can still encode and 
> decode such objects and inner classes using that schema. 
> I think that it newer versions it is also happening.

This message was sent by Atlassian JIRA

Reply via email to