Генерация класса в scala из схемы avro

пытаюсь создать классы с помощью avrohugger(https://github.com/julianpeeters/avrohugger#description). Вот моя схема:

      {
  "name": "test1",
  "namespace": "test.testaero",
  "type": "map",
  "values": [
    {
      "type": "map",
      "values": [
        "boolean",
        {
          "type": "map",
          "values": [
            "null",
            "string",
            "boolean",
            {
              "type": "map",
              "values": [
                "null",
                "string",
                "boolean",
                "int",
                {
                  "type": "map",
                  "values": [
                    "null",
                    "string",
                    "int"
                  ],
                  "default": null
                }
              ],
              "default": null
            }
          ],
          "default": null
        }
      ]
    }
  ]
}

И код:

      object AvroParser extends  App{


  val inputPath = "app/dto/roman/src/main/resources/tests.avsc"
  val outPutPath = "src/main/scala"
  val schemaFile = new File(inputPath)
  private val scalaTypes: AvroScalaTypes = SpecificRecord.defaultTypes.copy(map = avrohugger.types.ScalaMap)
  val generator = new Generator(Standard, avroScalaCustomTypes = Some(scalaTypes))
  generator.fileToFile(schemaFile, outPutPath)
}

Мои типы в схеме - это карта, и я терплю неудачу в работе:

        def getSchemaOrProtocols(
    infile: File,
    format: SourceFormat,
    classStore: ClassStore,
    classLoader: ClassLoader,
    parser: Parser = schemaParser): List[Either[Schema, Protocol]] = {
    def unUnion(schema: Schema) = {
      schema.getType match {
        case UNION => schema.getTypes().asScala.toList
        case RECORD => List(schema)
        case ENUM => List(schema)
        case FIXED => List(schema)
        case _ => sys.error("""Neither a record, enum nor a union of either. 
          |Nothing to map to a definition.""".trim.stripMargin)
      }
    }

где карта типов не соответствует ни одному из типов ниже. Как я могу принять схему или, может быть, я не передаю правильные аргументы?

0 ответов

Другие вопросы по тегам