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

commit 04b2773baee1007413d78514c09c8392d3797dfb
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sat Sep 30 10:44:29 2023 -0400

    Reuse Commons IO
---
 pom.xml                                            |   1 -
 .../java/org/apache/commons/csv/CSVFormat.java     |   2 +
 .../java/org/apache/commons/csv/CSVParser.java     |   8 +-
 .../java/org/apache/commons/csv/CSVPrinter.java    |  17 ++-
 src/main/java/org/apache/commons/csv/IOUtils.java  | 147 ---------------------
 .../org/apache/commons/csv/CSVPrinterTest.java     |   1 +
 .../java/org/apache/commons/csv/IOUtilsTest.java   |  33 -----
 7 files changed, 21 insertions(+), 188 deletions(-)

diff --git a/pom.xml b/pom.xml
index 243954bc..e8297b0d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,6 @@
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
       <version>2.14.0</version>
-      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
diff --git a/src/main/java/org/apache/commons/csv/CSVFormat.java 
b/src/main/java/org/apache/commons/csv/CSVFormat.java
index d6218213..c89d6d4e 100644
--- a/src/main/java/org/apache/commons/csv/CSVFormat.java
+++ b/src/main/java/org/apache/commons/csv/CSVFormat.java
@@ -48,6 +48,8 @@ import java.util.HashSet;
 import java.util.Objects;
 import java.util.Set;
 
+import org.apache.commons.io.IOUtils;
+
 /**
  * Specifies the format of a CSV file for parsing and writing.
  *
diff --git a/src/main/java/org/apache/commons/csv/CSVParser.java 
b/src/main/java/org/apache/commons/csv/CSVParser.java
index 4ce3774b..85c7d8ea 100644
--- a/src/main/java/org/apache/commons/csv/CSVParser.java
+++ b/src/main/java/org/apache/commons/csv/CSVParser.java
@@ -47,6 +47,8 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
+import org.apache.commons.io.function.Uncheck;
+
 /**
  * Parses CSV files according to the specified format.
  *
@@ -144,11 +146,7 @@ public final class CSVParser implements 
Iterable<CSVRecord>, Closeable {
         private CSVRecord current;
 
         private CSVRecord getNextRecord() {
-            try {
-                return CSVParser.this.nextRecord();
-            } catch (final IOException e) {
-                throw new UncheckedIOException("Exception reading next record: 
" + e.toString(), e);
-            }
+            return Uncheck.get(CSVParser.this::nextRecord);
         }
 
         @Override
diff --git a/src/main/java/org/apache/commons/csv/CSVPrinter.java 
b/src/main/java/org/apache/commons/csv/CSVPrinter.java
index 421de13e..39ddb51d 100644
--- a/src/main/java/org/apache/commons/csv/CSVPrinter.java
+++ b/src/main/java/org/apache/commons/csv/CSVPrinter.java
@@ -70,6 +70,19 @@ import java.util.stream.Stream;
  */
 public final class CSVPrinter implements Flushable, Closeable {
 
+    /**
+     * Throws the given throwable.
+     *
+     * @param <T> The throwable cast type.
+     * @param throwable The throwable to rethrow.
+     * @return nothing because we throw.
+     * @throws T Always thrown.
+     */
+    @SuppressWarnings("unchecked")
+    private static <T extends Throwable> RuntimeException rethrow(final 
Throwable throwable) throws T {
+        throw (T) throwable;
+    }
+
     /** The place that the values get written. */
     private final Appendable appendable;
 
@@ -300,7 +313,7 @@ public final class CSVPrinter implements Flushable, 
Closeable {
             try {
                 print(t);
             } catch (final IOException e) {
-                throw IOUtils.rethrow(e);
+                throw rethrow(e);
             }
         });
         println();
@@ -489,7 +502,7 @@ public final class CSVPrinter implements Flushable, 
Closeable {
             try {
                 printRecordObject(t);
             } catch (final IOException e) {
-                throw IOUtils.rethrow(e);
+                throw rethrow(e);
             }
         });
     }
