You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2017/07/21 04:10:11 UTC

commons-csv git commit: [CSV-213] CSVParser#iterator()#hasNext() fails.

Repository: commons-csv
Updated Branches:
  refs/heads/master 0e3b57507 -> 2305e0e80


[CSV-213] CSVParser#iterator()#hasNext() fails.

Project: http://git-wip-us.apache.org/repos/asf/commons-csv/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-csv/commit/2305e0e8
Tree: http://git-wip-us.apache.org/repos/asf/commons-csv/tree/2305e0e8
Diff: http://git-wip-us.apache.org/repos/asf/commons-csv/diff/2305e0e8

Branch: refs/heads/master
Commit: 2305e0e80c9ceaba6736bea4dbf07c0979279280
Parents: 0e3b575
Author: Gary Gregory <gg...@apache.org>
Authored: Thu Jul 20 21:10:09 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Thu Jul 20 21:10:09 2017 -0700

----------------------------------------------------------------------
 .../commons/csv/issues/JiraCsv213Test.java      | 58 ++++++++++++++++++++
 src/test/resources/CSV-213/999751170.patch.csv  |  2 +
 2 files changed, 60 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-csv/blob/2305e0e8/src/test/java/org/apache/commons/csv/issues/JiraCsv213Test.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/csv/issues/JiraCsv213Test.java b/src/test/java/org/apache/commons/csv/issues/JiraCsv213Test.java
new file mode 100644
index 0000000..c367dd7
--- /dev/null
+++ b/src/test/java/org/apache/commons/csv/issues/JiraCsv213Test.java
@@ -0,0 +1,58 @@
+package org.apache.commons.csv.issues;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.commons.csv.QuoteMode;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Tests https://issues.apache.org/jira/browse/CSV-213
+ * 
+ * This is normal behavior with the current architecture: The iterator() API presents an object that is backed by data
+ * in the CSVParser as the parser is streaming over the file. The CSVParser is like a forward-only stream. When you
+ * create a new Iterator you are only created a new view on the same position in the parser's stream. For the behavior
+ * you want, you need to open a new CSVParser.
+ *
+ */
+@Ignore
+public class JiraCsv213Test {
+
+    private void createEndChannel(File csvFile) {
+        // @formatter:off
+        final CSVFormat csvFormat =
+                CSVFormat.DEFAULT
+                    .withDelimiter(';')
+                    .withFirstRecordAsHeader()
+                    .withRecordSeparator('\n')
+                    .withQuoteMode(QuoteMode.ALL);
+        // @formatter:on
+        try (CSVParser parser = csvFormat
+                .parse(new InputStreamReader(new FileInputStream(csvFile), StandardCharsets.UTF_8))) {
+            if (parser.iterator().hasNext()) {
+                System.out.println(parser.getCurrentLineNumber());
+                System.out.println(parser.getRecordNumber());
+                // get only first record we don't need other's
+                CSVRecord firstRecord = parser.iterator().next(); // this fails
+
+                return;
+            }
+        } catch (IOException e) {
+            throw new RuntimeException("Error while adding end channel to csv", e);
+        }
+
+        return;
+    }
+
+    @Test
+    public void test() {
+        createEndChannel(new File("src/test/resources/CSV-213/999751170.patch.csv"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-csv/blob/2305e0e8/src/test/resources/CSV-213/999751170.patch.csv
----------------------------------------------------------------------
diff --git a/src/test/resources/CSV-213/999751170.patch.csv b/src/test/resources/CSV-213/999751170.patch.csv
new file mode 100644
index 0000000..42a9d1f
--- /dev/null
+++ b/src/test/resources/CSV-213/999751170.patch.csv
@@ -0,0 +1,2 @@
+"CHANELID";"ADDRESS"
+"27";""