Skip to content

Conversation

@dweiss
Copy link
Contributor

@dweiss dweiss commented Aug 14, 2025

I don't think there were any new methods to add so just includes previous versions.

…t no significant new methods appeared, I think.
@uschindler uschindler merged commit 65f5c41 into policeman-tools:main Sep 28, 2025
1 check failed
@uschindler
Copy link
Member

Thanks Dawid. I am working on a solution to allow unreleased versions by some special magic (same for JDK).

@uschindler
Copy link
Member

I also skimmed through the api comparison pages: https://commons.apache.org/proper/commons-io/japicmp.html (2.19->2.20). Will check the previous version, too.

@uschindler uschindler self-assigned this Sep 28, 2025
@uschindler uschindler added this to the 3.10 milestone Sep 28, 2025
@dweiss
Copy link
Contributor Author

dweiss commented Sep 28, 2025

No worries. Thanks, Uwe.

@uschindler
Copy link
Member

Here are the changes 2.18 -> 2.19:

Comparing source compatibility of C:\Users\Uwe Schindler\Projects\lucene\forbidden-apis\commons-io-2.19.0.jar against C:\Users\Uwe Schindler\Projects\lucene\forbidden-apis\commons-io-2.18.0.jar
+++  NEW CLASS: PUBLIC(+) FINAL(+) org.apache.commons.io.ByteBuffers  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW SUPERCLASS: java.lang.Object
        +++  NEW METHOD: PUBLIC(+) STATIC(+) java.nio.ByteBuffer littleEndian(byte[])
        +++  NEW METHOD: PUBLIC(+) STATIC(+) java.nio.ByteBuffer littleEndian(java.nio.ByteBuffer)
        +++  NEW METHOD: PUBLIC(+) STATIC(+) java.nio.ByteBuffer littleEndian(int)
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.ByteOrderMark  (compatible)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) boolean matches(int[])
***  MODIFIED CLASS: PUBLIC FINAL org.apache.commons.io.channels.FileChannels  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED METHOD: PUBLIC STATIC boolean contentEquals(java.nio.channels.FileChannel, java.nio.channels.FileChannel, int)
                +++  NEW ANNOTATION: java.lang.Deprecated
                ===  UNCHANGED EXCEPTION: java.io.IOException
        +++  NEW METHOD: PUBLIC(+) STATIC(+) boolean contentEquals(java.nio.channels.ReadableByteChannel, java.nio.channels.ReadableByteChannel, int)
                +++  NEW EXCEPTION: java.io.IOException
        +++  NEW METHOD: PUBLIC(+) STATIC(+) boolean contentEquals(java.nio.channels.SeekableByteChannel, java.nio.channels.SeekableByteChannel, int)
                +++  NEW EXCEPTION: java.io.IOException
===  UNCHANGED CLASS: PUBLIC org.apache.commons.io.Charsets  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED CONSTRUCTOR: PUBLIC Charsets()
                +++  NEW ANNOTATION: java.lang.Deprecated
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.file.AccumulatorPathVisitor  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED CONSTRUCTOR: PUBLIC AccumulatorPathVisitor(org.apache.commons.io.file.Counters$PathCounters, org.apache.commons.io.file.PathFilter, org.apache.commons.io.file.PathFilter, org.apache.commons.io.function.IOBiFunction)
                +++  NEW ANNOTATION: java.lang.Deprecated
        ===  UNCHANGED CONSTRUCTOR: PUBLIC AccumulatorPathVisitor(org.apache.commons.io.file.Counters$PathCounters)
                +++  NEW ANNOTATION: java.lang.Deprecated
        ===  UNCHANGED CONSTRUCTOR: PUBLIC AccumulatorPathVisitor(org.apache.commons.io.file.Counters$PathCounters, org.apache.commons.io.file.PathFilter, org.apache.commons.io.file.PathFilter)
                +++  NEW ANNOTATION: java.lang.Deprecated
        ===  UNCHANGED CONSTRUCTOR: PUBLIC AccumulatorPathVisitor()
                +++  NEW ANNOTATION: java.lang.Deprecated
        +++  NEW METHOD: PUBLIC(+) STATIC(+) org.apache.commons.io.file.AccumulatorPathVisitor$Builder builder()
