use of org.apache.beam.sdk.values.Row in project beam by apache.
the class JavaFieldSchemaTest method testEnumFieldFromRow.
@Test
public void testEnumFieldFromRow() throws NoSuchSchemaException {
SchemaRegistry registry = SchemaRegistry.createDefault();
Schema schema = registry.getSchema(PojoWithEnum.class);
SchemaTestUtils.assertSchemaEquivalent(POJO_WITH_ENUM_SCHEMA, schema);
EnumerationType enumerationType = ENUMERATION;
List<EnumerationType.Value> allColors = Lists.newArrayList(enumerationType.valueOf("RED"), enumerationType.valueOf("GREEN"), enumerationType.valueOf("BLUE"));
Row redRow = Row.withSchema(POJO_WITH_ENUM_SCHEMA).addValues(enumerationType.valueOf("RED"), allColors).build();
Row greenRow = Row.withSchema(POJO_WITH_ENUM_SCHEMA).addValues(enumerationType.valueOf("GREEN"), allColors).build();
Row blueRow = Row.withSchema(POJO_WITH_ENUM_SCHEMA).addValues(enumerationType.valueOf("BLUE"), allColors).build();
SerializableFunction<Row, PojoWithEnum> fromRow = registry.getFromRowFunction(PojoWithEnum.class);
List<Color> allColorsJava = Lists.newArrayList(Color.RED, Color.GREEN, Color.BLUE);
assertEquals(new PojoWithEnum(Color.RED, allColorsJava), fromRow.apply(redRow));
assertEquals(new PojoWithEnum(Color.GREEN, allColorsJava), fromRow.apply(greenRow));
assertEquals(new PojoWithEnum(Color.BLUE, allColorsJava), fromRow.apply(blueRow));
}
use of org.apache.beam.sdk.values.Row in project beam by apache.
the class JavaFieldSchemaTest method testToRow.
@Test
public void testToRow() throws NoSuchSchemaException {
SchemaRegistry registry = SchemaRegistry.createDefault();
SimplePOJO pojo = createSimple("string");
Row row = registry.getToRowFunction(SimplePOJO.class).apply(pojo);
assertEquals(12, row.getFieldCount());
assertEquals("string", row.getString("str"));
assertEquals((byte) 1, (Object) row.getByte("aByte"));
assertEquals((short) 2, (Object) row.getInt16("aShort"));
assertEquals((int) 3, (Object) row.getInt32("anInt"));
assertEquals((long) 4, (Object) row.getInt64("aLong"));
assertTrue(row.getBoolean("aBoolean"));
assertEquals(DATE.toInstant(), row.getDateTime("dateTime"));
assertEquals(INSTANT, row.getDateTime("instant").toInstant());
assertArrayEquals(BYTE_ARRAY, row.getBytes("bytes"));
assertArrayEquals(BYTE_BUFFER.array(), row.getBytes("byteBuffer"));
assertEquals(BigDecimal.ONE, row.getDecimal("bigDecimal"));
assertEquals("stringbuilder", row.getString("stringBuilder"));
}
use of org.apache.beam.sdk.values.Row in project beam by apache.
the class JavaFieldSchemaTest method testNestedArraysToRow.
@Test
public void testNestedArraysToRow() throws NoSuchSchemaException {
SchemaRegistry registry = SchemaRegistry.createDefault();
Schema schema = registry.getSchema(PojoWithNestedArray.class);
SchemaTestUtils.assertSchemaEquivalent(POJO_WITH_NESTED_ARRAY_SCHEMA, schema);
Row simpleRow = createSimpleRow("string");
List<Row> list = ImmutableList.of(simpleRow, simpleRow);
List<List<Row>> listOfList = ImmutableList.of(list, list);
Row nestedRow = Row.withSchema(POJO_WITH_NESTED_ARRAY_SCHEMA).addValue(listOfList).build();
SimplePOJO simplePojo = createSimple("string");
List<SimplePOJO> simplePojoList = ImmutableList.of(simplePojo, simplePojo);
List<List<SimplePOJO>> simplePojoListOfList = ImmutableList.of(simplePojoList, simplePojoList);
Row converted = registry.getToRowFunction(PojoWithNestedArray.class).apply(new PojoWithNestedArray(simplePojoListOfList));
assertEquals(nestedRow, converted);
}
use of org.apache.beam.sdk.values.Row in project beam by apache.
the class JavaFieldSchemaTest method testPrimitiveArrayGetters.
@Test
public void testPrimitiveArrayGetters() throws NoSuchSchemaException {
SchemaRegistry registry = SchemaRegistry.createDefault();
SchemaTestUtils.assertSchemaEquivalent(PRIMITIVE_ARRAY_POJO_SCHEMA, registry.getSchema(PrimitiveArrayPOJO.class));
List<String> strList = ImmutableList.of("a", "b", "c");
int[] intArray = { 1, 2, 3, 4 };
Long[] longArray = { 42L, 43L, 44L };
PrimitiveArrayPOJO pojo = new PrimitiveArrayPOJO(strList, intArray, longArray);
Row row = registry.getToRowFunction(PrimitiveArrayPOJO.class).apply(pojo);
assertEquals(strList, row.getArray("strings"));
assertEquals(Ints.asList(intArray), row.getArray("integers"));
assertEquals(Arrays.asList(longArray), row.getArray("longs"));
// Ensure that list caching works.
assertSame(row.getArray("strings"), row.getArray("strings"));
assertSame(row.getArray("integers"), row.getArray("integers"));
assertSame(row.getArray("longs"), row.getArray("longs"));
}
use of org.apache.beam.sdk.values.Row in project beam by apache.
the class JavaFieldSchemaTest method testAnnotations.
@Test
public void testAnnotations() throws NoSuchSchemaException {
SchemaRegistry registry = SchemaRegistry.createDefault();
Schema schema = registry.getSchema(AnnotatedSimplePojo.class);
SchemaTestUtils.assertSchemaEquivalent(ANNOTATED_SIMPLE_POJO_SCHEMA, schema);
Row simpleRow = createAnnotatedRow("string");
AnnotatedSimplePojo pojo = createAnnotated("string");
assertEquals(simpleRow, registry.getToRowFunction(AnnotatedSimplePojo.class).apply(pojo));
AnnotatedSimplePojo pojo2 = registry.getFromRowFunction(AnnotatedSimplePojo.class).apply(simpleRow);
assertEquals(pojo, pojo2);
}
Aggregations