avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Teemu Kanstrén <tkanst...@gmail.com>
Subject Java code generation for nested non-optional records
Date Fri, 21 Aug 2015 15:00:20 GMT
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

Mime
View raw message