You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2018/03/13 20:49:59 UTC
nifi git commit: NIFI-4966 - JacksonCSVRecordReader - NPE with some
CSV formats
Repository: nifi
Updated Branches:
refs/heads/master 29c2e1883 -> c75604a56
NIFI-4966 - JacksonCSVRecordReader - NPE with some CSV formats
Signed-off-by: Matthew Burgess <ma...@apache.org>
This closes #2535
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/c75604a5
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/c75604a5
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/c75604a5
Branch: refs/heads/master
Commit: c75604a564c4abf5c4d26b512b4c6d7639fa592b
Parents: 29c2e18
Author: Pierre Villard <pi...@gmail.com>
Authored: Mon Mar 12 23:20:07 2018 +0100
Committer: Matthew Burgess <ma...@apache.org>
Committed: Tue Mar 13 16:49:47 2018 -0400
----------------------------------------------------------------------
.../apache/nifi/csv/JacksonCSVRecordReader.java | 4 ++--
.../nifi/csv/TestJacksonCSVRecordReader.java | 23 ++++++++++++++++++++
2 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/c75604a5/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/JacksonCSVRecordReader.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/JacksonCSVRecordReader.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/JacksonCSVRecordReader.java
index 91cca81..a25df65 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/JacksonCSVRecordReader.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/JacksonCSVRecordReader.java
@@ -103,7 +103,7 @@ public class JacksonCSVRecordReader implements RecordReader {
CsvSchema csvSchema = csvSchemaBuilder.build();
// Add remaining config options to the mapper
- List<CsvParser.Feature> features = new ArrayList<>(3);
+ List<CsvParser.Feature> features = new ArrayList<>();
features.add(CsvParser.Feature.INSERT_NULLS_FOR_MISSING_COLUMNS);
if (csvFormat.getIgnoreEmptyLines()) {
features.add(CsvParser.Feature.SKIP_EMPTY_LINES);
@@ -114,7 +114,7 @@ public class JacksonCSVRecordReader implements RecordReader {
ObjectReader objReader = mapper.readerFor(String[].class)
.with(csvSchema)
- .withFeatures(features.toArray(new CsvParser.Feature[3]));
+ .withFeatures(features.toArray(new CsvParser.Feature[features.size()]));
recordStream = objReader.readValues(reader);
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/c75604a5/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestJacksonCSVRecordReader.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestJacksonCSVRecordReader.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestJacksonCSVRecordReader.java
index 9e08594..66486ee 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestJacksonCSVRecordReader.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestJacksonCSVRecordReader.java
@@ -124,6 +124,29 @@ public class TestJacksonCSVRecordReader {
}
@Test
+ public void testExcelFormat() throws IOException, MalformedRecordException {
+ final List<RecordField> fields = new ArrayList<RecordField>();
+ fields.add(new RecordField("fieldA", RecordFieldType.STRING.getDataType()));
+ fields.add(new RecordField("fieldB", RecordFieldType.STRING.getDataType()));
+ final RecordSchema schema = new SimpleRecordSchema(fields);
+
+ final String headerLine = "fieldA,fieldB";
+ final String inputRecord = "valueA,valueB";
+ final String csvData = headerLine + "\n" + inputRecord;
+ final byte[] inputData = csvData.getBytes();
+
+ try (final InputStream bais = new ByteArrayInputStream(inputData);
+ final JacksonCSVRecordReader reader = createReader(bais, schema, CSVFormat.EXCEL)) {
+
+ final Object[] record = reader.nextRecord().getValues();
+ final Object[] expectedValues = new Object[] {"valueA", "valueB"};
+ Assert.assertArrayEquals(expectedValues, record);
+
+ assertNull(reader.nextRecord());
+ }
+ }
+
+ @Test
public void testMultipleRecords() throws IOException, MalformedRecordException {
final List<RecordField> fields = getDefaultFields();
fields.replaceAll(f -> f.getFieldName().equals("balance") ? new RecordField("balance", doubleDataType) : f);