From e631851e0f7e82b1e4bd33eb214fbd875a0d6cb1 Mon Sep 17 00:00:00 2001 From: Zoltan Kornel Torok Date: Fri, 21 Feb 2020 16:13:40 +0100 Subject: [PATCH] NIFI-7178 - Handle the case when schema is not available Signed-off-by: Pierre Villard This closes #4067. --- .../java/org/apache/nifi/json/JsonPathRowRecordReader.java | 4 ++-- .../org/apache/nifi/json/TestJsonPathRowRecordReader.java | 4 ++++ .../src/test/resources/json/timestamp.json | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java index c977cfd5ae..74308f435d 100644 --- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java +++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java @@ -180,7 +180,7 @@ public class JsonPathRowRecordReader extends AbstractJsonRowRecordReader { return new MapRecord(childSchema, values); } - if (value instanceof String) { + if (dataType != null && value instanceof String) { switch (dataType.getFieldType()) { case DATE: case TIME: @@ -243,4 +243,4 @@ public class JsonPathRowRecordReader extends AbstractJsonRowRecordReader { } } -} \ No newline at end of file +} diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonPathRowRecordReader.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonPathRowRecordReader.java index d97017c228..0b16c38ba4 100644 --- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonPathRowRecordReader.java +++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonPathRowRecordReader.java @@ -174,6 +174,7 @@ public class TestJsonPathRowRecordReader { final LinkedHashMap jsonPaths = new LinkedHashMap<>(); jsonPaths.put("timestamp", JsonPath.compile("$.timestamp")); + jsonPaths.put("field_not_in_schema", JsonPath.compile("$.field_not_in_schema")); for (final boolean coerceTypes : new boolean[] {true, false}) { try (final InputStream in = new FileInputStream(new File("src/test/resources/json/timestamp.json")); @@ -182,6 +183,9 @@ public class TestJsonPathRowRecordReader { final Record record = reader.nextRecord(coerceTypes, false); final Object value = record.getValue("timestamp"); assertTrue("With coerceTypes set to " + coerceTypes + ", value is not a Timestamp", value instanceof java.sql.Timestamp); + + final Object valueNotInSchema = record.getValue("field_not_in_schema"); + assertTrue("field_not_in_schema should be String", valueNotInSchema instanceof String); } } } diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/timestamp.json b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/timestamp.json index ee5d90f119..2a064034af 100644 --- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/timestamp.json +++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/timestamp.json @@ -1 +1 @@ -{"timestamp": "2019/06/27 13:04:04"} \ No newline at end of file +{"timestamp": "2019/06/27 13:04:04", "field_not_in_schema" : "some_value"} \ No newline at end of file