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 509395d0 Fix SpotBugs error: Class org.apache.commons.io.filefilter.RegexFileFilter defines non-transient non-serializable instance field pathToString [org.apache.commons.io.filefilter.RegexFileFilter] In RegexFileFilter.java SE_BAD_FIELD 509395d0 is described below commit 509395d05399509715c63197437fb307ae76e647 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Thu Nov 23 11:18:53 2023 -0500 Fix SpotBugs error: Class org.apache.commons.io.filefilter.RegexFileFilter defines non-transient non-serializable instance field pathToString [org.apache.commons.io.filefilter.RegexFileFilter] In RegexFileFilter.java SE_BAD_FIELD --- src/changes/changes.xml | 1 + .../commons/io/filefilter/RegexFileFilter.java | 2 +- .../commons/io/filefilter/RegexFileFilterTest.java | 23 +++++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 3fe59b8f..c46bb862 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -55,6 +55,7 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix some Javadoc issues in LineIterator and IOUtils.</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in RegexFileFilter.RegexFileFilter(Pattern).</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in RegexFileFilter.accept(Path, BasicFileAttributes).</action> + <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.filefilter.RegexFileFilter defines non-transient non-serializable instance field pathToString [org.apache.commons.io.filefilter.RegexFileFilter] In RegexFileFilter.java SE_BAD_FIELD.</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.filefilter.DelegateFileFilter defines non-transient non-serializable instance field fileFilter [org.apache.commons.io.filefilter.DelegateFileFilter] In DelegateFileFilter.java SE_BAD_FIELD.</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.filefilter.DelegateFileFilter defines non-transient non-serializable instance field fileNameFilter [org.apache.commons.io.filefilter.DelegateFileFilter] In DelegateFileFilter.java SE_BAD_FIELD.</action> <!-- UPDATE --> diff --git a/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java index 7c3067c4..757b1353 100644 --- a/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java +++ b/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java @@ -101,7 +101,7 @@ public class RegexFileFilter extends AbstractFileFilter implements Serializable private final Pattern pattern; /** How convert a path to a string. */ - private final Function<Path, String> pathToString; + private transient final Function<Path, String> pathToString; /** * Constructs a new regular expression filter for a compiled regular expression diff --git a/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTest.java b/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTest.java index bfdd0377..181d13b9 100644 --- a/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTest.java +++ b/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTest.java @@ -42,20 +42,16 @@ public class RegexFileFilterTest { public void assertFiltering(final IOFileFilter filter, final File file, final boolean expected) { // Note. This only tests the (File, String) version if the parent of - // the File passed in is not null - assertEquals(expected, filter.accept(file), - "Filter(File) " + filter.getClass().getName() + " not " + expected + " for " + file); + // the File passed in is not null + assertEquals(expected, filter.accept(file), "Filter(File) " + filter.getClass().getName() + " not " + expected + " for " + file); if (file != null && file.getParentFile() != null) { assertEquals(expected, filter.accept(file.getParentFile(), file.getName()), "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for " + file); - assertEquals(expected, filter.matches(file.toPath()), - "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for " + file); + assertEquals(expected, filter.matches(file.toPath()), "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for " + file); } else if (file == null) { - assertEquals(expected, filter.accept(file), - "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for null"); - assertEquals(expected, filter.matches(null), - "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for null"); + assertEquals(expected, filter.accept(file), "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for null"); + assertEquals(expected, filter.matches(null), "Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for null"); } // Just don't blow up assertNotNull(filter.toString()); @@ -72,11 +68,10 @@ public class RegexFileFilterTest { if (path != null && path.getParent() != null) { assertEquals(expectedFileVisitResult, filter.accept(path, null), - "Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for " - + path); + "Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for " + path); } else if (path == null) { assertEquals(expectedFileVisitResult, filter.accept(path, null), - "Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for null"); + "Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for null"); } // Just don't blow up assertNotNull(filter.toString()); @@ -167,8 +162,12 @@ public class RegexFileFilterTest { assertFiltering(assertSerializable(new RegexFileFilter(patternStr)), path, true); assertFiltering(assertSerializable(new RegexFileFilter(Pattern.compile(patternStr), (Function<Path, String> & Serializable) Path::toString)), path, false); + // assertFiltering(new RegexFileFilter(Pattern.compile(patternStr), (Function<Path, String> & Serializable) null), path, false); assertFiltering(new RegexFileFilter(Pattern.compile(patternStr), (Function<Path, String> & Serializable) p -> null), path, false); + // + assertFiltering(assertSerializable(new RegexFileFilter(Pattern.compile(patternStr), (Function<Path, String> & Serializable) null)), path, false); + assertFiltering(assertSerializable(new RegexFileFilter(Pattern.compile(patternStr), (Function<Path, String> & Serializable) p -> null)), path, false); } }