avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Prajwal Tuladhar <p...@infynyxx.com>
Subject Re: Java code generation for nested non-optional records
Date Fri, 21 Aug 2015 15:28:49 GMT
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 <tkanstren@gmail.com> 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

Mime
View raw message