This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-csv.git


The following commit(s) were added to refs/heads/master by this push:
     new 8ad07df0 Use try-with-resources
8ad07df0 is described below

commit 8ad07df0d453a8066c708a0ff0edce1fdcd474cc
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sun Oct 23 16:59:56 2022 -0400

    Use try-with-resources
---
 .../java/org/apache/commons/csv/CSVParserTest.java | 278 +++++++++++----------
 .../org/apache/commons/csv/CSVPrinterTest.java     |   4 +-
 .../apache/commons/csv/issues/JiraCsv264Test.java  |   5 +-
 .../apache/commons/csv/issues/JiraCsv290Test.java  |  24 +-
 4 files changed, 169 insertions(+), 142 deletions(-)

diff --git a/src/test/java/org/apache/commons/csv/CSVParserTest.java 
b/src/test/java/org/apache/commons/csv/CSVParserTest.java
index ce26ca7b..ae4769f0 100644
--- a/src/test/java/org/apache/commons/csv/CSVParserTest.java
+++ b/src/test/java/org/apache/commons/csv/CSVParserTest.java
@@ -901,22 +901,25 @@ public class CSVParserTest {
     @Test
     public void testHeadersWithNullColumnName() throws IOException {
         final Reader in = new 
StringReader("header1,null,header3\n1,2,3\n4,5,6");
-        final Iterator<CSVRecord> records = 
CSVFormat.DEFAULT.withHeader().withNullString("null").withAllowMissingColumnNames().parse(in).iterator();
-        final CSVRecord record = records.next();
-        // Expect the null header to be missing
-        assertEquals(Arrays.asList("header1", "header3"), 
record.getParser().getHeaderNames());
-        assertEquals(2, record.getParser().getHeaderMap().size());
+        try (final CSVParser parser = 
CSVFormat.DEFAULT.withHeader().withNullString("null").withAllowMissingColumnNames().parse(in))
 {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            // Expect the null header to be missing
+            assertEquals(Arrays.asList("header1", "header3"), 
record.getParser().getHeaderNames());
+            assertEquals(2, record.getParser().getHeaderMap().size());
+        }
     }
 
     @Test
     public void testIgnoreCaseHeaderMapping() throws Exception {
         final Reader reader = new StringReader("1,2,3");
-        final Iterator<CSVRecord> records = 
CSVFormat.DEFAULT.withHeader("One", "TWO", 
"three").withIgnoreHeaderCase().parse(reader).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("one"));
-        assertEquals("2", record.get("two"));
-        assertEquals("3", record.get("THREE"));
-    }
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("One", 
"TWO", "three").withIgnoreHeaderCase().parse(reader)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("one"));
+            assertEquals("2", record.get("two"));
+            assertEquals("3", record.get("THREE"));
+        }}
 
     @Test
     public void testIgnoreEmptyLines() throws IOException {
@@ -938,20 +941,21 @@ public class CSVParserTest {
     public void testIterator() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
 
-        final Iterator<CSVRecord> iterator = 
CSVFormat.DEFAULT.parse(in).iterator();
+        try (final CSVParser parser = CSVFormat.DEFAULT.parse(in)) {
+            final Iterator<CSVRecord> iterator = parser.iterator();
 
-        assertTrue(iterator.hasNext());
-        assertThrows(UnsupportedOperationException.class, iterator::remove);
-        assertArrayEquals(new String[] {"a", "b", "c"}, 
iterator.next().values());
-        assertArrayEquals(new String[] {"1", "2", "3"}, 
iterator.next().values());
-        assertTrue(iterator.hasNext());
-        assertTrue(iterator.hasNext());
-        assertTrue(iterator.hasNext());
-        assertArrayEquals(new String[] {"x", "y", "z"}, 
iterator.next().values());
-        assertFalse(iterator.hasNext());
+            assertTrue(iterator.hasNext());
+            assertThrows(UnsupportedOperationException.class, 
iterator::remove);
+            assertArrayEquals(new String[] { "a", "b", "c" }, 
iterator.next().values());
+            assertArrayEquals(new String[] { "1", "2", "3" }, 
iterator.next().values());
+            assertTrue(iterator.hasNext());
+            assertTrue(iterator.hasNext());
+            assertTrue(iterator.hasNext());
+            assertArrayEquals(new String[] { "x", "y", "z" }, 
iterator.next().values());
+            assertFalse(iterator.hasNext());
 
-        assertThrows(NoSuchElementException.class, iterator::next);
-    }
+            assertThrows(NoSuchElementException.class, iterator::next);
+        }}
 
     @Test
     public void testIteratorSequenceBreaking() throws IOException {
@@ -1024,35 +1028,37 @@ public class CSVParserTest {
     @Test
     public void testMappedButNotSetAsOutlook2007ContactExport() throws 
Exception {
         final Reader in = new StringReader("a,b,c\n1,2\nx,y,z");
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("A", 
"B", "C").withSkipHeaderRecord().parse(in).iterator();
-        CSVRecord record;
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("A", "B", 
"C").withSkipHeaderRecord().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            CSVRecord record;
 
-        // 1st record
-        record = records.next();
-        assertTrue(record.isMapped("A"));
-        assertTrue(record.isMapped("B"));
-        assertTrue(record.isMapped("C"));
-        assertTrue(record.isSet("A"));
-        assertTrue(record.isSet("B"));
-        assertFalse(record.isSet("C"));
-        assertEquals("1", record.get("A"));
-        assertEquals("2", record.get("B"));
-        assertFalse(record.isConsistent());
-
-        // 2nd record
-        record = records.next();
-        assertTrue(record.isMapped("A"));
-        assertTrue(record.isMapped("B"));
-        assertTrue(record.isMapped("C"));
-        assertTrue(record.isSet("A"));
-        assertTrue(record.isSet("B"));
-        assertTrue(record.isSet("C"));
-        assertEquals("x", record.get("A"));
-        assertEquals("y", record.get("B"));
-        assertEquals("z", record.get("C"));
-        assertTrue(record.isConsistent());
+            // 1st record
+            record = records.next();
+            assertTrue(record.isMapped("A"));
+            assertTrue(record.isMapped("B"));
+            assertTrue(record.isMapped("C"));
+            assertTrue(record.isSet("A"));
+            assertTrue(record.isSet("B"));
+            assertFalse(record.isSet("C"));
+            assertEquals("1", record.get("A"));
+            assertEquals("2", record.get("B"));
+            assertFalse(record.isConsistent());
+
+            // 2nd record
+            record = records.next();
+            assertTrue(record.isMapped("A"));
+            assertTrue(record.isMapped("B"));
+            assertTrue(record.isMapped("C"));
+            assertTrue(record.isSet("A"));
+            assertTrue(record.isSet("B"));
+            assertTrue(record.isSet("C"));
+            assertEquals("x", record.get("A"));
+            assertEquals("y", record.get("B"));
+            assertEquals("z", record.get("C"));
+            assertTrue(record.isConsistent());
 
-        assertFalse(records.hasNext());
+            assertFalse(records.hasNext());
+        }
     }
 
     @Test
@@ -1113,9 +1119,10 @@ public class CSVParserTest {
     public void testNotValueCSV() throws IOException {
         final String source = "#";
         final CSVFormat csvFormat = CSVFormat.DEFAULT.withCommentMarker('#');
-        final CSVParser csvParser = csvFormat.parse(new StringReader(source));
-        final CSVRecord csvRecord = csvParser.nextRecord();
-        assertNull(csvRecord);
+        try (final CSVParser csvParser = csvFormat.parse(new 
StringReader(source))) {
+            final CSVRecord csvRecord = csvParser.nextRecord();
+            assertNull(csvRecord);
+        }
     }
 
     @Test
@@ -1258,102 +1265,115 @@ public class CSVParserTest {
     public void testProvidedHeader() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
 
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("A", 
"B", "C").parse(in).iterator();
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("A", "B", 
"C").parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
 
-        for (int i = 0; i < 3; i++) {
-            assertTrue(records.hasNext());
-            final CSVRecord record = records.next();
-            assertTrue(record.isMapped("A"));
-            assertTrue(record.isMapped("B"));
-            assertTrue(record.isMapped("C"));
-            assertFalse(record.isMapped("NOT MAPPED"));
-            assertEquals(record.get(0), record.get("A"));
-            assertEquals(record.get(1), record.get("B"));
-            assertEquals(record.get(2), record.get("C"));
-        }
+            for (int i = 0; i < 3; i++) {
+                assertTrue(records.hasNext());
+                final CSVRecord record = records.next();
+                assertTrue(record.isMapped("A"));
+                assertTrue(record.isMapped("B"));
+                assertTrue(record.isMapped("C"));
+                assertFalse(record.isMapped("NOT MAPPED"));
+                assertEquals(record.get(0), record.get("A"));
+                assertEquals(record.get(1), record.get("B"));
+                assertEquals(record.get(2), record.get("C"));
+            }
 
-        assertFalse(records.hasNext());
+            assertFalse(records.hasNext());
+        }
     }
 
     @Test
     public void testProvidedHeaderAuto() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
 
-        final Iterator<CSVRecord> records = 
CSVFormat.DEFAULT.withHeader().parse(in).iterator();
+        try (final CSVParser parser = 
CSVFormat.DEFAULT.withHeader().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+
+            for (int i = 0; i < 2; i++) {
+                assertTrue(records.hasNext());
+                final CSVRecord record = records.next();
+                assertTrue(record.isMapped("a"));
+                assertTrue(record.isMapped("b"));
+                assertTrue(record.isMapped("c"));
+                assertFalse(record.isMapped("NOT MAPPED"));
+                assertEquals(record.get(0), record.get("a"));
+                assertEquals(record.get(1), record.get("b"));
+                assertEquals(record.get(2), record.get("c"));
+            }
 
-        for (int i = 0; i < 2; i++) {
-            assertTrue(records.hasNext());
-            final CSVRecord record = records.next();
-            assertTrue(record.isMapped("a"));
-            assertTrue(record.isMapped("b"));
-            assertTrue(record.isMapped("c"));
-            assertFalse(record.isMapped("NOT MAPPED"));
-            assertEquals(record.get(0), record.get("a"));
-            assertEquals(record.get(1), record.get("b"));
-            assertEquals(record.get(2), record.get("c"));
+            assertFalse(records.hasNext());
         }
-
-        assertFalse(records.hasNext());
     }
 
     @Test
     public void testRepeatedHeadersAreReturnedInCSVRecordHeaderNames() throws 
IOException {
         final Reader in = new 
StringReader("header1,header2,header1\n1,2,3\n4,5,6");
-        final Iterator<CSVRecord> records = 
CSVFormat.DEFAULT.withFirstRecordAsHeader().withTrim().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals(Arrays.asList("header1", "header2", "header1"), 
record.getParser().getHeaderNames());
-    }
+        try (final CSVParser parser = 
CSVFormat.DEFAULT.withFirstRecordAsHeader().withTrim().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals(Arrays.asList("header1", "header2", "header1"), 
record.getParser().getHeaderNames());
+        }}
 
     @Test
     public void testRoundtrip() throws Exception {
         final StringWriter out = new StringWriter();
-        try (final CSVPrinter printer = new CSVPrinter(out, 
CSVFormat.DEFAULT)) {
-            final String input = "a,b,c\r\n1,2,3\r\nx,y,z\r\n";
-            for (final CSVRecord record : CSVParser.parse(input, 
CSVFormat.DEFAULT)) {
+        final String data = "a,b,c\r\n1,2,3\r\nx,y,z\r\n";
+        try (final CSVPrinter printer = new CSVPrinter(out, CSVFormat.DEFAULT);
+                final CSVParser parse = CSVParser.parse(data, 
CSVFormat.DEFAULT)) {
+            for (final CSVRecord record : parse) {
                 printer.printRecord(record);
             }
-            assertEquals(input, out.toString());
+            assertEquals(data, out.toString());
         }
     }
 
     @Test
     public void testSkipAutoHeader() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
-        final Iterator<CSVRecord> records = 
CSVFormat.DEFAULT.withHeader().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("a"));
-        assertEquals("2", record.get("b"));
-        assertEquals("3", record.get("c"));
+        try (final CSVParser parser = 
CSVFormat.DEFAULT.withHeader().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("a"));
+            assertEquals("2", record.get("b"));
+            assertEquals("3", record.get("c"));
+        }
     }
 
     @Test
     public void testSkipHeaderOverrideDuplicateHeaders() throws Exception {
         final Reader in = new StringReader("a,a,a\n1,2,3\nx,y,z");
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("X", 
"Y", "Z").withSkipHeaderRecord().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("X"));
-        assertEquals("2", record.get("Y"));
-        assertEquals("3", record.get("Z"));
-    }
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("X", "Y", 
"Z").withSkipHeaderRecord().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("X"));
+            assertEquals("2", record.get("Y"));
+            assertEquals("3", record.get("Z"));
+        }}
 
     @Test
     public void testSkipSetAltHeaders() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("X", 
"Y", "Z").withSkipHeaderRecord().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("X"));
-        assertEquals("2", record.get("Y"));
-        assertEquals("3", record.get("Z"));
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("X", "Y", 
"Z").withSkipHeaderRecord().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("X"));
+            assertEquals("2", record.get("Y"));
+            assertEquals("3", record.get("Z"));
+        }
     }
 
     @Test
     public void testSkipSetHeader() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("a", 
"b", "c").withSkipHeaderRecord().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("a"));
-        assertEquals("2", record.get("b"));
-        assertEquals("3", record.get("c"));
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("a", "b", 
"c").withSkipHeaderRecord().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("a"));
+            assertEquals("2", record.get("b"));
+            assertEquals("3", record.get("c"));
+        }
     }
 
     @Test
