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