julianpeeters / avrohugger

Generate Scala case class definitions from Avro schemas
Apache License 2.0
201 stars 120 forks source link

Generated case class does not compile due to missing constructor parameters #150

Open gintautassulskus-elsevier opened 3 years ago

gintautassulskus-elsevier commented 3 years ago

For the following Avro schema

{
  "type": "record",
  "name": "RecordName",
  "namespace": "some.namespace",
  "fields": [
    {
      "name": "parentField",
      "type": {
        "type": "record",
        "name": "RecordName2",
        "fields": [
          {
            "name": "recordField1",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "recordField2",
            "type": [
              "null",
              "string"
            ],
            "default": null
          }
        ]
      },
      "default": {}
    }
  ]
}

avrohugger generates an invalid case classRecordName that tries to instantiate RecordName2 with no parameters.

final case class RecordName(var parentField: RecordName2 = new RecordName2(, )) extends org.apache.avro.specific.SpecificRecordBase {
  def this() = this(new RecordName2(, ))

The generator seems to work fine if either recordField1 or recordField2 is removed and/or "default": {}.