Thanks! This works. So it was the extra [] left over from the optional definition.
These schemas keep confusing me with all the combinations and braces.. :) On 21 August 2015 at 18:28, Prajwal Tuladhar <[email protected]> wrote: > How about? > > { > "namespace": "avrò.test", > "type": "record", > "name": "TopObj", > "fields": [ > { > "name": "inner1", > "type": { > "name": "Inner1", > "type": "record", > "fields": [ > { > "name": "value1", > "type": "string" > }, > { > "name": "value2", > "type": "string" > } > ] > } > }, > { > "name": "inner2", > "type": [ > { > "type": "record", > "name": "Inner2", > "fields": [ > { > "name": "value3", > "type": "string" > }, > { > "name": "value4", > "type": "string" > } > ] > }, > "null" > ] > } > ] > } > > > On Fri, Aug 21, 2015 at 3:00 PM, Teemu Kanstrén <[email protected]> > wrote: > >> Hello all, >> >> I am using the Maven Avro compiler to generate Java code for my Avro >> schemas. Problem. If I have a nested record which is optional, everything >> generates OK. If the type is not optional, the generated reference is set >> to generic Object type and I cannot use it. What might I be doing wrong? >> >> Example schema: >> >> { >> "namespace": "avro.test", >> "type": "record", >> "name": "TopObj", >> "fields": [ >> {"name": "inner1", "type": [ >> {"type": "record", "name": "Inner1", >> "fields": [ >> {"name": "value1", "type": "string"}, >> {"name": "value2", "type": "string"} >> ] >> }] >> }, >> {"name": "inner2", "type": [ >> {"type": "record", "name": "Inner2", >> "fields": [ >> {"name": "value3", "type": "string"}, >> {"name": "value4", "type": "string"} >> ] >> }, "null"] >> } >> ] >> } >> >> Running the Avro Java code generator for this produces three classes as >> expected: TopObj, Inner1 and Inner2. However, in TopObject, the definitions >> are as: >> >> @Deprecated public java.lang.Object inner1; >> @Deprecated public avro.test.Inner2 inner2; >> >> If I set inner1 as optional (add the , "null" to it) the type also becomes >> Inner1 in TopObj, which is as I would expect. But I do not want it to be >> optional. >> >> How do I get inner1 to generate as type Inner1 in TopObj? >> >> Cheers & thanks, >> >> Teemu >> >> > > > -- > -- > Cheers, > Praj >