+++* NEW CLASS: PUBLIC(+) STATIC(+) org.apache.commons.io.file.AccumulatorPathVisitor$Builder  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW INTERFACE: org.apache.commons.io.function.IOSupplier
        +++  NEW SUPERCLASS: org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder
        +++  NEW CONSTRUCTOR: PUBLIC(+) AccumulatorPathVisitor$Builder()
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.file.AccumulatorPathVisitor get()
===  UNCHANGED CLASS: PUBLIC org.apache.commons.io.file.Counters  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED CONSTRUCTOR: PUBLIC Counters()
                +++  NEW ANNOTATION: java.lang.Deprecated
===  UNCHANGED CLASS: PUBLIC org.apache.commons.io.file.CountingPathVisitor  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED CONSTRUCTOR: PUBLIC CountingPathVisitor(org.apache.commons.io.file.Counters$PathCounters, org.apache.commons.io.file.PathFilter, org.apache.commons.io.file.PathFilter, org.apache.commons.io.function.IOBiFunction)
                +++  NEW ANNOTATION: java.lang.Deprecated
+++  NEW CLASS: PUBLIC(+) ABSTRACT(+) STATIC(+) org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW INTERFACE: org.apache.commons.io.function.IOSupplier
        +++  NEW SUPERCLASS: org.apache.commons.io.file.SimplePathVisitor$AbstractBuilder
        +++  NEW CONSTRUCTOR: PUBLIC(+) CountingPathVisitor$AbstractBuilder()
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder setDirectoryFilter(org.apache.commons.io.file.PathFilter)
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder setDirectoryPostTransformer(java.util.function.UnaryOperator)
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder setFileFilter(org.apache.commons.io.file.PathFilter)
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder setPathCounters(org.apache.commons.io.file.Counters$PathCounters)
+++* NEW CLASS: PUBLIC(+) STATIC(+) org.apache.commons.io.file.CountingPathVisitor$Builder  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW INTERFACE: org.apache.commons.io.function.IOSupplier
        +++  NEW SUPERCLASS: org.apache.commons.io.file.CountingPathVisitor$AbstractBuilder
        +++  NEW CONSTRUCTOR: PUBLIC(+) CountingPathVisitor$Builder()
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.file.CountingPathVisitor get()
***  MODIFIED CLASS: PUBLIC FINAL org.apache.commons.io.file.PathUtils  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) STATIC(+) boolean contentEquals(java.nio.file.FileSystem, java.nio.file.FileSystem)
                +++  NEW EXCEPTION: java.io.IOException
+++  NEW CLASS: PROTECTED(+) ABSTRACT(+) STATIC(+) org.apache.commons.io.file.SimplePathVisitor$AbstractBuilder  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW INTERFACE: org.apache.commons.io.function.IOSupplier
        +++  NEW SUPERCLASS: org.apache.commons.io.build.AbstractSupplier
        +++  NEW CONSTRUCTOR: PUBLIC(+) SimplePathVisitor$AbstractBuilder()
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.build.AbstractSupplier setVisitFileFailedFunction(org.apache.commons.io.function.IOBiFunction)
+++  NEW INTERFACE: PUBLIC(+) ABSTRACT(+) org.apache.commons.io.function.IOBooleanSupplier  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW SUPERCLASS: java.lang.Object
        +++  NEW METHOD: PUBLIC(+) java.util.function.BooleanSupplier asBooleanSupplier()
        +++  NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean getAsBoolean()
                +++  NEW EXCEPTION: java.io.IOException
        +++  NEW ANNOTATION: java.lang.FunctionalInterface
+++  NEW INTERFACE: PUBLIC(+) ABSTRACT(+) org.apache.commons.io.function.IOIterable  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW SUPERCLASS: java.lang.Object
        +++  NEW METHOD: PUBLIC(+) void forEach(org.apache.commons.io.function.IOConsumer)
                +++  NEW EXCEPTION: java.io.IOException
        +++  NEW METHOD: PUBLIC(+) ABSTRACT(+) org.apache.commons.io.function.IOIterator iterator()
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.function.IOSpliterator spliterator()
        +++  NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Iterable unwrap()
