@@ -247,7 +247,7 @@ public void testSwitchNamespace() {
247247 AvroCompatibilityHelper .createSchemaField ("key" , Schema .create (Schema .Type .LONG ), "" , 0L );
248248 field1 .addProp ("primaryKey" , "true" );
249249 fieldList .add (field1 );
250- Schema .Field field2 =
250+ Schema .Field field2 =
251251 AvroCompatibilityHelper .createSchemaField ("double" , Schema .create (Schema .Type .DOUBLE ), "" , 0.0 );
252252 fieldList .add (field2 );
253253
@@ -656,4 +656,38 @@ public void testDropRecursiveSchema()
656656
657657 }
658658 }
659+ @ Test
660+ public void testGetFieldValue_existingField () {
661+ String schemaStr = "{\" type\" :\" record\" ,\" name\" :\" TestRecord\" ,\" fields\" :[{\" name\" :\" id\" ,\" type\" :\" string\" }]}" ;
662+ Schema schema = new Schema .Parser ().parse (schemaStr );
663+ GenericRecord record = new GenericData .Record (schema );
664+ record .put ("id" , "123" );
665+
666+ Map <String , Object > result = AvroUtils .getMultiFieldValue (record , "id" );
667+ Assert .assertEquals ("123" , result .get ("id" ));
668+ }
669+
670+ @ Test
671+ public void testGetFieldValue_missingField_returnsNull () {
672+ String schemaStr = "{\" type\" :\" record\" ,\" name\" :\" TestRecord\" ,\" fields\" :[{\" name\" :\" id\" ,\" type\" :\" string\" }]}" ;
673+ Schema schema = new Schema .Parser ().parse (schemaStr );
674+ GenericRecord record = new GenericData .Record (schema );
675+ record .put ("id" , "123" );
676+
677+ Map <String , Object > result = AvroUtils .getMultiFieldValue (record , "nonexistent" );
678+ Assert .assertTrue (result .isEmpty ());
679+ }
680+
681+ @ Test
682+ public void testNestedFieldAccess () {
683+ String schemaStr = "{\" type\" :\" record\" ,\" name\" :\" Outer\" ,\" fields\" :[{\" name\" :\" inner\" ,\" type\" :{\" type\" :\" record\" ,\" name\" :\" Inner\" ,\" fields\" :[{\" name\" :\" value\" ,\" type\" :\" int\" }]}}]}" ;
684+ Schema schema = new Schema .Parser ().parse (schemaStr );
685+ GenericRecord inner = new GenericData .Record (schema .getField ("inner" ).schema ());
686+ inner .put ("value" , 42 );
687+ GenericRecord outer = new GenericData .Record (schema );
688+ outer .put ("inner" , inner );
689+
690+ Map <String , Object > result = AvroUtils .getMultiFieldValue (outer , "inner.value" );
691+ Assert .assertEquals (42 , result .get ("inner.value" ));
692+ }
659693}
0 commit comments