Author: ggregory
Date: Thu May 15 16:26:26 2014
New Revision: 1594966

URL: http://svn.apache.org/r1594966
Log:
<action issue="CSV-118" type="fix" dev="ggregory" due-to="Enrique 
Lara">CSVRecord.toMap() throws NPE on formats with no headers.</action>

Modified:
    commons/proper/csv/trunk/src/changes/changes.xml
    commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java
    
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.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=1594966&r1=1594965&r2=1594966&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/changes/changes.xml (original)
+++ commons/proper/csv/trunk/src/changes/changes.xml Thu May 15 16:26:26 2014
@@ -40,11 +40,15 @@
   <body>
 
     <release version="1.0" date="TBD" description="First release">
+      <action issue="CSV-118" type="fix" dev="ggregory" due-to="Enrique 
Lara">CSVRecord.toMap() throws NPE on formats with no
+        headers.</action>
       <action issue="CSV-113" type="fix" dev="sebb">Check whether ISE/IAE are 
being used appropriately</action>
       <action issue="CSV-114" type="fix" dev="sebb">CSVFormat constructor 
should reject a header array with duplicate
-        entries</action>
+        entries
+      </action>
       <action issue="CSV-112" type="fix" dev="britter">HeaderMap is 
inconsistent when it is parsed from an input with
-        duplicate columns names</action>
+        duplicate columns names
+      </action>
       <action issue="CSV-111" type="fix" dev="ggregory">CSVRecord.toMap() 
fails if row length shorter than header length
       </action>
       <action issue="CSV-106" type="fix" dev="ggregory">CSVFormat.format 
allways append null</action>
@@ -55,18 +59,21 @@
       </action>
       <action issue="CSV-99" type="update" dev="britter">Revert Builder 
implementation in CSVFormat</action>
       <action issue="CSV-53" type="fix" dev="britter">CSVRecord does not 
verify that the length of the header mapping
-        matches the number of values</action>
+        matches the number of values
+      </action>
       <action issue="CSV-93" type="update" dev="ggregory">Allow the handling 
of NULL values</action>
       <action issue="CSV-68" type="update" dev="ggregory">Use the Builder 
pattern for CSVFormat</action>
       <action issue="CSV-84" type="update" dev="sebb">Clarify comment 
handling</action>
       <action issue="CSV-25" type="update" dev="ebourg">CSVParser.nextValue() 
seems pointless</action>
       <action issue="CSV-97" type="update" dev="ggregory">Allow the String 
value for null to be customized for the CSV
-        printer</action>
+        printer
+      </action>
       <action issue="CSV-88" type="update" dev="ggregory">Not possible to 
create a CSVFormat from scratch</action>
       <action issue="CSV-52" type="add" dev="ggregory">Keep track of record 
number</action>
       <action issue="CSV-94" type="update" dev="sebb">Lexer should only use 
char fields</action>
       <action issue="CSV-92" type="add" dev="ggregory">Need a way to extract 
parsed headers, e.g. for use in formatting
-        output</action>
+        output
+      </action>
       <action issue="CSV-65" type="add" dev="ebourg">Header support</action>
       <action issue="CSV-54" type="fix" dev="sebb">Confusing semantic of the 
ignore leading/trailing spaces parameters
       </action>
@@ -76,7 +83,8 @@
       <action issue="CSV-55" type="update" dev="britter">Replace 
while(true)-loop in CSVParser.getRecord with do-while-loop
       </action>
       <action issue="CSV-34" type="fix" dev="sebb">CSVFormat describes itself 
as immutable, but it is not - in
-        particular it is not thread-safe</action>
+        particular it is not thread-safe
+      </action>
       <action issue="CSV-36" type="fix" dev="yonik">Endless loops in CSV 
parser</action>
       <action issue="CSV-13" type="fix" dev="ebourg">NullPointerException in 
CSVPrinter.print()/println()</action>
       <action issue="CSV-45" type="update" dev="yonik">CSVPrinter 
overhaul</action>

Modified: 
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java
URL: 
http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java?rev=1594966&r1=1594965&r2=1594966&view=diff
==============================================================================
--- 
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java 
(original)
+++ 
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java 
Thu May 15 16:26:26 2014
@@ -177,6 +177,9 @@ public final class CSVRecord implements 
      * @return the given map.
      */
     <M extends Map<String, String>> M putIn(final M map) {
+        if (mapping == null) {
+            return map;
+        }
         for (final Entry<String, Integer> entry : mapping.entrySet()) {
             final int col = entry.getValue().intValue();
             if (col < values.length) {

Modified: 
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java?rev=1594966&r1=1594965&r2=1594966&view=diff
==============================================================================
--- 
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java
 (original)
+++ 
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java
 Thu May 15 16:26:26 2014
@@ -18,6 +18,7 @@ package org.apache.commons.csv;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
@@ -166,6 +167,15 @@ public class CSVRecordTest {
        final CSVRecord shortRec = parser.iterator().next();
        shortRec.toMap();
     }
+
+    @Test
+    public void testToMapWithNoHeader() throws Exception {
+       final CSVParser parser =  CSVParser.parse("a,b", 
CSVFormat.newFormat(','));
+       final CSVRecord shortRec = parser.iterator().next();
+       Map<String, String> map = shortRec.toMap();
+       assertNotNull("Map is not null.", map);
+       assertTrue("Map is empty.", map.isEmpty());
+    }
     
     private void validateMap(final Map<String, String> map, final boolean 
allowsNulls) {
         assertTrue(map.containsKey("first"));


Reply via email to