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 2021/01/28 16:47:25 UTC
[commons-io] branch master updated: Add and use
IOExceptionList(String, List).
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 af58d18 Add and use IOExceptionList(String, List).
af58d18 is described below
commit af58d18cb3c0553d8c3c0961d4f68a0851f349ab
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jan 28 11:47:19 2021 -0500
Add and use IOExceptionList(String, List).
---
src/changes/changes.xml | 3 +++
src/main/java/org/apache/commons/io/FileUtils.java | 4 ++--
.../org/apache/commons/io/IOExceptionList.java | 26 +++++++++++++++-------
.../java/org/apache/commons/io/file/PathUtils.java | 2 +-
.../commons/io/output/FilterCollectionWriter.java | 20 ++++++++---------
.../apache/commons/io/IOExceptionListTestCase.java | 20 +++++++++++++++++
6 files changed, 54 insertions(+), 21 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 06e42ad..7ced17b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -154,6 +154,9 @@ The <action> type attribute can be add,update,fix,remove.
<action issue="IO-709" dev="ggregory" type="add" due-to="Boris Unckel, Gary Gregory">
Add null safe variants of isDirectory and isRegularFile.
</action>
+ <action dev="ggregory" type="add" due-to="Gary Gregory">
+ Add and use IOExceptionList(String, List).
+ </action>
<!-- UPDATES -->
<action dev="ggregory" type="update" due-to="Dependabot">
Update junit-jupiter from 5.6.2 to 5.7.0 #153.
diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java
index 56f0530..7fe1a3d 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -326,7 +326,7 @@ public class FileUtils {
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList(directory.toString(), causeList);
}
}
@@ -352,7 +352,7 @@ public class FileUtils {
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList(directory.toString(), causeList);
}
}
diff --git a/src/main/java/org/apache/commons/io/IOExceptionList.java b/src/main/java/org/apache/commons/io/IOExceptionList.java
index 1d27d88..288c105 100644
--- a/src/main/java/org/apache/commons/io/IOExceptionList.java
+++ b/src/main/java/org/apache/commons/io/IOExceptionList.java
@@ -41,19 +41,19 @@ public class IOExceptionList extends IOException {
* @param causeList a list of cause exceptions.
*/
public IOExceptionList(final List<? extends Throwable> causeList) {
- super(String.format("%,d exceptions: %s", causeList == null ? 0 : causeList.size(), causeList),
- causeList == null ? null : causeList.get(0));
- this.causeList = causeList == null ? Collections.emptyList() : causeList;
+ this(String.format("%,d exceptions: %s", causeList == null ? 0 : causeList.size(), causeList), causeList);
}
/**
- * Gets the cause list.
+ * Creates a new exception caused by a list of exceptions.
*
- * @param <T> type of exception to return.
- * @return The list of causes.
+ * @param message The detail message, see {@link #getMessage()}.
+ * @param causeList a list of cause exceptions.
+ * @since 2.9.0
*/
- public <T extends Throwable> List<T> getCauseList() {
- return (List<T>) causeList;
+ public IOExceptionList(final String message, final List<? extends Throwable> causeList) {
+ super(message, causeList == null ? null : causeList.get(0));
+ this.causeList = causeList == null ? Collections.emptyList() : causeList;
}
/**
@@ -80,6 +80,16 @@ public class IOExceptionList extends IOException {
}
/**
+ * Gets the cause list.
+ *
+ * @param <T> type of exception to return.
+ * @return The list of causes.
+ */
+ public <T extends Throwable> List<T> getCauseList() {
+ return (List<T>) causeList;
+ }
+
+ /**
* Works around Throwable and Generics, may fail at runtime depending on the argument value.
*
* @param <T> type of exception to return.
diff --git a/src/main/java/org/apache/commons/io/file/PathUtils.java b/src/main/java/org/apache/commons/io/file/PathUtils.java
index 97b6653..e5b4ad4 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -940,7 +940,7 @@ public final class PathUtils {
}
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList(path.toString(), causeList);
}
throw new IOException(
String.format("No DosFileAttributeView or PosixFileAttributeView for '%s' (linkOptions=%s)", path,
diff --git a/src/main/java/org/apache/commons/io/output/FilterCollectionWriter.java b/src/main/java/org/apache/commons/io/output/FilterCollectionWriter.java
index acf1291..aa830d2 100644
--- a/src/main/java/org/apache/commons/io/output/FilterCollectionWriter.java
+++ b/src/main/java/org/apache/commons/io/output/FilterCollectionWriter.java
@@ -88,7 +88,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("append", causeList);
}
return this;
}
@@ -108,7 +108,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("append", causeList);
}
return this;
}
@@ -129,7 +129,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("append", causeList);
}
return this;
}
@@ -149,7 +149,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("close", causeList);
}
}
@@ -174,7 +174,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("flush", causeList);
}
}
@@ -203,7 +203,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("write", causeList);
}
}
@@ -222,7 +222,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("write", causeList);
}
}
@@ -246,7 +246,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("write", causeList);
}
}
@@ -265,7 +265,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("write", causeList);
}
}
@@ -294,7 +294,7 @@ public class FilterCollectionWriter extends Writer {
i++;
}
if (!causeList.isEmpty()) {
- throw new IOExceptionList(causeList);
+ throw new IOExceptionList("write", causeList);
}
}
diff --git a/src/test/java/org/apache/commons/io/IOExceptionListTestCase.java b/src/test/java/org/apache/commons/io/IOExceptionListTestCase.java
index ebe0b2d..d001d14 100644
--- a/src/test/java/org/apache/commons/io/IOExceptionListTestCase.java
+++ b/src/test/java/org/apache/commons/io/IOExceptionListTestCase.java
@@ -29,6 +29,9 @@ import java.util.List;
import org.junit.jupiter.api.Test;
+/**
+ * Tests {@link IOExceptionList}.
+ */
public class IOExceptionListTestCase {
@Test
@@ -47,6 +50,23 @@ public class IOExceptionListTestCase {
}
@Test
+ public void testMessageCause() {
+ final EOFException cause = new EOFException();
+ final List<EOFException> list = Collections.singletonList(cause);
+ final IOExceptionList sqlExceptionList = new IOExceptionList("Hello", list);
+ assertEquals("Hello", sqlExceptionList.getMessage());
+ //
+ assertEquals(cause, sqlExceptionList.getCause());
+ assertEquals(cause, sqlExceptionList.getCause(0));
+ assertEquals(list, sqlExceptionList.getCauseList());
+ assertEquals(list, sqlExceptionList.getCauseList(EOFException.class));
+ assertEquals(cause, sqlExceptionList.getCause(0, EOFException.class));
+ // No CCE:
+ final List<EOFException> causeList = sqlExceptionList.getCauseList();
+ assertEquals(list, causeList);
+ }
+
+ @Test
public void testNullCause() {
final IOExceptionList sqlExceptionList = new IOExceptionList(null);
assertNull(sqlExceptionList.getCause());