From 92e1e39fe97cb436beee6ad5c7edd2d8eea228f9 Mon Sep 17 00:00:00 2001 From: Mikhail Medvedev Date: Mon, 22 Mar 2021 14:30:38 +0400 Subject: [PATCH 1/2] Fix bug incorrect DSG url lead to NPE #DATAFLOW-139 --- .../complete/datatokenization/utils/RowToCsv.java | 5 ++++- .../datatokenization/DataTokenizationTest.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/RowToCsv.java b/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/RowToCsv.java index 2b4f3b32469b..f8ab7d4ff39f 100644 --- a/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/RowToCsv.java +++ b/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/RowToCsv.java @@ -30,6 +30,9 @@ public RowToCsv(String csvDelimiter) { } public String getCsvFromRow(Row row) { - return row.getValues().stream().map(Object::toString).collect(Collectors.joining(csvDelimiter)); + return row.getValues().stream() + .map(item -> item == null ? "null" : item) + .map(Object::toString) + .collect(Collectors.joining(csvDelimiter)); } } diff --git a/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java b/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java index 883417b31b74..389154c4d669 100644 --- a/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java +++ b/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java @@ -104,6 +104,21 @@ public void testRowToCSV() { Assert.assertEquals(String.join(";", fields), csvResult); } + @Test + public void testRowToCSVWithNull() { + final String NULLABLE_TEST_SCHEMA = + "{\"fields\":[{\"mode\":\"REQUIRED\",\"name\":\"FieldName1\",\"type\":\"STRING\"},{\"mode\":\"NULLABLE\",\"name\":\"FieldName2\",\"type\":\"STRING\"}]}"; + final String EXPECTED_CSV = "TestValueOne;null"; + + List values = Lists.newArrayList("TestValueOne", null); + + Schema beamSchema = new SchemasUtils(NULLABLE_TEST_SCHEMA).getBeamSchema(); + Row.Builder rowBuilder = Row.withSchema(beamSchema); + Row row = rowBuilder.addValues(values).build(); + String csvResult = new RowToCsv(";").getCsvFromRow(row); + Assert.assertEquals(EXPECTED_CSV, csvResult); + } + @Test public void testFileSystemIOReadCSV() throws IOException { PCollection jsons = fileSystemIORead(CSV_FILE_PATH, FORMAT.CSV); From 716dd9e53cc656b9a0a371b037e172682fb24a3e Mon Sep 17 00:00:00 2001 From: Mikhail Medvedev Date: Mon, 22 Mar 2021 16:23:18 +0400 Subject: [PATCH 2/2] Fix code style #DATAFLOW-139 --- .../complete/datatokenization/DataTokenizationTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java b/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java index 389154c4d669..949bdea84af4 100644 --- a/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java +++ b/examples/java/src/test/java/org/apache/beam/examples/complete/datatokenization/DataTokenizationTest.java @@ -106,17 +106,17 @@ public void testRowToCSV() { @Test public void testRowToCSVWithNull() { - final String NULLABLE_TEST_SCHEMA = + final String nullableTestSchema = "{\"fields\":[{\"mode\":\"REQUIRED\",\"name\":\"FieldName1\",\"type\":\"STRING\"},{\"mode\":\"NULLABLE\",\"name\":\"FieldName2\",\"type\":\"STRING\"}]}"; - final String EXPECTED_CSV = "TestValueOne;null"; + final String expectedCsv = "TestValueOne;null"; List values = Lists.newArrayList("TestValueOne", null); - Schema beamSchema = new SchemasUtils(NULLABLE_TEST_SCHEMA).getBeamSchema(); + Schema beamSchema = new SchemasUtils(nullableTestSchema).getBeamSchema(); Row.Builder rowBuilder = Row.withSchema(beamSchema); Row row = rowBuilder.addValues(values).build(); String csvResult = new RowToCsv(";").getCsvFromRow(row); - Assert.assertEquals(EXPECTED_CSV, csvResult); + Assert.assertEquals(expectedCsv, csvResult); } @Test