@@ -1377,34 +1397,38 @@ public class CSVParserTest {
     @Test
     public void testStream() throws Exception {
         final Reader in = new StringReader("a,b,c\n1,2,3\nx,y,z");
-        final List<CSVRecord> list = 
CSVFormat.DEFAULT.parse(in).stream().collect(Collectors.toList());
-        assertFalse(list.isEmpty());
-        assertArrayEquals(new String[] {"a", "b", "c"}, list.get(0).values());
-        assertArrayEquals(new String[] {"1", "2", "3"}, list.get(1).values());
-        assertArrayEquals(new String[] {"x", "y", "z"}, list.get(2).values());
-    }
+        try (final CSVParser parser = CSVFormat.DEFAULT.parse(in)) {
+            final List<CSVRecord> list = 
parser.stream().collect(Collectors.toList());
+            assertFalse(list.isEmpty());
+            assertArrayEquals(new String[] { "a", "b", "c" }, 
list.get(0).values());
+            assertArrayEquals(new String[] { "1", "2", "3" }, 
list.get(1).values());
+            assertArrayEquals(new String[] { "x", "y", "z" }, 
list.get(2).values());
+        }}
 
     @Test
     public void testTrailingDelimiter() throws Exception {
         final Reader in = new 
StringReader("a,a,a,\n\"1\",\"2\",\"3\",\nx,y,z,");
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("X", 
"Y", "Z").withSkipHeaderRecord().withTrailingDelimiter().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("X"));
-        assertEquals("2", record.get("Y"));
-        assertEquals("3", record.get("Z"));
-        assertEquals(3, record.size());
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("X", "Y", 
"Z").withSkipHeaderRecord().withTrailingDelimiter().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("X"));
+            assertEquals("2", record.get("Y"));
+            assertEquals("3", record.get("Z"));
+            assertEquals(3, record.size());
+        }
     }
 
     @Test
     public void testTrim() throws Exception {
         final Reader in = new StringReader("a,a,a\n\" 1 \",\" 2 \",\" 3 
\"\nx,y,z");
-        final Iterator<CSVRecord> records = CSVFormat.DEFAULT.withHeader("X", 
"Y", "Z").withSkipHeaderRecord().withTrim().parse(in).iterator();
-        final CSVRecord record = records.next();
-        assertEquals("1", record.get("X"));
-        assertEquals("2", record.get("Y"));
-        assertEquals("3", record.get("Z"));
-        assertEquals(3, record.size());
-    }
+        try (final CSVParser parser = CSVFormat.DEFAULT.withHeader("X", "Y", 
"Z").withSkipHeaderRecord().withTrim().parse(in)) {
+            final Iterator<CSVRecord> records = parser.iterator();
+            final CSVRecord record = records.next();
+            assertEquals("1", record.get("X"));
+            assertEquals("2", record.get("Y"));
+            assertEquals("3", record.get("Z"));
+            assertEquals(3, record.size());
+        }}
 
     private void validateLineNumbers(final String lineSeparator) throws 
