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
>

Reply via email to