On Fri, 7 Aug 2020 at 14:47, <[email protected]> wrote:
>
> 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-io.git
>
>
> The following commit(s) were added to refs/heads/master by this push:
> new 5cbb4c7 Restore binary compatibility in IOUtils with latest
> released version 2.7.
> 5cbb4c7 is described below
>
> commit 5cbb4c7c46be1e5b31a42745d84343e14b1f57db
> Author: Gary Gregory <[email protected]>
> AuthorDate: Fri Aug 7 09:47:06 2020 -0400
>
> Restore binary compatibility in IOUtils with latest released version
> 2.7.
>
> - Refactor IOUtils to restore BC.
> - Make the GitHub build reuse the POM default goal.
> - Replace Apache CLIRR with JApiCmp since CLIRR is not Java 8 aware.
These are unrelated changes and should please be committed as such.
> ---
> .github/workflows/maven.yml | 2 +-
> pom.xml | 3 ++-
> src/main/java/org/apache/commons/io/IOUtils.java | 19 ++++++++++++++----
> .../org/apache/commons/io/IOUtilsTestCase.java | 23
> ++++++++++++++--------
> 4 files changed, 33 insertions(+), 14 deletions(-)
>
> diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
> index 7f2ed4d..63611cb 100644
> --- a/.github/workflows/maven.yml
> +++ b/.github/workflows/maven.yml
> @@ -37,4 +37,4 @@ jobs:
> with:
> java-version: ${{ matrix.java }}
> - name: Build with Maven
> - run: mvn -V package --file pom.xml --no-transfer-progress
> + run: mvn -V --file pom.xml --no-transfer-progress
> diff --git a/pom.xml b/pom.xml
> index 40786b1..fce75b7 100644
> --- a/pom.xml
> +++ b/pom.xml
> @@ -304,7 +304,8 @@ file comparators, endian transformation classes, and much
> more.
> </properties>
>
> <build>
> - <defaultGoal>clean verify apache-rat:check clirr:check checkstyle:check
> javadoc:javadoc</defaultGoal>
> + <!-- japicmp:cmp needs package to work from a jar -->
> + <defaultGoal>clean package apache-rat:check japicmp:cmp checkstyle:check
> javadoc:javadoc</defaultGoal>
> <pluginManagement>
> <plugins>
> <plugin>
> diff --git a/src/main/java/org/apache/commons/io/IOUtils.java
> b/src/main/java/org/apache/commons/io/IOUtils.java
> index 73a2bb9..275c255 100644
> --- a/src/main/java/org/apache/commons/io/IOUtils.java
> +++ b/src/main/java/org/apache/commons/io/IOUtils.java
> @@ -367,16 +367,27 @@ public class IOUtils {
> /**
> * Closes the given {@link Closeable} as a null-safe operation.
> *
> - * @param closeables The resource(s) to close, may be null.
> + * @param closeable The resource to close, may be null.
> * @throws IOException if an I/O error occurs.
> * @since 2.7
> */
> + public static void close(final Closeable closeable) throws IOException {
> + if (closeable != null) {
> + closeable.close();
> + }
> + }
> +
> + /**
> + * Closes the given {@link Closeable} as a null-safe operation.
> + *
> + * @param closeables The resource(s) to close, may be null.
> + * @throws IOException if an I/O error occurs.
> + * @since 2.8.0
> + */
> public static void close(final Closeable... closeables) throws
> IOException {
> if (closeables != null) {
> for (Closeable closeable : closeables) {
> - if (closeable != null) {
> - closeable.close();
> - }
> + close(closeable);
> }
> }
> }
> diff --git a/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
> b/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
> index 82ae8f4..bfe96a2 100644
> --- a/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
> +++ b/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
> @@ -146,16 +146,20 @@ public class IOUtilsTestCase {
> assertThrows(IOException.class, () -> IOUtils.close(new
> YellOnCloseReader(new StringReader("s"))));
> }
>
> - @Test public void testCloseMulti() {
> + @Test
> + public void testCloseMulti() {
> Closeable nulCloseable = null;
> - Closeable [] closeables = {null, null};
> - assertDoesNotThrow(() -> IOUtils.close(nulCloseable,nulCloseable));
> + Closeable[] closeables = {null, null};
> + assertDoesNotThrow(() -> IOUtils.close(nulCloseable, nulCloseable));
> assertDoesNotThrow(() -> IOUtils.close(closeables));
> - assertDoesNotThrow(() -> IOUtils.close(new
> StringReader("s"),nulCloseable));
> - assertThrows(IOException.class, () -> IOUtils.close(nulCloseable,
> new YellOnCloseReader(new StringReader("s"))));
> + assertDoesNotThrow(() -> IOUtils.close((Closeable[]) null));
> + assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"),
> nulCloseable));
> + assertThrows(IOException.class,
> + () -> IOUtils.close(nulCloseable, new YellOnCloseReader(new
> StringReader("s"))));
> }
>
> - @Test public void testCloseConsumer() {
> + @Test
> + public void testCloseConsumer() {
> Closeable nulCloseable = null;
> assertDoesNotThrow(() -> IOUtils.close(nulCloseable, null)); // null
> consumer
> assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"),
> null)); // null consumer
> @@ -171,10 +175,13 @@ public class IOUtilsTestCase {
> assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"),
> silentConsumer));
> assertDoesNotThrow(() -> IOUtils.close(new YellOnCloseReader(new
> StringReader("s")), silentConsumer));
>
> - final IOConsumer<IOException> noisyConsumer = i -> {throw i;}; //
> consumer passes on the throw
> + final IOConsumer<IOException> noisyConsumer = i -> {
> + throw i;
> + }; // consumer passes on the throw
> assertDoesNotThrow(() -> IOUtils.close(nulCloseable,
> noisyConsumer)); // no throw
> assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"),
> noisyConsumer)); // no throw
> - assertThrows(IOException.class, () -> IOUtils.close(new
> YellOnCloseReader(new StringReader("s")),noisyConsumer)); // closeable throws
> + assertThrows(IOException.class,
> + () -> IOUtils.close(new YellOnCloseReader(new
> StringReader("s")), noisyConsumer)); // closeable throws
> }
>
> @Test public void testCloseQuietly_AllCloseableIOException() {
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]