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())); - } - -}