***  MODIFIED CLASS: PUBLIC FINAL org.apache.commons.io.function.Uncheck  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) STATIC(+) boolean getAsBoolean(org.apache.commons.io.function.IOBooleanSupplier)
***  MODIFIED CLASS: PUBLIC ABSTRACT org.apache.commons.io.input.ProxyInputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.input.ProxyInputStream setReference(java.io.InputStream)
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.input.RandomAccessFileInputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) long copy(long, long, java.io.OutputStream)
                +++  NEW EXCEPTION: java.io.IOException
**** MODIFIED CLASS: PUBLIC org.apache.commons.io.input.ReversedLinesFileReader  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW INTERFACE: org.apache.commons.io.function.IOIterable
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.function.IOIterator iterator()
        +++  NEW METHOD: PUBLIC(+) java.lang.Iterable unwrap()
***  MODIFIED CLASS: PUBLIC STATIC org.apache.commons.io.input.ThrottledInputStream$Builder  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.input.ThrottledInputStream$Builder setMaxBytes(long, java.time.temporal.ChronoUnit)
***  MODIFIED CLASS: PUBLIC ABSTRACT org.apache.commons.io.output.AbstractByteArrayOutputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PROTECTED(+) org.apache.commons.io.output.AbstractByteArrayOutputStream asThis()
        +++  NEW METHOD: PUBLIC(+) void write(byte[])
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.output.AbstractByteArrayOutputStream write(java.lang.CharSequence, java.nio.charset.Charset)
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.output.BrokenOutputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED CONSTRUCTOR: PUBLIC BrokenOutputStream(java.util.function.Supplier)
                +++  NEW ANNOTATION: java.lang.Deprecated
        +++  NEW CONSTRUCTOR: PUBLIC(+) BrokenOutputStream(java.util.function.Function)
===  UNCHANGED CLASS: PUBLIC org.apache.commons.io.output.DeferredFileOutputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        ===  UNCHANGED METHOD: PROTECTED java.io.OutputStream getStream()
                +++  NEW ANNOTATION: java.lang.Deprecated
                ===  UNCHANGED EXCEPTION: java.io.IOException
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.output.ProxyOutputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.output.ProxyOutputStream setReference(java.io.OutputStream)
+++* NEW CLASS: PUBLIC(+) STATIC(+) org.apache.commons.io.output.ProxyOutputStream$Builder  (not serializable)
        +++  CLASS FILE FORMAT VERSION: 52.0 <- n.a.
        +++  NEW INTERFACE: org.apache.commons.io.function.IOSupplier
        +++  NEW SUPERCLASS: org.apache.commons.io.build.AbstractStreamBuilder
        +++  NEW CONSTRUCTOR: PUBLIC(+) ProxyOutputStream$Builder()
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.output.ProxyOutputStream get()
                +++  NEW EXCEPTION: java.io.IOException
***  MODIFIED CLASS: PUBLIC FINAL org.apache.commons.io.output.RandomAccessFileOutputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) java.io.RandomAccessFile getRandomAccessFile()

Here the changes 2.19 -> 2.20:

Comparing source compatibility of C:\Users\Uwe Schindler\Projects\lucene\forbidden-apis\commons-io-2.20.0.jar against C:\Users\Uwe Schindler\Projects\lucene\forbidden-apis\commons-io-2.19.0.jar
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.Charsets  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) STATIC(+) boolean isAlias(java.nio.charset.Charset, java.lang.String)
        +++  NEW METHOD: PUBLIC(+) STATIC(+) boolean isUTF8(java.nio.charset.Charset)
        +++  NEW METHOD: PUBLIC(+) STATIC(+) java.nio.charset.Charset toCharsetDefault(java.lang.String, java.nio.charset.Charset)
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.file.CountingPathVisitor  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PROTECTED(+) boolean accept(java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes)
***  MODIFIED CLASS: PUBLIC org.apache.commons.io.input.QueueInputStream  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) int read(byte[], int, int)
***  MODIFIED CLASS: PUBLIC STATIC org.apache.commons.io.input.Tailer$Builder  (not serializable)
        ===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0
        +++  NEW METHOD: PUBLIC(+) org.apache.commons.io.input.Tailer$Builder setIgnoreTouch(boolean)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

2 participants