@@ -23,8 +23,8 @@ class AvroDatumReaderTest extends AgentTestRunner {
2323
2424 return true
2525 }
26- String schemaID = " 13312915480981758289 "
27- String openApiSchemaDef = " {\" components\" :{\" schemas\" :{\" TestRecord\" :{\" properties\" :{\" stringField\" :{\" type\" :\" string\" },\" intField\" :{\" format\" :\" int32\" ,\" type\" :\" integer\" },\" longField\" :{\" format\" :\" int64\" ,\" type\" :\" integer\" },\" floatField\" :{\" format\" :\" float\" ,\" type\" :\" number\" },\" doubleField\" :{\" format\" :\" double\" ,\" type\" :\" number\" },\" booleanField\" :{\" type\" :\" boolean\" },\" bytesField\" :{\" format\" :\" byte\" ,\" type\" :\" string\" },\" nullField\" :{\" type\" :\" null\" },\" enumField\" :{\" enum\" :[\" A\" ,\" B\" ,\" C\" ],\" type\" :\" string\" },\" fixedField\" :{\" type\" :\" string\" },\" recordField\" :{\" type\" :\" #/components/schemas/NestedRecord\" },\" arrayField\" :{\" items\" :{\" type\" :\" integer\" },\" type\" :\" array\" },\" mapField\" :{\" description\" :\" Map type\" ,\" type\" :\" object\" }},\" type\" :\" object\" },\" NestedRecord\" :{\" properties\" :{\" nestedString\" :{\" type\" :\" string\" }},\" type\" :\" object\" }}},\" openapi\" :\" 3.0.0\" }"
26+ String schemaID = " 1235632270399345373 "
27+ String openApiSchemaDef = "{\"components\":{\"schemas\":{\"TestRecord\":{\"properties\":{\"stringField\":{\"type\":\"string\"},\"intField\":{\"format\":\"int32\",\"type\":\"integer\"},\"longField\":{\"format\":\"int64\",\"type\":\"integer\"},\"floatField\":{\"format\":\"float\",\"type\":\"number\"},\"doubleField\":{\"format\":\"double\",\"type\":\"number\"},\"booleanField\":{\"type\":\"boolean\"},\"bytesField\":{\"format\":\"byte\",\"type\":\"string\"},\"nullField\":{\"type\":\"null\"},\"enumField\":{\"enum\":[\"A\",\"B\",\"C\"],\"type\":\"string\"},\"fixedField\":{\"type\":\"string\"},\"recordField\":{\"type\":\"#/components/schemas/NestedRecord\"},\"arrayField\":{\"items\":{\"type\":\"integer\"},\"type\":\"array\"},\"mapField\":{\"description\":\"Map type\",\"type\":\"object\"},\"arrayNestedField\":{\"items\":{\"type\":\"#/components/schemas/OtherNestedRecord\"},\"type\":\"array\"}},\"type\":\"object\"},\"NestedRecord\":{\"properties\":{\"nestedString\":{\"type\":\"string\"}},\"type\":\"object\"},\"OtherNestedRecord\":{\"properties\":{\"nestedString\":{\"type\":\"string\"}},\"type\":\"object\"}}},\"openapi\":\"3.0.0\"}"
2828 String schemaStr = '''
2929 {
3030 "type": "record",
@@ -42,13 +42,23 @@ class AvroDatumReaderTest extends AgentTestRunner {
4242 {"name": "fixedField", "type": {"type": "fixed", "name": "TestFixed", "size": 16}},
4343 {"name": "recordField", "type": {"type": "record", "name": "NestedRecord", "fields": [{"name": "nestedString", "type": "string"}]}},
4444 {"name": "arrayField", "type": {"type": "array", "items": "int"}},
45- {"name": "mapField", "type": {"type": "map", "values": "string"}}
45+ {"name": "mapField", "type": {"type": "map", "values": "string"}},
46+ {"name": "arrayNestedField", "type": { "type": "array", "items": {"type": "record", "name": "OtherNestedRecord", "fields": [{"name": "nestedString", "type": "string"}]}}}
4647 ]
4748 }
4849 '''
4950 Schema schemaDef = new Schema.Parser (). parse(schemaStr)
50-
51-
51+ // here for convience but must be kept in sync with the array nested field
52+ String nestedSchemaStr = '''
53+ {
54+ "type": "record",
55+ "name": "OtherNestedRecord",
56+ "fields": [
57+ {"name": "nestedString", "type": "string"}
58+ ]
59+ }
60+ '''
61+ Schema nestedSchemaDef = new Schema.Parser (). parse(nestedSchemaStr)
5262
5363 void ' test extract avro schema on deserialize' () {
5464
@@ -80,6 +90,13 @@ class AvroDatumReaderTest extends AgentTestRunner {
8090 map. put(" key2" , " value2" )
8191 datum. put(" mapField" , map)
8292
93+ // array of nested fields
94+ GenericRecord nestedRecordA = new GenericData.Record (nestedSchemaDef)
95+ nestedRecordA. put(" nestedString" , " a" )
96+ GenericRecord nestedRecordB = new GenericData.Record (nestedSchemaDef)
97+ nestedRecordB. put(" nestedString" , " b" )
98+ datum. put(" arrayNestedField" , Arrays . asList(nestedRecordA, nestedRecordB))
99+
83100 when :
84101 def bytes
85102 ByteArrayOutputStream out = new ByteArrayOutputStream ()
0 commit comments