commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ggreg...@apache.org
Subject svn commit: r1638699 - in /commons/proper/csv/trunk/src: changes/changes.xml main/java/org/apache/commons/csv/CSVFormat.java
Date Wed, 12 Nov 2014 03:49:31 GMT
Author: ggregory
Date: Wed Nov 12 03:49:31 2014
New Revision: 1638699

URL: http://svn.apache.org/r1638699
Log:
[CSV-134] Unified parameter validation.

Modified:
    commons/proper/csv/trunk/src/changes/changes.xml
    commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java

Modified: commons/proper/csv/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/changes/changes.xml?rev=1638699&r1=1638698&r2=1638699&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/changes/changes.xml (original)
+++ commons/proper/csv/trunk/src/changes/changes.xml Wed Nov 12 03:49:31 2014
@@ -44,6 +44,7 @@
       <action issue="CSV-128" type="fix" dev="ggregory">CSVFormat.EXCEL should ignore
empty header names</action>
       <action issue="CSV-132" type="fix" dev="ggregory" due-to="Sascha Szott">Incorrect
Javadoc referencing org.apache.commons.csv.CSVFormat withQuote()</action>
       <action issue="CSV-124" type="update" dev="brentworden" due-to="Kalyan">Improve
toString() implementation of CSVRecord</action>
+      <action issue="CSV-134" type="update" dev="ggregory" due-to="wu wen">Unified
parameter validation</action>
       <action issue="CSV-129" type="add" dev="ggregory">Add CSVFormat#with 0-arg methods
matching boolean arg methods</action>
       <action issue="CSV-131" type="add" dev="ggregory" due-to="Holger Stratmann">Save
positions of records to enable random access</action>
       <action issue="CSV-139" type="add" dev="ggregory">CSVPrinter.printRecord(ResultSet)
with metadata</action>

Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java?rev=1638699&r1=1638698&r2=1638699&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java Wed Nov 12
03:49:31 2014
@@ -348,9 +348,6 @@ public final class CSVFormat implements 
             final boolean ignoreEmptyLines, final String recordSeparator, final String nullString,
             final Object[] headerComments, final String[] header, final boolean skipHeaderRecord,
             final boolean allowMissingColumnNames) {
-        if (isLineBreak(delimiter)) {
-            throw new IllegalArgumentException("The delimiter cannot be a line break");
-        }
         this.delimiter = delimiter;
         this.quoteCharacter = quoteChar;
         this.quoteMode = quoteMode;
@@ -362,18 +359,7 @@ public final class CSVFormat implements 
         this.recordSeparator = recordSeparator;
         this.nullString = nullString;
         this.headerComments = toStringArray(headerComments);
-        if (header == null) {
-            this.header = null;
-        } else {
-            final Set<String> dupCheck = new HashSet<String>();
-            for (final String hdr : header) {
-                if (!dupCheck.add(hdr)) {
-                    throw new IllegalArgumentException("The header contains a duplicate entry:
'" + hdr + "' in " +
-                            Arrays.toString(header));
-                }
-            }
-            this.header = header.clone();
-        }
+        this.header = header == null ? null : header.clone();
         this.skipHeaderRecord = skipHeaderRecord;
         validate();
     }
@@ -742,6 +728,10 @@ public final class CSVFormat implements 
      * @throws IllegalArgumentException
      */
     private void validate() throws IllegalArgumentException {
+        if (isLineBreak(delimiter)) {
+            throw new IllegalArgumentException("The delimiter cannot be a line break");
+        }
+        
         if (quoteCharacter != null && delimiter == quoteCharacter.charValue()) {
             throw new IllegalArgumentException("The quoteChar character and the delimiter
cannot be the same ('" +
                     quoteCharacter + "')");
@@ -770,6 +760,17 @@ public final class CSVFormat implements 
         if (escapeCharacter == null && quoteMode == QuoteMode.NONE) {
             throw new IllegalArgumentException("No quotes mode set but no escape character
is set");
         }
+        
+        // validate header
+        if (header != null) {
+            final Set<String> dupCheck = new HashSet<String>();
+            for (final String hdr : header) {
+                if (!dupCheck.add(hdr)) {
+                    throw new IllegalArgumentException("The header contains a duplicate entry:
'" + hdr + "' in " +
+                            Arrays.toString(header));
+                }
+            }
+        }
     }
 
     /**



Mime
View raw message