Description
ReflectData should always generate valid Avro schemas for Java classes. Currently, the name and namespace are taken from the Java class name, which can contain dollar signs. AVRO-2143 fixed this for the most common cases for nested classes.
It's still possible to generate namespaces with a dollar sign for classes that are nested more than one level. This can be observed in this unit test:
which generates
{ "type" : "record", "name" : "AnotherSampleRecord", "namespace" : "org.apache.avro.reflect.TestReflect$SampleRecord", "fields" : [ { "name" : "a", "type" : [ "null", "int" ], "default" : null }, { "name" : "s", "type" : [ "null", { "type" : "record", "name" : "SampleRecord", "namespace" : "org.apache.avro.reflect.TestReflect", "fields" : [ { "name" : "x", "type" : "int" }, { "name" : "y", "type" : "int" } ] } ], "default" : null } ] }