Repository: nifi Updated Branches: refs/heads/support/nifi-1.1.x 48246f1c1 -> 2f43ad363
NIFI-3175 Fix a bug in the ValidateCSV processor to handle empty CSV columns This closes #1311. Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/2f43ad36 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/2f43ad36 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/2f43ad36 Branch: refs/heads/support/nifi-1.1.x Commit: 2f43ad3637d1997f7ebeadfe31720c65b039a725 Parents: 48246f1 Author: Wesley-Lawrence <wesleyll...@gmail.com> Authored: Thu Dec 8 19:32:54 2016 -0500 Committer: Pierre Villard <pierre.villard...@gmail.com> Committed: Fri Dec 16 07:58:00 2016 +0100 ---------------------------------------------------------------------- .../nifi/processors/standard/ValidateCsv.java | 11 ++++++++--- .../processors/standard/TestValidateCsv.java | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/2f43ad36/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateCsv.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateCsv.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateCsv.java index 4788080..44bb35d 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateCsv.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateCsv.java @@ -580,11 +580,16 @@ public class ValidateCsv extends AbstractProcessor { } final int size = list.size(); - for(int i = 0; i < size; i++) { - buffer.append(list.get(i).toString()); - if(i != size - 1) { + int i = 0; + for (Object item : list) { + if (item != null) { + buffer.append(item.toString()); + } + + if (i < size - 1) { buffer.append((char) csvPref.getDelimiterChar()); } + i++; } return buffer.toString().getBytes(); http://git-wip-us.apache.org/repos/asf/nifi/blob/2f43ad36/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateCsv.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateCsv.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateCsv.java index d3c6493..09a83f2 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateCsv.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateCsv.java @@ -61,6 +61,25 @@ public class TestValidateCsv { } @Test + public void testNullValues() { + final TestRunner runner = TestRunners.newTestRunner(new ValidateCsv()); + runner.setProperty(ValidateCsv.DELIMITER_CHARACTER, ","); + runner.setProperty(ValidateCsv.END_OF_LINE_CHARACTER, "\n"); + runner.setProperty(ValidateCsv.QUOTE_CHARACTER, "\""); + runner.setProperty(ValidateCsv.HEADER, "true"); + runner.setProperty(ValidateCsv.VALIDATION_STRATEGY, ValidateCsv.VALIDATE_LINES_INDIVIDUALLY); + + runner.setProperty(ValidateCsv.SCHEMA, "Null, Null, Null"); + + runner.enqueue("#Name,Birthdate,Weight\nJohn,\"\",63.2\nBob,,45.0"); + runner.run(); + + runner.assertTransferCount(ValidateCsv.REL_VALID, 1); + runner.getFlowFilesForRelationship(ValidateCsv.REL_VALID).get(0).assertContentEquals("#Name,Birthdate,Weight\nJohn,,63.2\nBob,,45.0"); + runner.assertTransferCount(ValidateCsv.REL_INVALID, 0); + } + + @Test public void testUniqueWithSplit() { final TestRunner runner = TestRunners.newTestRunner(new ValidateCsv()); runner.setProperty(ValidateCsv.DELIMITER_CHARACTER, ",");