[jira] [Commented] (CSV-257) Updating from 1.6 to 1.7 breaks

2020-07-02 Thread Holger Brandl (Jira)


[ 
https://issues.apache.org/jira/browse/CSV-257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17150558#comment-17150558
 ] 

Holger Brandl commented on CSV-257:
---

I think that the commons-csv should not be opinionated concerning the question 
if an empty header makes sense or not. It should parse it (if the structure is 
legit csv) and leave this decision to the user.

> Updating from 1.6 to 1.7 breaks
> ---
>
> Key: CSV-257
> URL: https://issues.apache.org/jira/browse/CSV-257
> Project: Commons CSV
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 1.7
>Reporter: xia0c
>Priority: Major
>
> When I try to upgrade commons csv from 1.6 to the latest version 1.7. The 
> following code breaks.
> {code:java}
> public class Demo {
>   @Test
>   public void TestCSV(){
>   try {
>   InputStream testInput = new 
> ByteArrayInputStream(",".getBytes(StandardCharsets.UTF_8));
>   Reader reader = new InputStreamReader(testInput);
>   char character = ",".charAt(0);
> CSVFormat format = 
> CSVFormat.RFC4180.withDelimiter(character).withFirstRecordAsHeader().withIgnoreSurroundingSpaces();
> CSVParser parser = new CSVParser(reader, format);
>   } catch (Exception e) {
>   System.out.println("!!!");
>   assertEquals("java.lang.IllegalArgumentException: The 
> header contains a duplicate name: \"\" in [, ]", e.toString());
>   }
>   }
> }
> {code}
> The test should pass, but it failed with error:
> {code:java}
> org.junit.ComparisonFailure: expected:<...lArgumentException: [The header 
> contains a duplicate name: ""] in [, ]> but was:<...lArgumentException: [A 
> header name is missing] in [, ]>
>   at org.junit.Assert.assertEquals(Assert.java:115)
>   at org.junit.Assert.assertEquals(Assert.java:144)
>   at Demo.TestCSV(Demo.java:31)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>   at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
>   at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (CSV-257) Updating from 1.6 to 1.7 breaks

2020-05-09 Thread Chen (Jira)


[ 
https://issues.apache.org/jira/browse/CSV-257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17103139#comment-17103139
 ] 

Chen commented on CSV-257:
--

Hi, [~lingchao]

