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, ",");

Reply via email to