IOException {
         try (final CSVParser parser = CSVParser.parse("a" + lineSeparator + 
"b" + lineSeparator + "c", 
CSVFormat.DEFAULT.withRecordSeparator(lineSeparator))) {
diff --git a/src/test/java/org/apache/commons/csv/CSVPrinterTest.java 
b/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
index 1f460e84..53af94da 100644
--- a/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
+++ b/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
@@ -1725,7 +1725,9 @@ public class CSVPrinterTest {
     }
 
     private String[] toFirstRecordValues(final String expected, final 
CSVFormat format) throws IOException {
-        return CSVParser.parse(expected, format).getRecords().get(0).values();
+        try (final CSVParser parser = CSVParser.parse(expected, format)) {
+            return parser.getRecords().get(0).values();
+        }
     }
 
     private void tryFormat(final List<String> list, final Character quote, 
final Character escape, final String expected) throws IOException {
diff --git a/src/test/java/org/apache/commons/csv/issues/JiraCsv264Test.java 
b/src/test/java/org/apache/commons/csv/issues/JiraCsv264Test.java
index 24bb97ba..0e18ae55 100644
--- a/src/test/java/org/apache/commons/csv/issues/JiraCsv264Test.java
+++ b/src/test/java/org/apache/commons/csv/issues/JiraCsv264Test.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.StringReader;
 
 import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
 import org.apache.commons.csv.DuplicateHeaderMode;
 import org.junit.jupiter.api.Test;
 
@@ -68,8 +69,8 @@ public class JiraCsv264Test {
             .setAllowMissingColumnNames(true)
             .build();
 
-        try (StringReader reader = new StringReader(CSV_STRING_GAP)) {
-            csvFormat.parse(reader);
+        try (StringReader reader = new StringReader(CSV_STRING_GAP); final 
CSVParser parser = csvFormat.parse(reader)) {
+            // empty
         }
     }
 
diff --git a/src/test/java/org/apache/commons/csv/issues/JiraCsv290Test.java 
b/src/test/java/org/apache/commons/csv/issues/JiraCsv290Test.java
index 42bd4dde..bbf6e218 100644
--- a/src/test/java/org/apache/commons/csv/issues/JiraCsv290Test.java
+++ b/src/test/java/org/apache/commons/csv/issues/JiraCsv290Test.java
@@ -94,21 +94,21 @@ public class JiraCsv290Test {
     public void testWriteThenRead() throws Exception {
         final StringWriter sw = new StringWriter();
 
-        final CSVPrinter printer = new CSVPrinter(sw,
-                
CSVFormat.POSTGRESQL_CSV.builder().setHeader().setSkipHeaderRecord(true).build());
+        try (CSVPrinter printer = new CSVPrinter(sw, 
CSVFormat.POSTGRESQL_CSV.builder().setHeader().setSkipHeaderRecord(true).build()))
 {
 
-        printer.printRecord("column1", "column2");
-        printer.printRecord("v11", "v12");
-        printer.printRecord("v21", "v22");
-        printer.close();
+            printer.printRecord("column1", "column2");
+            printer.printRecord("v11", "v12");
+            printer.printRecord("v21", "v22");
+            printer.close();
 
-        final CSVParser parser = new CSVParser(new StringReader(sw.toString()),
-                
CSVFormat.POSTGRESQL_CSV.builder().setHeader().setSkipHeaderRecord(true).build());
+            final CSVParser parser = new CSVParser(new 
StringReader(sw.toString()),
+                    
CSVFormat.POSTGRESQL_CSV.builder().setHeader().setSkipHeaderRecord(true).build());
 
-        assertArrayEquals(new Object[] { "column1", "column2" }, 
parser.getHeaderNames().toArray());
+            assertArrayEquals(new Object[] { "column1", "column2" }, 
parser.getHeaderNames().toArray());
 
-        final Iterator<CSVRecord> i = parser.iterator();
-        assertArrayEquals(new String[] { "v11", "v12" }, 
i.next().toList().toArray());
-        assertArrayEquals(new String[] { "v21", "v22" }, 
i.next().toList().toArray());
+            final Iterator<CSVRecord> i = parser.iterator();
+            assertArrayEquals(new String[] { "v11", "v12" }, 
i.next().toList().toArray());
+            assertArrayEquals(new String[] { "v21", "v22" }, 
i.next().toList().toArray());
+        }
     }
 }
\ No newline at end of file

Reply via email to