And this is just a problem where the error message has been modified because 
[BUG247|https://issues.apache.org/jira/projects/CSV/issues/CSV-247?filter=allissues]

> Updating from 1.6 to 1.7 breaks
> ---
>
> Key: CSV-257
> URL: https://issues.apache.org/jira/browse/CSV-257
> Project: Commons CSV
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 1.7
>Reporter: xia0c
>Priority: Major
>
> When I try to upgrade commons csv from 1.6 to the latest version 1.7. The 
> following code breaks.
> {code:java}
> public class Demo {
>   @Test
>   public void TestCSV(){
>   try {
>   InputStream testInput = new 
> ByteArrayInputStream(",".getBytes(StandardCharsets.UTF_8));
>   Reader reader = new InputStreamReader(testInput);
>   char character = ",".charAt(0);
> CSVFormat format = 
> CSVFormat.RFC4180.withDelimiter(character).withFirstRecordAsHeader().withIgnoreSurroundingSpaces();
> CSVParser parser = new CSVParser(reader, format);
>   } catch (Exception e) {
>   System.out.println("!!!");
>   assertEquals("java.lang.IllegalArgumentException: The 
> header contains a duplicate name: \"\" in [, ]", e.toString());
>   }
>   }
> }
> {code}
> The test should pass, but it failed with error:
> {code:java}
> org.junit.ComparisonFailure: expected:<...lArgumentException: [The header 
> contains a duplicate name: ""] in [, ]> but was:<...lArgumentException: [A 
> header name is missing] in [, ]>
>   at org.junit.Assert.assertEquals(Assert.java:115)
>   at org.junit.Assert.assertEquals(Assert.java:144)
>   at Demo.TestCSV(Demo.java:31)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>   at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
>   at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (CSV-257) Updating from 1.6 to 1.7 breaks

2020-03-05 Thread Chen (Jira)


[ 
https://issues.apache.org/jira/browse/CSV-257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17053102#comment-17053102
 ] 

Chen commented on CSV-257:
--

I don't think that is a problem, after tracing the code in CSVParser.java 
linenum 498 as below .The Parser does not think emptystring is a meaningful 
header
{code:java}
//代码占位符
final boolean emptyHeader = header == null || header.trim().isEmpty();
if (emptyHeader && !this.format.getAllowMissingColumnNames()) {
throw new IllegalArgumentException(
"A header name is missing in " + Arrays.toString(headerRecord));
}
{code}

> Updating from 1.6 to 1.7 breaks
> ---
>
> Key: CSV-257
> URL: https://issues.apache.org/jira/browse/CSV-257
> Project: Commons CSV
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 1.7
>Reporter: xia0c
>Priority: Major
>
> When I try to upgrade commons csv from 1.6 to the latest version 1.7. The 
> following code breaks.
> {code:java}
> public class Demo {
>   @Test
>   public void TestCSV(){
>   try {
>   InputStream testInput = new 
> ByteArrayInputStream(",".getBytes(StandardCharsets.UTF_8));
>   Reader reader = new InputStreamReader(testInput);
>   char character = ",".charAt(0);
> CSVFormat format = 
> CSVFormat.RFC4180.withDelimiter(character).withFirstRecordAsHeader().withIgnoreSurroundingSpaces();
> CSVParser parser = new CSVParser(reader, format);
>   } catch (Exception e) {
>   System.out.println("!!!");
>   assertEquals("java.lang.IllegalArgumentException: The 
> header contains a duplicate name: \"\" in [, ]", e.toString());
>   }
>   }
> }
> {code}
> The test should pass, but it failed with error:
> {code:java}
> org.junit.ComparisonFailure: expected:<...lArgumentException: [The header 
> contains a duplicate name: ""] in [, ]> but was:<...lArgumentException: [A 
> header name is missing] in [, ]>
>   at org.junit.Assert.assertEquals(Assert.java:115)
>   at org.junit.Assert.assertEquals(Assert.java:144)
>   at Demo.TestCSV(Demo.java:31)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>   at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
>   at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (CSV-257) Updating from 1.6 to 1.7 breaks

2020-01-26 Thread Gary D. Gregory (Jira)


[ 
https://issues.apache.org/jira/browse/CSV-257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17023941#comment-17023941
 ] 

Gary D. Gregory commented on CSV-257:
-

This example is obtuse to me; why do you write:
{code:java}
",".charAt(0);
{code}
instead of
{code:java}
'c'
{code}
?
 Same for the obfuscation of building the reader. Are we to conclude that the 
whole input for your data file is:
{noformat}
,
{noformat}
Which is seems meaningless are a header record.

What am I missing?

> Updating from 1.6 to 1.7 breaks
> ---
>
> Key: CSV-257
> URL: https://issues.apache.org/jira/browse/CSV-257
> Project: Commons CSV
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 1.7
>Reporter: xia0c
>Priority: Major
>
> When I try to upgrade commons csv from 1.6 to the latest version 1.7. The 
> following code breaks.
> {code:java}
> public class Demo {
>   @Test
>   public void TestCSV(){
>   try {
>   InputStream testInput = new 
> ByteArrayInputStream(",".getBytes(StandardCharsets.UTF_8));
>   Reader reader = new InputStreamReader(testInput);
>   char character = ",".charAt(0);
> CSVFormat format = 
> CSVFormat.RFC4180.withDelimiter(character).withFirstRecordAsHeader().withIgnoreSurroundingSpaces();
> CSVParser parser = new CSVParser(reader, format);
>   } catch (Exception e) {
>   System.out.println("!!!");
>   assertEquals("java.lang.IllegalArgumentException: The 
> header contains a duplicate name: \"\" in [, ]", e.toString());
>   }
>   }
> }
> {code}
> The test should pass, but it failed with error:
> {code:java}
> org.junit.ComparisonFailure: expected:<...lArgumentException: [The header 
> contains a duplicate name: ""] in [, ]> but was:<...lArgumentException: [A 
> header name is missing] in [, ]>
>   at org.junit.Assert.assertEquals(Assert.java:115)
>   at org.junit.Assert.assertEquals(Assert.java:144)
>   at Demo.TestCSV(Demo.java:31)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>   at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
>   at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
>   at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)