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 2013/07/30 21:32:40 UTC
svn commit: r1508585 - in /commons/proper/csv/trunk/src:
main/java/org/apache/commons/csv/CSVFormat.java
main/java/org/apache/commons/csv/CSVParser.java
test/java/org/apache/commons/csv/CSVFormatTest.java
Author: ggregory
Date: Tue Jul 30 19:32:40 2013
New Revision: 1508585
URL: http://svn.apache.org/r1508585
Log:
Make org.apache.commons.csv.CSVFormat.getHeader() public and make it return a clone.
Modified:
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java
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=1508585&r1=1508584&r2=1508585&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 Tue Jul 30 19:32:40 2013
@@ -334,8 +334,13 @@ public class CSVFormat implements Serial
return escape;
}
- String[] getHeader() {
- return header;
+ /**
+ * Returns a copy of the header array.
+ *
+ * @return a copy of the header array
+ */
+ public String[] getHeader() {
+ return header != null ? header.clone() : null;
}
/**
Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java?rev=1508585&r1=1508584&r2=1508585&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVParser.java Tue Jul 30 19:32:40 2013
@@ -321,18 +321,19 @@ public class CSVParser implements Iterab
*/
private Map<String, Integer> initializeHeader() throws IOException {
Map<String, Integer> hdrMap = null;
- if (this.format.getHeader() != null) {
+ String[] formatHeader = this.format.getHeader();
+ if (formatHeader != null) {
hdrMap = new LinkedHashMap<String, Integer>();
String[] header = null;
- if (this.format.getHeader().length == 0) {
+ if (formatHeader.length == 0) {
// read the header from the first line of the file
final CSVRecord record = this.nextRecord();
if (record != null) {
header = record.values();
}
} else {
- header = this.format.getHeader();
+ header = formatHeader;
}
// build the name to index mappings
Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java?rev=1508585&r1=1508584&r2=1508585&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVFormatTest.java Tue Jul 30 19:32:40 2013
@@ -31,6 +31,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.util.Arrays;
import org.junit.Test;
@@ -224,9 +225,27 @@ public class CSVFormatTest {
@Test
public void testWithHeader() throws Exception {
String[] header = new String[]{"one", "two", "three"};
+ // withHeader() makes a copy of the header array.
CSVFormat formatWithHeader = CSVFormat.DEFAULT.withHeader(header);
assertArrayEquals(header, formatWithHeader.getHeader());
assertNotSame(header, formatWithHeader.getHeader());
+ header[0] = "A";
+ header[1] = "B";
+ header[2] = "C";
+ assertFalse(Arrays.equals(formatWithHeader.getHeader(), header));
+ }
+
+ @Test
+ public void testGetHeader() throws Exception {
+ String[] header = new String[]{"one", "two", "three"};
+ CSVFormat formatWithHeader = CSVFormat.DEFAULT.withHeader(header);
+ // getHeader() makes a copy of the header array.
+ String[] headerCopy = formatWithHeader.getHeader();
+ headerCopy[0] = "A";
+ headerCopy[1] = "B";
+ headerCopy[2] = "C";
+ assertFalse(Arrays.equals(formatWithHeader.getHeader(), headerCopy));
+ assertNotSame(formatWithHeader.getHeader(), headerCopy);
}
@Test