diff --git a/CHANGELOG b/CHANGELOG index 3b685b2..854ccad 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,11 +2,13 @@ # UNRELEASED +- Revert and re-fix the issue with flattened `type` declarations. +- Stop emitting a default of `{}` for records as Avro can't actually handle this. + # 0.7 - 2024-02-27 - Fix: Union types are now flattened (i.e. if a union has a type which is another union, they will be combined). - Feature / breaking change: add `preserve_non_string_maps` and change default behavior to turn all maps into string-keyed ones. -- Fix: Flatten any instances of `{type: { type: ... } }` # 0.6.1 - 2024-02-27 diff --git a/avro/array.go b/avro/array.go index 4ec0987..acd1ab4 100644 --- a/avro/array.go +++ b/avro/array.go @@ -23,6 +23,17 @@ func (t Array) ToJSON(types *TypeRepo) (any, error) { if returnedType == "map" { return itemJson, nil } + returnedMap, ok := returnedType.(*orderedmap.OrderedMap) + if ok { + _, hasType := returnedMap.Get("type") + if hasType { + // it's adding an extra nesting of type: { type: ... } } - we have to flatten it + for _, k := range returnedMap.Keys() { + val, _ := returnedMap.Get(k) + mapType.Set(k, val) + } + } + } } jsonMap := orderedmap.New() jsonMap.Set("type", "array") diff --git a/avro/field.go b/avro/field.go index 460f85e..5a1dbe8 100644 --- a/avro/field.go +++ b/avro/field.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/iancoleman/orderedmap" "google.golang.org/protobuf/types/descriptorpb" + "reflect" ) type Field struct { @@ -18,24 +19,19 @@ func (t Field) ToJSON(types *TypeRepo) (any, error) { return nil, fmt.Errorf("error parsing field type %s %w", t.Name, err) } jsonMap := orderedmap.New() - mapType, ok := typeJson.(*orderedmap.OrderedMap) - if ok { - _, isType := mapType.Get("type") - if isType { // we merge the type with the current type - for _, k := range mapType.Keys() { - val, _ := mapType.Get(k) - jsonMap.Set(k, val) - } - } - } else { - jsonMap.Set("type", typeJson) - } jsonMap.Set("name", t.Name) + jsonMap.Set("type", typeJson) + var defaultValue any if t.Default != "" { - jsonMap.Set("default", t.Default) + defaultValue = t.Default } else { - jsonMap.Set("default", DefaultValue(typeJson)) + defaultValue = DefaultValue(typeJson) } + // Avro can't actually handle defaults for records + if reflect.ValueOf(defaultValue).Kind() != reflect.Map { + jsonMap.Set("default", defaultValue) + } + return jsonMap, nil } diff --git a/avro/union.go b/avro/union.go index 1090b89..adf7352 100644 --- a/avro/union.go +++ b/avro/union.go @@ -26,7 +26,6 @@ func flatten(slice []any) []any { var flattened []any for _, jsonType := range slice { jsonMap, ok := jsonType.(*orderedmap.OrderedMap) - LogMsg("%v", reflect.TypeOf(jsonType)) if ok { typeArr, ok := jsonMap.Get("type") if ok && reflect.TypeOf(typeArr).Kind() == reflect.Slice { diff --git a/testdata/base/AOneOf.avsc b/testdata/base/AOneOf.avsc index f64dbbf..77270ee 100644 --- a/testdata/base/AOneOf.avsc +++ b/testdata/base/AOneOf.avsc @@ -4,6 +4,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -11,8 +12,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -23,14 +24,13 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] diff --git a/testdata/base/Foobar.avsc b/testdata/base/Foobar.avsc index 96d8ac1..043d399 100644 --- a/testdata/base/Foobar.avsc +++ b/testdata/base/Foobar.avsc @@ -4,97 +4,134 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "name", + "type": "string", "default": "" }, { - "type": "enum", "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, "default": "BLARP_UNSPECIFIED" }, { - "type": "record", "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 - } - ], - "default": {} + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] + } }, { - "type": "array", - "items": "testdata.Blarp", "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, "default": [] }, { - "type": "array", - "items": "testdata.Yowza", "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, "default": [] }, { - "type": "array", - "items": "string", "name": "names", + "type": { + "type": "array", + "items": "string" + }, "default": [] }, { + "name": "optional_name", "type": [ "null", "string" ], - "name": "optional_name", "default": null }, { + "name": "optional_blarp", "type": [ "null", "testdata.Blarp" ], - "name": "optional_blarp", "default": null }, { + "name": "optional_yowza", "type": [ "null", "testdata.Yowza" ], - "name": "optional_yowza", "default": null }, { - "type": "int", "name": "a_num", + "type": "int", "default": 0 }, { - "type": "map", - "values": "string", "name": "a_string_map", - "default": {} + "type": { + "type": "map", + "values": "string" + } }, { - "type": "map", - "values": "testdata.Blarp", "name": "a_blarp_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.Blarp" + } }, { - "type": "map", - "values": "testdata.Yowza", "name": "a_yowza_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "testdata", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, + "default": [] } ] } \ No newline at end of file diff --git a/testdata/base/StringList.avsc b/testdata/base/StringList.avsc index cfb7618..fec2273 100644 --- a/testdata/base/StringList.avsc +++ b/testdata/base/StringList.avsc @@ -4,9 +4,11 @@ "namespace": "testdata", "fields": [ { - "type": "array", - "items": "string", "name": "data", + "type": { + "type": "array", + "items": "string" + }, "default": [] } ] diff --git a/testdata/base/TypeA.avsc b/testdata/base/TypeA.avsc index 45b43b3..a0de7f4 100644 --- a/testdata/base/TypeA.avsc +++ b/testdata/base/TypeA.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] diff --git a/testdata/base/TypeB.avsc b/testdata/base/TypeB.avsc index 1287f84..e3e6c51 100644 --- a/testdata/base/TypeB.avsc +++ b/testdata/base/TypeB.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] diff --git a/testdata/base/Widget.avsc b/testdata/base/Widget.avsc index f7beed2..a28ea95 100644 --- a/testdata/base/Widget.avsc +++ b/testdata/base/Widget.avsc @@ -4,140 +4,172 @@ "namespace": "testdata", "fields": [ { + "name": "from_date", "type": [ "null", "long" ], - "name": "from_date", "default": null }, { - "type": "long", "name": "to_date", + "type": "long", "default": 0 }, { - "type": "record", "name": "foobar", - "namespace": "testdata", - "fields": [ - { - "type": "string", - "name": "name", - "default": "" - }, - { - "type": "enum", - "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], - "default": "BLARP_UNSPECIFIED" - }, - { - "type": "record", - "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 + "type": { + "type": "record", + "name": "Foobar", + "namespace": "testdata", + "fields": [ + { + "name": "name", + "type": "string", + "default": "" + }, + { + "name": "blarp", + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, + "default": "BLARP_UNSPECIFIED" + }, + { + "name": "yowza", + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] } - ], - "default": {} - }, - { - "type": "array", - "items": "testdata.Blarp", - "name": "blarps", - "default": [] - }, - { - "type": "array", - "items": "testdata.Yowza", - "name": "yowzas", - "default": [] - }, - { - "type": "array", - "items": "string", - "name": "names", - "default": [] - }, - { - "type": [ - "null", - "string" - ], - "name": "optional_name", - "default": null - }, - { - "type": [ - "null", - "testdata.Blarp" - ], - "name": "optional_blarp", - "default": null - }, - { - "type": [ - "null", - "testdata.Yowza" - ], - "name": "optional_yowza", - "default": null - }, - { - "type": "int", - "name": "a_num", - "default": 0 - }, - { - "type": "map", - "values": "string", - "name": "a_string_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Blarp", - "name": "a_blarp_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Yowza", - "name": "a_yowza_map", - "default": {} - } - ], - "default": {} + }, + { + "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, + "default": [] + }, + { + "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, + "default": [] + }, + { + "name": "names", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + }, + { + "name": "optional_name", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "optional_blarp", + "type": [ + "null", + "testdata.Blarp" + ], + "default": null + }, + { + "name": "optional_yowza", + "type": [ + "null", + "testdata.Yowza" + ], + "default": null + }, + { + "name": "a_num", + "type": "int", + "default": 0 + }, + { + "name": "a_string_map", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "a_blarp_map", + "type": { + "type": "map", + "values": "testdata.Blarp" + } + }, + { + "name": "a_yowza_map", + "type": { + "type": "map", + "values": "testdata.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "testdata", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, + "default": [] + } + ] + } }, { - "type": "record", "name": "strings", - "namespace": "testdata", - "fields": [ - { - "type": "array", - "items": "string", - "name": "data", - "default": [] - } - ], - "default": {} + "type": "testdata.StringList", + "default": "" }, { - "type": "map", - "values": "testdata.StringList", "name": "string_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.StringList" + } }, { + "name": "a_one_of", "type": [ "null", { @@ -146,6 +178,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -153,8 +186,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -165,27 +198,19 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] } ], - "name": "a_one_of", "default": null - }, - { - "type": "array", - "items": "testdata.StringList", - "name": "string_array", - "default": [] } ] } \ No newline at end of file diff --git a/testdata/base/Yowza.avsc b/testdata/base/Yowza.avsc index 693fe43..ab10b59 100644 --- a/testdata/base/Yowza.avsc +++ b/testdata/base/Yowza.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "float", "name": "hoo_boy", + "type": "float", "default": 0 } ] diff --git a/testdata/collapse_fields/AOneOf.avsc b/testdata/collapse_fields/AOneOf.avsc index f64dbbf..77270ee 100644 --- a/testdata/collapse_fields/AOneOf.avsc +++ b/testdata/collapse_fields/AOneOf.avsc @@ -4,6 +4,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -11,8 +12,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -23,14 +24,13 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] diff --git a/testdata/collapse_fields/Foobar.avsc b/testdata/collapse_fields/Foobar.avsc index 96d8ac1..7a98a61 100644 --- a/testdata/collapse_fields/Foobar.avsc +++ b/testdata/collapse_fields/Foobar.avsc @@ -4,97 +4,125 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "name", + "type": "string", "default": "" }, { - "type": "enum", "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, "default": "BLARP_UNSPECIFIED" }, { - "type": "record", "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 - } - ], - "default": {} + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] + } }, { - "type": "array", - "items": "testdata.Blarp", "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, "default": [] }, { - "type": "array", - "items": "testdata.Yowza", "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, "default": [] }, { - "type": "array", - "items": "string", "name": "names", + "type": { + "type": "array", + "items": "string" + }, "default": [] }, { + "name": "optional_name", "type": [ "null", "string" ], - "name": "optional_name", "default": null }, { + "name": "optional_blarp", "type": [ "null", "testdata.Blarp" ], - "name": "optional_blarp", "default": null }, { + "name": "optional_yowza", "type": [ "null", "testdata.Yowza" ], - "name": "optional_yowza", "default": null }, { - "type": "int", "name": "a_num", + "type": "int", "default": 0 }, { - "type": "map", - "values": "string", "name": "a_string_map", - "default": {} + "type": { + "type": "map", + "values": "string" + } }, { - "type": "map", - "values": "testdata.Blarp", "name": "a_blarp_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.Blarp" + } }, { - "type": "map", - "values": "testdata.Yowza", "name": "a_yowza_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "name": "data", + "type": "array", + "default": [], + "items": "string" + } + }, + "default": [] } ] } \ No newline at end of file diff --git a/testdata/collapse_fields/StringList.avsc b/testdata/collapse_fields/StringList.avsc index cf811de..6a846ad 100644 --- a/testdata/collapse_fields/StringList.avsc +++ b/testdata/collapse_fields/StringList.avsc @@ -1,6 +1,8 @@ { - "type": "array", - "items": "string", "name": "data", + "type": { + "type": "array", + "items": "string" + }, "default": [] } \ No newline at end of file diff --git a/testdata/collapse_fields/TypeA.avsc b/testdata/collapse_fields/TypeA.avsc index 45b43b3..a0de7f4 100644 --- a/testdata/collapse_fields/TypeA.avsc +++ b/testdata/collapse_fields/TypeA.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] diff --git a/testdata/collapse_fields/TypeB.avsc b/testdata/collapse_fields/TypeB.avsc index 1287f84..e3e6c51 100644 --- a/testdata/collapse_fields/TypeB.avsc +++ b/testdata/collapse_fields/TypeB.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] diff --git a/testdata/collapse_fields/Widget.avsc b/testdata/collapse_fields/Widget.avsc index f95a56c..1d62a64 100644 --- a/testdata/collapse_fields/Widget.avsc +++ b/testdata/collapse_fields/Widget.avsc @@ -4,135 +4,169 @@ "namespace": "testdata", "fields": [ { + "name": "from_date", "type": [ "null", "long" ], - "name": "from_date", "default": null }, { - "type": "long", "name": "to_date", + "type": "long", "default": 0 }, { - "type": "record", "name": "foobar", - "namespace": "testdata", - "fields": [ - { - "type": "string", - "name": "name", - "default": "" - }, - { - "type": "enum", - "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], - "default": "BLARP_UNSPECIFIED" - }, - { - "type": "record", - "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 + "type": { + "type": "record", + "name": "Foobar", + "namespace": "testdata", + "fields": [ + { + "name": "name", + "type": "string", + "default": "" + }, + { + "name": "blarp", + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, + "default": "BLARP_UNSPECIFIED" + }, + { + "name": "yowza", + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] } - ], - "default": {} - }, - { - "type": "array", - "items": "testdata.Blarp", - "name": "blarps", - "default": [] - }, - { - "type": "array", - "items": "testdata.Yowza", - "name": "yowzas", - "default": [] - }, - { - "type": "array", - "items": "string", - "name": "names", - "default": [] - }, - { - "type": [ - "null", - "string" - ], - "name": "optional_name", - "default": null - }, - { - "type": [ - "null", - "testdata.Blarp" - ], - "name": "optional_blarp", - "default": null - }, - { - "type": [ - "null", - "testdata.Yowza" - ], - "name": "optional_yowza", - "default": null - }, - { - "type": "int", - "name": "a_num", - "default": 0 - }, - { - "type": "map", - "values": "string", - "name": "a_string_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Blarp", - "name": "a_blarp_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Yowza", - "name": "a_yowza_map", - "default": {} - } - ], - "default": {} + }, + { + "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, + "default": [] + }, + { + "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, + "default": [] + }, + { + "name": "names", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + }, + { + "name": "optional_name", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "optional_blarp", + "type": [ + "null", + "testdata.Blarp" + ], + "default": null + }, + { + "name": "optional_yowza", + "type": [ + "null", + "testdata.Yowza" + ], + "default": null + }, + { + "name": "a_num", + "type": "int", + "default": 0 + }, + { + "name": "a_string_map", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "a_blarp_map", + "type": { + "type": "map", + "values": "testdata.Blarp" + } + }, + { + "name": "a_yowza_map", + "type": { + "type": "map", + "values": "testdata.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "name": "data", + "type": "array", + "default": [], + "items": "string" + } + }, + "default": [] + } + ] + } }, { - "type": "array", - "items": "string", "name": "strings", - "default": [] - }, - { - "type": "map", - "values": { + "type": { "type": "array", "items": "string" }, + "default": [] + }, + { "name": "string_map", - "default": {} + "type": { + "type": "map", + "values": { + "type": "array", + "items": "string" + } + } }, { + "name": "a_one_of", "type": [ "null", { @@ -141,6 +175,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -148,8 +183,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -160,30 +195,19 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] } ], - "name": "a_one_of", "default": null - }, - { - "type": "array", - "items": { - "type": "array", - "items": "string" - }, - "name": "string_array", - "default": [] } ] } \ No newline at end of file diff --git a/testdata/collapse_fields/Yowza.avsc b/testdata/collapse_fields/Yowza.avsc index 693fe43..ab10b59 100644 --- a/testdata/collapse_fields/Yowza.avsc +++ b/testdata/collapse_fields/Yowza.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "float", "name": "hoo_boy", + "type": "float", "default": 0 } ] diff --git a/testdata/emit_only/Widget.avsc b/testdata/emit_only/Widget.avsc index f7beed2..a28ea95 100644 --- a/testdata/emit_only/Widget.avsc +++ b/testdata/emit_only/Widget.avsc @@ -4,140 +4,172 @@ "namespace": "testdata", "fields": [ { + "name": "from_date", "type": [ "null", "long" ], - "name": "from_date", "default": null }, { - "type": "long", "name": "to_date", + "type": "long", "default": 0 }, { - "type": "record", "name": "foobar", - "namespace": "testdata", - "fields": [ - { - "type": "string", - "name": "name", - "default": "" - }, - { - "type": "enum", - "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], - "default": "BLARP_UNSPECIFIED" - }, - { - "type": "record", - "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 + "type": { + "type": "record", + "name": "Foobar", + "namespace": "testdata", + "fields": [ + { + "name": "name", + "type": "string", + "default": "" + }, + { + "name": "blarp", + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, + "default": "BLARP_UNSPECIFIED" + }, + { + "name": "yowza", + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] } - ], - "default": {} - }, - { - "type": "array", - "items": "testdata.Blarp", - "name": "blarps", - "default": [] - }, - { - "type": "array", - "items": "testdata.Yowza", - "name": "yowzas", - "default": [] - }, - { - "type": "array", - "items": "string", - "name": "names", - "default": [] - }, - { - "type": [ - "null", - "string" - ], - "name": "optional_name", - "default": null - }, - { - "type": [ - "null", - "testdata.Blarp" - ], - "name": "optional_blarp", - "default": null - }, - { - "type": [ - "null", - "testdata.Yowza" - ], - "name": "optional_yowza", - "default": null - }, - { - "type": "int", - "name": "a_num", - "default": 0 - }, - { - "type": "map", - "values": "string", - "name": "a_string_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Blarp", - "name": "a_blarp_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Yowza", - "name": "a_yowza_map", - "default": {} - } - ], - "default": {} + }, + { + "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, + "default": [] + }, + { + "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, + "default": [] + }, + { + "name": "names", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + }, + { + "name": "optional_name", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "optional_blarp", + "type": [ + "null", + "testdata.Blarp" + ], + "default": null + }, + { + "name": "optional_yowza", + "type": [ + "null", + "testdata.Yowza" + ], + "default": null + }, + { + "name": "a_num", + "type": "int", + "default": 0 + }, + { + "name": "a_string_map", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "a_blarp_map", + "type": { + "type": "map", + "values": "testdata.Blarp" + } + }, + { + "name": "a_yowza_map", + "type": { + "type": "map", + "values": "testdata.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "testdata", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, + "default": [] + } + ] + } }, { - "type": "record", "name": "strings", - "namespace": "testdata", - "fields": [ - { - "type": "array", - "items": "string", - "name": "data", - "default": [] - } - ], - "default": {} + "type": "testdata.StringList", + "default": "" }, { - "type": "map", - "values": "testdata.StringList", "name": "string_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.StringList" + } }, { + "name": "a_one_of", "type": [ "null", { @@ -146,6 +178,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -153,8 +186,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -165,27 +198,19 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] } ], - "name": "a_one_of", "default": null - }, - { - "type": "array", - "items": "testdata.StringList", - "name": "string_array", - "default": [] } ] } \ No newline at end of file diff --git a/testdata/foobar.proto b/testdata/foobar.proto index 2b2ddb3..8baf501 100644 --- a/testdata/foobar.proto +++ b/testdata/foobar.proto @@ -2,6 +2,10 @@ syntax = "proto3"; package testdata; +message StringList { + repeated string data = 1; +} + enum Blarp { BLARP_UNSPECIFIED = 0; BLARP_ME = 1; @@ -26,4 +30,5 @@ message Foobar { map a_string_map = 11; map a_blarp_map = 12; map a_yowza_map = 13; + repeated StringList string_lists = 14; } diff --git a/testdata/namespace_map/AOneOf.avsc b/testdata/namespace_map/AOneOf.avsc index c251e50..beed706 100644 --- a/testdata/namespace_map/AOneOf.avsc +++ b/testdata/namespace_map/AOneOf.avsc @@ -4,6 +4,7 @@ "namespace": "mynamespace", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -11,8 +12,8 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -23,14 +24,13 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] diff --git a/testdata/namespace_map/Foobar.avsc b/testdata/namespace_map/Foobar.avsc index 6582c04..66779e6 100644 --- a/testdata/namespace_map/Foobar.avsc +++ b/testdata/namespace_map/Foobar.avsc @@ -4,97 +4,134 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "name", + "type": "string", "default": "" }, { - "type": "enum", "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, "default": "BLARP_UNSPECIFIED" }, { - "type": "record", "name": "yowza", - "namespace": "mynamespace", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 - } - ], - "default": {} + "type": { + "type": "record", + "name": "Yowza", + "namespace": "mynamespace", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] + } }, { - "type": "array", - "items": "mynamespace.Blarp", "name": "blarps", + "type": { + "type": "array", + "items": "mynamespace.Blarp" + }, "default": [] }, { - "type": "array", - "items": "mynamespace.Yowza", "name": "yowzas", + "type": { + "type": "array", + "items": "mynamespace.Yowza" + }, "default": [] }, { - "type": "array", - "items": "string", "name": "names", + "type": { + "type": "array", + "items": "string" + }, "default": [] }, { + "name": "optional_name", "type": [ "null", "string" ], - "name": "optional_name", "default": null }, { + "name": "optional_blarp", "type": [ "null", "mynamespace.Blarp" ], - "name": "optional_blarp", "default": null }, { + "name": "optional_yowza", "type": [ "null", "mynamespace.Yowza" ], - "name": "optional_yowza", "default": null }, { - "type": "int", "name": "a_num", + "type": "int", "default": 0 }, { - "type": "map", - "values": "string", "name": "a_string_map", - "default": {} + "type": { + "type": "map", + "values": "string" + } }, { - "type": "map", - "values": "mynamespace.Blarp", "name": "a_blarp_map", - "default": {} + "type": { + "type": "map", + "values": "mynamespace.Blarp" + } }, { - "type": "map", - "values": "mynamespace.Yowza", "name": "a_yowza_map", - "default": {} + "type": { + "type": "map", + "values": "mynamespace.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "mynamespace", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, + "default": [] } ] } \ No newline at end of file diff --git a/testdata/namespace_map/StringList.avsc b/testdata/namespace_map/StringList.avsc index 6861e67..b98769e 100644 --- a/testdata/namespace_map/StringList.avsc +++ b/testdata/namespace_map/StringList.avsc @@ -4,9 +4,11 @@ "namespace": "mynamespace", "fields": [ { - "type": "array", - "items": "string", "name": "data", + "type": { + "type": "array", + "items": "string" + }, "default": [] } ] diff --git a/testdata/namespace_map/TypeA.avsc b/testdata/namespace_map/TypeA.avsc index fd9e136..7f6b883 100644 --- a/testdata/namespace_map/TypeA.avsc +++ b/testdata/namespace_map/TypeA.avsc @@ -4,8 +4,8 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] diff --git a/testdata/namespace_map/TypeB.avsc b/testdata/namespace_map/TypeB.avsc index 8844dae..3e17f35 100644 --- a/testdata/namespace_map/TypeB.avsc +++ b/testdata/namespace_map/TypeB.avsc @@ -4,8 +4,8 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] diff --git a/testdata/namespace_map/Widget.avsc b/testdata/namespace_map/Widget.avsc index acb310d..2876db1 100644 --- a/testdata/namespace_map/Widget.avsc +++ b/testdata/namespace_map/Widget.avsc @@ -4,140 +4,172 @@ "namespace": "mynamespace", "fields": [ { + "name": "from_date", "type": [ "null", "long" ], - "name": "from_date", "default": null }, { - "type": "long", "name": "to_date", + "type": "long", "default": 0 }, { - "type": "record", "name": "foobar", - "namespace": "mynamespace", - "fields": [ - { - "type": "string", - "name": "name", - "default": "" - }, - { - "type": "enum", - "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], - "default": "BLARP_UNSPECIFIED" - }, - { - "type": "record", - "name": "yowza", - "namespace": "mynamespace", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 + "type": { + "type": "record", + "name": "Foobar", + "namespace": "mynamespace", + "fields": [ + { + "name": "name", + "type": "string", + "default": "" + }, + { + "name": "blarp", + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, + "default": "BLARP_UNSPECIFIED" + }, + { + "name": "yowza", + "type": { + "type": "record", + "name": "Yowza", + "namespace": "mynamespace", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] } - ], - "default": {} - }, - { - "type": "array", - "items": "mynamespace.Blarp", - "name": "blarps", - "default": [] - }, - { - "type": "array", - "items": "mynamespace.Yowza", - "name": "yowzas", - "default": [] - }, - { - "type": "array", - "items": "string", - "name": "names", - "default": [] - }, - { - "type": [ - "null", - "string" - ], - "name": "optional_name", - "default": null - }, - { - "type": [ - "null", - "mynamespace.Blarp" - ], - "name": "optional_blarp", - "default": null - }, - { - "type": [ - "null", - "mynamespace.Yowza" - ], - "name": "optional_yowza", - "default": null - }, - { - "type": "int", - "name": "a_num", - "default": 0 - }, - { - "type": "map", - "values": "string", - "name": "a_string_map", - "default": {} - }, - { - "type": "map", - "values": "mynamespace.Blarp", - "name": "a_blarp_map", - "default": {} - }, - { - "type": "map", - "values": "mynamespace.Yowza", - "name": "a_yowza_map", - "default": {} - } - ], - "default": {} + }, + { + "name": "blarps", + "type": { + "type": "array", + "items": "mynamespace.Blarp" + }, + "default": [] + }, + { + "name": "yowzas", + "type": { + "type": "array", + "items": "mynamespace.Yowza" + }, + "default": [] + }, + { + "name": "names", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + }, + { + "name": "optional_name", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "optional_blarp", + "type": [ + "null", + "mynamespace.Blarp" + ], + "default": null + }, + { + "name": "optional_yowza", + "type": [ + "null", + "mynamespace.Yowza" + ], + "default": null + }, + { + "name": "a_num", + "type": "int", + "default": 0 + }, + { + "name": "a_string_map", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "a_blarp_map", + "type": { + "type": "map", + "values": "mynamespace.Blarp" + } + }, + { + "name": "a_yowza_map", + "type": { + "type": "map", + "values": "mynamespace.Yowza" + } + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "mynamespace", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, + "default": [] + } + ] + } }, { - "type": "record", "name": "strings", - "namespace": "mynamespace", - "fields": [ - { - "type": "array", - "items": "string", - "name": "data", - "default": [] - } - ], - "default": {} + "type": "mynamespace.StringList", + "default": "" }, { - "type": "map", - "values": "mynamespace.StringList", "name": "string_map", - "default": {} + "type": { + "type": "map", + "values": "mynamespace.StringList" + } }, { + "name": "a_one_of", "type": [ "null", { @@ -146,6 +178,7 @@ "namespace": "mynamespace", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -153,8 +186,8 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -165,27 +198,19 @@ "namespace": "mynamespace", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] } ], - "name": "a_one_of", "default": null - }, - { - "type": "array", - "items": "mynamespace.StringList", - "name": "string_array", - "default": [] } ] } \ No newline at end of file diff --git a/testdata/namespace_map/Yowza.avsc b/testdata/namespace_map/Yowza.avsc index 34c752f..4c58e7a 100644 --- a/testdata/namespace_map/Yowza.avsc +++ b/testdata/namespace_map/Yowza.avsc @@ -4,8 +4,8 @@ "namespace": "mynamespace", "fields": [ { - "type": "float", "name": "hoo_boy", + "type": "float", "default": 0 } ] diff --git a/testdata/preserve_non_string_maps/AOneOf.avsc b/testdata/preserve_non_string_maps/AOneOf.avsc index f64dbbf..77270ee 100644 --- a/testdata/preserve_non_string_maps/AOneOf.avsc +++ b/testdata/preserve_non_string_maps/AOneOf.avsc @@ -4,6 +4,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -11,8 +12,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -23,14 +24,13 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] diff --git a/testdata/preserve_non_string_maps/AYowzaMapEntry.avsc b/testdata/preserve_non_string_maps/AYowzaMapEntry.avsc index 0645d91..3d992e0 100644 --- a/testdata/preserve_non_string_maps/AYowzaMapEntry.avsc +++ b/testdata/preserve_non_string_maps/AYowzaMapEntry.avsc @@ -4,22 +4,24 @@ "namespace": "testdata.Foobar", "fields": [ { - "type": "boolean", "name": "key", + "type": "boolean", "default": false }, { - "type": "record", "name": "value", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 - } - ], - "default": {} + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] + } } ] } \ No newline at end of file diff --git a/testdata/preserve_non_string_maps/Foobar.avsc b/testdata/preserve_non_string_maps/Foobar.avsc index 0276d55..2ed5ad7 100644 --- a/testdata/preserve_non_string_maps/Foobar.avsc +++ b/testdata/preserve_non_string_maps/Foobar.avsc @@ -4,112 +4,150 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "name", + "type": "string", "default": "" }, { - "type": "enum", "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, "default": "BLARP_UNSPECIFIED" }, { - "type": "record", "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 - } - ], - "default": {} + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] + } }, { - "type": "array", - "items": "testdata.Blarp", "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, "default": [] }, { - "type": "array", - "items": "testdata.Yowza", "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, "default": [] }, { - "type": "array", - "items": "string", "name": "names", + "type": { + "type": "array", + "items": "string" + }, "default": [] }, { + "name": "optional_name", "type": [ "null", "string" ], - "name": "optional_name", "default": null }, { + "name": "optional_blarp", "type": [ "null", "testdata.Blarp" ], - "name": "optional_blarp", "default": null }, { + "name": "optional_yowza", "type": [ "null", "testdata.Yowza" ], - "name": "optional_yowza", "default": null }, { - "type": "int", "name": "a_num", + "type": "int", "default": 0 }, { - "type": "map", - "values": "string", "name": "a_string_map", - "default": {} + "type": { + "type": "map", + "values": "string" + } }, { - "type": "map", - "values": "testdata.Blarp", "name": "a_blarp_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.Blarp" + } }, { - "type": "array", - "items": { - "type": "record", - "name": "AYowzaMapEntry", - "namespace": "testdata.Foobar", - "fields": [ - { - "type": "boolean", - "name": "key", - "default": false - }, - { - "type": "testdata.Yowza", - "name": "value", - "default": "" - } - ] - }, "name": "a_yowza_map", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "AYowzaMapEntry", + "namespace": "testdata.Foobar", + "fields": [ + { + "name": "key", + "type": "boolean", + "default": false + }, + { + "name": "value", + "type": "testdata.Yowza", + "default": "" + } + ] + } + }, + "default": [] + }, + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "testdata", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, "default": [] } ] diff --git a/testdata/preserve_non_string_maps/StringList.avsc b/testdata/preserve_non_string_maps/StringList.avsc index cfb7618..fec2273 100644 --- a/testdata/preserve_non_string_maps/StringList.avsc +++ b/testdata/preserve_non_string_maps/StringList.avsc @@ -4,9 +4,11 @@ "namespace": "testdata", "fields": [ { - "type": "array", - "items": "string", "name": "data", + "type": { + "type": "array", + "items": "string" + }, "default": [] } ] diff --git a/testdata/preserve_non_string_maps/TypeA.avsc b/testdata/preserve_non_string_maps/TypeA.avsc index 45b43b3..a0de7f4 100644 --- a/testdata/preserve_non_string_maps/TypeA.avsc +++ b/testdata/preserve_non_string_maps/TypeA.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] diff --git a/testdata/preserve_non_string_maps/TypeB.avsc b/testdata/preserve_non_string_maps/TypeB.avsc index 1287f84..e3e6c51 100644 --- a/testdata/preserve_non_string_maps/TypeB.avsc +++ b/testdata/preserve_non_string_maps/TypeB.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] diff --git a/testdata/preserve_non_string_maps/Widget.avsc b/testdata/preserve_non_string_maps/Widget.avsc index 1813737..c0e4e9a 100644 --- a/testdata/preserve_non_string_maps/Widget.avsc +++ b/testdata/preserve_non_string_maps/Widget.avsc @@ -4,156 +4,189 @@ "namespace": "testdata", "fields": [ { + "name": "from_date", "type": [ "null", "long" ], - "name": "from_date", "default": null }, { - "type": "long", "name": "to_date", + "type": "long", "default": 0 }, { - "type": "record", "name": "foobar", - "namespace": "testdata", - "fields": [ - { - "type": "string", - "name": "name", - "default": "" - }, - { - "type": "enum", - "name": "blarp", - "symbols": [ - "BLARP_UNSPECIFIED", - "BLARP_ME", - "BLARP_YOU" - ], - "default": "BLARP_UNSPECIFIED" - }, - { - "type": "record", - "name": "yowza", - "namespace": "testdata", - "fields": [ - { - "type": "float", - "name": "hoo_boy", - "default": 0 + "type": { + "type": "record", + "name": "Foobar", + "namespace": "testdata", + "fields": [ + { + "name": "name", + "type": "string", + "default": "" + }, + { + "name": "blarp", + "type": { + "type": "enum", + "name": "Blarp", + "symbols": [ + "BLARP_UNSPECIFIED", + "BLARP_ME", + "BLARP_YOU" + ], + "default": "BLARP_UNSPECIFIED" + }, + "default": "BLARP_UNSPECIFIED" + }, + { + "name": "yowza", + "type": { + "type": "record", + "name": "Yowza", + "namespace": "testdata", + "fields": [ + { + "name": "hoo_boy", + "type": "float", + "default": 0 + } + ] } - ], - "default": {} - }, - { - "type": "array", - "items": "testdata.Blarp", - "name": "blarps", - "default": [] - }, - { - "type": "array", - "items": "testdata.Yowza", - "name": "yowzas", - "default": [] - }, - { - "type": "array", - "items": "string", - "name": "names", - "default": [] - }, - { - "type": [ - "null", - "string" - ], - "name": "optional_name", - "default": null - }, - { - "type": [ - "null", - "testdata.Blarp" - ], - "name": "optional_blarp", - "default": null - }, - { - "type": [ - "null", - "testdata.Yowza" - ], - "name": "optional_yowza", - "default": null - }, - { - "type": "int", - "name": "a_num", - "default": 0 - }, - { - "type": "map", - "values": "string", - "name": "a_string_map", - "default": {} - }, - { - "type": "map", - "values": "testdata.Blarp", - "name": "a_blarp_map", - "default": {} - }, - { - "type": "array", - "items": { - "type": "record", - "name": "AYowzaMapEntry", - "namespace": "testdata.Foobar", - "fields": [ - { - "type": "boolean", - "name": "key", - "default": false - }, - { - "type": "testdata.Yowza", - "name": "value", - "default": "" + }, + { + "name": "blarps", + "type": { + "type": "array", + "items": "testdata.Blarp" + }, + "default": [] + }, + { + "name": "yowzas", + "type": { + "type": "array", + "items": "testdata.Yowza" + }, + "default": [] + }, + { + "name": "names", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + }, + { + "name": "optional_name", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "optional_blarp", + "type": [ + "null", + "testdata.Blarp" + ], + "default": null + }, + { + "name": "optional_yowza", + "type": [ + "null", + "testdata.Yowza" + ], + "default": null + }, + { + "name": "a_num", + "type": "int", + "default": 0 + }, + { + "name": "a_string_map", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "a_blarp_map", + "type": { + "type": "map", + "values": "testdata.Blarp" + } + }, + { + "name": "a_yowza_map", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "AYowzaMapEntry", + "namespace": "testdata.Foobar", + "fields": [ + { + "name": "key", + "type": "boolean", + "default": false + }, + { + "name": "value", + "type": "testdata.Yowza", + "default": "" + } + ] } - ] + }, + "default": [] }, - "name": "a_yowza_map", - "default": [] - } - ], - "default": {} + { + "name": "string_lists", + "type": { + "type": "array", + "items": { + "type": "record", + "name": "StringList", + "namespace": "testdata", + "fields": [ + { + "name": "data", + "type": { + "type": "array", + "items": "string" + }, + "default": [] + } + ] + } + }, + "default": [] + } + ] + } }, { - "type": "record", "name": "strings", - "namespace": "testdata", - "fields": [ - { - "type": "array", - "items": "string", - "name": "data", - "default": [] - } - ], - "default": {} + "type": "testdata.StringList", + "default": "" }, { - "type": "map", - "values": "testdata.StringList", "name": "string_map", - "default": {} + "type": { + "type": "map", + "values": "testdata.StringList" + } }, { + "name": "a_one_of", "type": [ "null", { @@ -162,6 +195,7 @@ "namespace": "testdata", "fields": [ { + "name": "oneof_types", "type": [ { "type": "record", @@ -169,8 +203,8 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "foo", + "type": "string", "default": "" } ] @@ -181,27 +215,19 @@ "namespace": "testdata", "fields": [ { - "type": "string", "name": "bar", + "type": "string", "default": "" } ] } ], - "name": "oneof_types", "default": null } ] } ], - "name": "a_one_of", "default": null - }, - { - "type": "array", - "items": "testdata.StringList", - "name": "string_array", - "default": [] } ] } \ No newline at end of file diff --git a/testdata/preserve_non_string_maps/Yowza.avsc b/testdata/preserve_non_string_maps/Yowza.avsc index 693fe43..ab10b59 100644 --- a/testdata/preserve_non_string_maps/Yowza.avsc +++ b/testdata/preserve_non_string_maps/Yowza.avsc @@ -4,8 +4,8 @@ "namespace": "testdata", "fields": [ { - "type": "float", "name": "hoo_boy", + "type": "float", "default": 0 } ] diff --git a/testdata/widget.proto b/testdata/widget.proto index f48987d..d7dae90 100644 --- a/testdata/widget.proto +++ b/testdata/widget.proto @@ -5,10 +5,6 @@ package testdata; import "testdata/foobar.proto"; import "google/protobuf/timestamp.proto"; -message StringList { - repeated string data = 1; -} - message TypeA { string foo = 1; } @@ -31,5 +27,4 @@ message Widget { StringList strings = 4; map string_map = 5; optional AOneOf a_one_of = 6; - repeated StringList string_array = 7; }