Schema rec2 = SchemaBuilder.record("inner2").fields()
.name("f2").type().intType().noDefault()
.endRecord();
GenericData.Record recdef =
new GenericRecordBuilder(rec).set("f", 1).build();
GenericData.Record recdef2 =
new GenericRecordBuilder(rec2).set("f2", 2).build();
Schema r = SchemaBuilder.record("r").fields()
.name("boolF").type().booleanType().booleanDefault(false)
.name("intF").type().intType().intDefault(1)
.name("longF").type().longType().longDefault(2L)
.name("floatF").type().floatType().floatDefault(3.0f)
.name("doubleF").type().doubleType().doubleDefault(4.0d)
.name("stringF").type().stringType().stringDefault("def")
.name("bytesF1").type().bytesType().bytesDefault(bytedef)
.name("bytesF2").type().bytesType().bytesDefault(bufdef)
.name("bytesF3").type().bytesType().bytesDefault(strdef)
.name("nullF").type().nullType().nullDefault()
.name("fixedF1").type().fixed("F1").size(1).fixedDefault(bytedef)
.name("fixedF2").type().fixed("F2").size(1).fixedDefault(bufdef)
.name("fixedF3").type().fixed("F3").size(1).fixedDefault(strdef)
.name("enumF").type().enumeration("E1").symbols("S").enumDefault("S")
.name("mapF").type().map().values().stringType()
.mapDefault(mapdef)
.name("arrayF").type().array().items().stringType()
.arrayDefault(arrdef)
.name("recordF").type().record("inner").fields()
.name("f").type().intType().noDefault()
.endRecord().recordDefault(recdef)
.name("byName").type("E1").withDefault("S")
// union builders, one for each 'first type' in a union:
.name("boolU").type().unionOf().booleanType().and()
.intType().endUnion().booleanDefault(false)
.name("intU").type().unionOf().intType().and()
.longType().endUnion().intDefault(1)
.name("longU").type().unionOf().longType().and()
.intType().endUnion().longDefault(2L)
.name("floatU").type().unionOf().floatType().and()
.intType().endUnion().floatDefault(3.0f)
.name("doubleU").type().unionOf().doubleType().and()
.intType().endUnion().doubleDefault(4.0d)
.name("stringU").type().unionOf().stringType().and()
.intType().endUnion().stringDefault("def")
.name("bytesU").type().unionOf().bytesType().and()
.intType().endUnion().bytesDefault(bytedef)
.name("nullU").type().unionOf().nullType().and()
.intType().endUnion().nullDefault()
.name("fixedU").type().unionOf().fixed("F4").size(1).and()
.intType().endUnion().fixedDefault(bytedef)
.name("enumU").type().unionOf().enumeration("E2").symbols("SS").and()
.intType().endUnion().enumDefault("SS")
.name("mapU").type().unionOf().map().values().stringType().and()
.intType().endUnion().mapDefault(mapdef)
.name("arrayU").type().unionOf().array().items().stringType().and()
.intType().endUnion().arrayDefault(arrdef)
.name("recordU").type().unionOf().record("inner2").fields()
.name("f2").type().intType().noDefault()
.endRecord().and().intType().endUnion().recordDefault(recdef2)
.endRecord();
GenericData.Record newRec =
new GenericRecordBuilder(r).build();
Assert.assertEquals(false, newRec.get("boolF"));
Assert.assertEquals(false, newRec.get("boolU"));
Assert.assertEquals(1, newRec.get("intF"));
Assert.assertEquals(1, newRec.get("intU"));