private Schema avroType(Type spannerType) { switch (spannerType.getCode()) { case BOOL: return SchemaBuilder.builder().booleanType(); case INT64: return SchemaBuilder.builder().longType(); case FLOAT64: return SchemaBuilder.builder().doubleType(); case STRING: return SchemaBuilder.builder().stringType(); case BYTES: return SchemaBuilder.builder().bytesType(); case TIMESTAMP: return SchemaBuilder.builder().stringType(); case DATE: return SchemaBuilder.builder().stringType(); case ARRAY: Schema avroItemsType = avroType(spannerType.getArrayElementType()); return SchemaBuilder.builder().array().items().type(wrapAsNullable(avroItemsType)); default: throw new IllegalArgumentException("Unknown spanner type " + spannerType); } }
@Test(expected=SchemaParseException.class) public void testNamesFailAbsent() { SchemaBuilder.builder().type("notdefined"); }
@Test public void testArray() { Schema longSchema = Schema.create(Schema.Type.LONG); Schema expected = Schema.createArray(longSchema); Schema schema1 = SchemaBuilder.array().items().longType(); Assert.assertEquals(expected, schema1); Schema schema2 = SchemaBuilder.array().items(longSchema); Assert.assertEquals(expected, schema2); Schema schema3 = SchemaBuilder.array().prop("p", "v") .items().type("long"); expected.addProp("p", "v"); Assert.assertEquals(expected, schema3); }
@Test public void testMap() { Schema intSchema = Schema.create(Schema.Type.INT); Schema expected = Schema.createMap(intSchema); Schema schema1 = SchemaBuilder.map().values().intType(); Assert.assertEquals(expected, schema1); Schema schema2 = SchemaBuilder.map().values(intSchema); Assert.assertEquals(expected, schema2); Schema schema3 = SchemaBuilder.map().prop("p", "v") .values().type("int"); expected.addProp("p", "v"); Assert.assertEquals(expected, schema3); }
private Schema primitive(Schema.Type type, Schema bare) { // test creation of bare schema by name Schema bareByName = SchemaBuilder.builder().type(type.getName()); Assert.assertEquals(Schema.create(type), bareByName); Assert.assertEquals(bareByName, bare); // return a schema with custom prop set Schema p = Schema.create(type); p.addProp("p", "v"); return p; }