Соответствующее 'Groovy' отображение для требуемой схемы Avro - divolte - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь написать Divolte - отображение Groovy для требуемой схемы Avro, но каждый раз выдает ошибки.

Может ли кто-нибудь помочь мне с совместимым отображением сценария Groovy?

Divolte- 0,9,0

{
  "namespace": "io.divolte.record",
  "type": "record",
  "name": "ClickStreamEvent",
  "fields": [
    { "name": "timestamp",               "type": "long" },
    { "name": "clientTimestamp",         "type": "long" },
    { "name": "detectedDuplicate",       "type": "boolean" },
    { "name": "detectedCorruption",      "type": "boolean" },
    { "name": "firstInSession",          "type": "boolean" },
    { "name": "viewportPixelWidth",      "type": ["null", "int"],    "default": null },
    { "name": "viewportPixelHeight",     "type": ["null", "int"],    "default": null },
    { "name": "screenPixelWidth",        "type": ["null", "int"],    "default": null },
    { "name": "screenPixelHeight",       "type": ["null", "int"],    "default": null },
    { "name": "remoteHost",              "type": "string" },
    { "name": "referer",                 "type": ["null", "string"], "default": null },
    { "name": "location",                "type": ["null", "string"], "default": null },
    { "name": "partyId",                 "type": ["null", "string"], "default": null },
    { "name": "sessionId",               "type": ["null", "string"], "default": null },
    { "name": "pageViewId",              "type": ["null", "string"], "default": null },
    { "name": "userAgentString",         "type": ["null", "string"], "default": null },
    { "name": "userAgentName",           "type": ["null", "string"], "default": null },
    { "name": "userAgentFamily",         "type": ["null", "string"], "default": null },
    { "name": "userAgentVendor",         "type": ["null", "string"], "default": null },
    { "name": "userAgentType",           "type": ["null", "string"], "default": null },
    { "name": "userAgentVersion",        "type": ["null", "string"], "default": null },
    { "name": "userAgentDeviceCategory", "type": ["null", "string"], "default": null },
    { "name": "userAgentOsFamily",       "type": ["null", "string"], "default": null },
    { "name": "userAgentOsVersion",      "type": ["null", "string"], "default": null },
    { "name": "userAgentOsVendor",       "type": ["null", "string"], "default": null },                
    { "name": "userId",                 "type": ["null", "string"],  "default":null },
    { "name": "userName",               "type": ["null", "string"],  "default":null },
    { "name": "roleId",                 "type": ["null", {"type":"array", "items": "string"}],  "default":null },
    { "name": "roleName",               "type": ["null", {"type":"array", "items": "string"}],  "default":null },
    { "name": "inputEventType",         "type": {"type": "enum", "name": "eventType", "symbols": ["buttonClick", "pageLoad", "inputChange"]} },
    { "name": "eventName",              "type": "string",           "default":"unknown" },
    { "name": "eventValue",             "type": ["null", "string"], "default":null }
  ]
}

Спасибо.

1 Ответ

0 голосов
/ 19 сентября 2019
  1. Чтобы отобразить Avro-массив в Groovy mapping DSL, используется ниже взломанный.См. Groovy-отображение для массива Avro
map eventParameters().path('$.roleId.*') onto 'roleId'
map eventParameters().path('$.roleName.*') onto 'roleName'
Официальной поддержки поля Avro 'enum' в Groovy mapping DSL нет. Расширение поддержки полей 'enum' Avro в отображении DSL
...