diff --git a/src/main/java/org/apache/commons/csv/IOUtils.java 
b/src/main/java/org/apache/commons/csv/IOUtils.java
deleted file mode 100644
index 4fb7120f..00000000
--- a/src/main/java/org/apache/commons/csv/IOUtils.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.csv;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
-import java.nio.Buffer;
-import java.nio.CharBuffer;
-
-/** Copied from Apache Commons IO. */
-final class IOUtils {
-
-    /**
-     * The default buffer size ({@value}).
-     */
-    static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
-
-    /**
-     * Represents the end-of-file (or stream).
-     */
-    private static final int EOF = -1;
-
-    /**
-     * Copies chars from a large (over 2GB) {@code Reader} to an {@code 
Appendable}.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * {@code BufferedReader}.
-     * </p>
-     * The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Appendable} to append to
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 2.7
-     */
-    static long copy(final Reader input, final Appendable output) throws 
IOException {
-        return copy(input, output, CharBuffer.allocate(DEFAULT_BUFFER_SIZE));
-    }
-
-    /**
-     * Copies chars from a large (over 2GB) {@code Reader} to an {@code 
Appendable}.
-     * <p>
-     * This method uses the provided buffer, so there is no need to use a
-     * {@code BufferedReader}.
-     * </p>
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Appendable} to write to
-     * @param buffer the buffer to be used for the copy
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 2.7
-     */
-    static long copy(final Reader input, final Appendable output, final 
CharBuffer buffer) throws IOException {
-        long count = 0;
-        int n;
-        while (EOF != (n = input.read(buffer))) {
-            ((Buffer) buffer).flip();
-            output.append(buffer, 0, n);
-            count += n;
-        }
-        return count;
-    }
-
-    /**
-     * Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * {@code BufferedReader}.
-     * </p>
-     * <p>
-     * The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.
-     * </p>
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Writer} to write to
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 1.3
-     */
-    static long copyLarge(final Reader input, final Writer output) throws 
IOException {
-        return copyLarge(input, output, new char[DEFAULT_BUFFER_SIZE]);
-    }
-
-    /**
-     * Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.
-     * <p>
-     * This method uses the provided buffer, so there is no need to use a
-     * {@code BufferedReader}.
-     * </p>
-     *
-     * @param input the {@code Reader} to read from
-     * @param output the {@code Writer} to write to
-     * @param buffer the buffer to be used for the copy
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException          if an I/O error occurs
-     * @since 2.2
-     */
-    static long copyLarge(final Reader input, final Writer output, final 
char[] buffer) throws IOException {
-        long count = 0;
-        int n;
-        while (EOF != (n = input.read(buffer))) {
-            output.write(buffer, 0, n);
-            count += n;
-        }
-        return count;
-    }
-
-    /**
-     * Throws the given throwable.
-     *
-     * @param <T> The throwable cast type.
-     * @param throwable The throwable to rethrow.
-     * @return nothing because we throw.
-     * @throws T Always thrown.
-     */
-    @SuppressWarnings("unchecked")
-    static <T extends Throwable> RuntimeException rethrow(final Throwable 
throwable) throws T {
-        throw (T) throwable;
-    }
-
-    /** No instances. */
-    private IOUtils() {
-        // Noop
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/csv/CSVPrinterTest.java 
b/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
index 33179246..6cc542dd 100644
--- a/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
+++ b/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
@@ -61,6 +61,7 @@ import java.util.Vector;
 import java.util.stream.Stream;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.output.NullOutputStream;
 import org.apache.commons.lang3.StringUtils;
 import org.h2.tools.SimpleResultSet;
diff --git a/src/test/java/org/apache/commons/csv/IOUtilsTest.java 
b/src/test/java/org/apache/commons/csv/IOUtilsTest.java
deleted file mode 100644
index 689fd195..00000000
--- a/src/test/java/org/apache/commons/csv/IOUtilsTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.csv;
-
-import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.Test;
-
-public class IOUtilsTest {
-
-    @Test
-    public void testRethrow() {
-        assertThrowsExactly(IOException.class, () -> IOUtils.rethrow(new 
IOException()));
-    }
-
-}

Reply via email to