xref: /aosp_15_r20/external/apache-commons-io/src/site/xdoc/upgradeto2_6.xml (revision 0c4d7b72e49a04598d65c566f44504b95342d75a)
1*0c4d7b72SSadaf Ebrahimi<?xml version="1.0"?>
2*0c4d7b72SSadaf Ebrahimi<!--
3*0c4d7b72SSadaf EbrahimiLicensed to the Apache Software Foundation (ASF) under one or more
4*0c4d7b72SSadaf Ebrahimicontributor license agreements.  See the NOTICE file distributed with
5*0c4d7b72SSadaf Ebrahimithis work for additional information regarding copyright ownership.
6*0c4d7b72SSadaf EbrahimiThe ASF licenses this file to You under the Apache License, Version 2.0
7*0c4d7b72SSadaf Ebrahimi(the "License"); you may not use this file except in compliance with
8*0c4d7b72SSadaf Ebrahimithe License.  You may obtain a copy of the License at
9*0c4d7b72SSadaf Ebrahimi
10*0c4d7b72SSadaf Ebrahimi     http://www.apache.org/licenses/LICENSE-2.0
11*0c4d7b72SSadaf Ebrahimi
12*0c4d7b72SSadaf EbrahimiUnless required by applicable law or agreed to in writing, software
13*0c4d7b72SSadaf Ebrahimidistributed under the License is distributed on an "AS IS" BASIS,
14*0c4d7b72SSadaf EbrahimiWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*0c4d7b72SSadaf EbrahimiSee the License for the specific language governing permissions and
16*0c4d7b72SSadaf Ebrahimilimitations under the License.
17*0c4d7b72SSadaf Ebrahimi-->
18*0c4d7b72SSadaf Ebrahimi<document>
19*0c4d7b72SSadaf Ebrahimi    <properties>
20*0c4d7b72SSadaf Ebrahimi        <title>Upgrade from 2.5 to 2.6</title>
21*0c4d7b72SSadaf Ebrahimi        <author email="[email protected]">Commons Documentation Team</author>
22*0c4d7b72SSadaf Ebrahimi    </properties>
23*0c4d7b72SSadaf Ebrahimi    <body>
24*0c4d7b72SSadaf Ebrahimi
25*0c4d7b72SSadaf Ebrahimi        <section name="Upgrade">
26*0c4d7b72SSadaf Ebrahimi            <p>
27*0c4d7b72SSadaf Ebrahimi                These are the release notes and advice for upgrading Apache Commons IO from
28*0c4d7b72SSadaf Ebrahimi                version 2.5 to version 2.6
29*0c4d7b72SSadaf Ebrahimi                <source>
30*0c4d7b72SSadaf Ebrahimi                    Apache Commons IO is a package of Java utility classes like java.io.
31*0c4d7b72SSadaf Ebrahimi                    Classes in this package are considered to be so standard and of such high
32*0c4d7b72SSadaf Ebrahimi                    reuse as to justify existence in java.io.
33*0c4d7b72SSadaf Ebrahimi
34*0c4d7b72SSadaf Ebrahimi                    The Apache Commons IO library contains utility classes, stream implementations,
35*0c4d7b72SSadaf Ebrahimi                    file filters, file comparators, endian transformation classes, and much more.
36*0c4d7b72SSadaf Ebrahimi
37*0c4d7b72SSadaf Ebrahimi                    Apache Commons IO 2.6 requires at least Java 7 to build and run.
38*0c4d7b72SSadaf Ebrahimi
39*0c4d7b72SSadaf Ebrahimi
40*0c4d7b72SSadaf Ebrahimi                    DEPRECATIONS
41*0c4d7b72SSadaf Ebrahimi                    ============
42*0c4d7b72SSadaf Ebrahimi
43*0c4d7b72SSadaf Ebrahimi                    All closeQuietly overloads in org.apache.commons.io.IOUtils have been
44*0c4d7b72SSadaf Ebrahimi                    deprecated. Use the try-with-resources statement or handle suppressed
45*0c4d7b72SSadaf Ebrahimi                    exceptions manually.
46*0c4d7b72SSadaf Ebrahimi
47*0c4d7b72SSadaf Ebrahimi                    The class org.apache.commons.io.FileSystemUtils has been deprecated.
48*0c4d7b72SSadaf Ebrahimi                    Use equivalent methods in java.nio.file.FileStore instead, e.g.
49*0c4d7b72SSadaf Ebrahimi                    Files.getFileStore(Paths.get("/home")).getUsableSpace() or iterate over
50*0c4d7b72SSadaf Ebrahimi                    FileSystems.getDefault().getFileStores().
51*0c4d7b72SSadaf Ebrahimi
52*0c4d7b72SSadaf Ebrahimi
53*0c4d7b72SSadaf Ebrahimi                    COMPATIBILITY WITH JAVA 9
54*0c4d7b72SSadaf Ebrahimi                    ==================
55*0c4d7b72SSadaf Ebrahimi
56*0c4d7b72SSadaf Ebrahimi                    The MANIFEST.MF now contains an additional entry:
57*0c4d7b72SSadaf Ebrahimi
58*0c4d7b72SSadaf Ebrahimi                    Automatic-Module-Name: org.apache.commons.io
59*0c4d7b72SSadaf Ebrahimi
60*0c4d7b72SSadaf Ebrahimi                    This should make it possible to use Commons IO 2.6 as a module in the Java 9
61*0c4d7b72SSadaf Ebrahimi                    module system. For more information see the corresponding issue:
62*0c4d7b72SSadaf Ebrahimi
63*0c4d7b72SSadaf Ebrahimi                    https://issues.apache.org/jira/browse/IO-551
64*0c4d7b72SSadaf Ebrahimi
65*0c4d7b72SSadaf Ebrahimi                    Building Commons IO 2.6 should work out of the box with the latest Java 9
66*0c4d7b72SSadaf Ebrahimi                    release. Please report any Java 9 related issues at:
67*0c4d7b72SSadaf Ebrahimi
68*0c4d7b72SSadaf Ebrahimi                    https://issues.apache.org/jira/browse/IO
69*0c4d7b72SSadaf Ebrahimi
70*0c4d7b72SSadaf Ebrahimi
71*0c4d7b72SSadaf Ebrahimi                    NEW FEATURES
72*0c4d7b72SSadaf Ebrahimi                    ============
73*0c4d7b72SSadaf Ebrahimi
74*0c4d7b72SSadaf Ebrahimi                    o IO-551: Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility.
75*0c4d7b72SSadaf Ebrahimi                    o IO-367: Add convenience methods for copyToDirectory. Thanks to James Sawle.
76*0c4d7b72SSadaf Ebrahimi                    o IO-493: Add infinite circular input stream. Thanks to Piotr Turski.
77*0c4d7b72SSadaf Ebrahimi                    o IO-507: Add a ByteOrderUtils class.
78*0c4d7b72SSadaf Ebrahimi                    o IO-518: Add ObservableInputStream.
79*0c4d7b72SSadaf Ebrahimi                    o IO-519: Add MessageDigestCalculatingInputStream.
80*0c4d7b72SSadaf Ebrahimi                    o IO-513: Add convenience methods for reading class path resources.
81*0c4d7b72SSadaf Ebrahimi                    Thanks to Behrang Saeedzadeh.
82*0c4d7b72SSadaf Ebrahimi
83*0c4d7b72SSadaf Ebrahimi                    FIXED BUGS
84*0c4d7b72SSadaf Ebrahimi                    ==========
85*0c4d7b72SSadaf Ebrahimi
86*0c4d7b72SSadaf Ebrahimi                    o IO-550: Documentation issue, fix 404 Javadoc issues in the description page.
87*0c4d7b72SSadaf Ebrahimi                    Thanks to Jimi Adrian.
88*0c4d7b72SSadaf Ebrahimi                    o IO-442: Javadoc contradictory for FileFilterUtils.ageFileFilter(cutoff) and
89*0c4d7b72SSadaf Ebrahimi                    the filter it constructs: AgeFileFilter(cutoff).
90*0c4d7b72SSadaf Ebrahimi                    Thanks to Simon Robinson.
91*0c4d7b72SSadaf Ebrahimi                    o IO-534: FileUtilTestCase.testForceDeleteDir() should not delete testDirectory
92*0c4d7b72SSadaf Ebrahimi                    parent.
93*0c4d7b72SSadaf Ebrahimi                    o IO-528: Fix Tailer.run race condition runaway logging. Thanks to Dave Moten.
94*0c4d7b72SSadaf Ebrahimi                    o IO-483: getPrefixLength return -1 if Unix file contains colon.
95*0c4d7b72SSadaf Ebrahimi                    Thanks to Marko Vasic.
96*0c4d7b72SSadaf Ebrahimi                    o IO-520: FileUtilsTestCase#testContentEqualsIgnoreEOL fails on Windows.
97*0c4d7b72SSadaf Ebrahimi                    o IO-516: .gitattributes not correctly applied. Thanks to Jason Pyeron.
98*0c4d7b72SSadaf Ebrahimi                    o IO-515: Allow Specifying Initial Buffer Size of DeferredFileOutputStream.
99*0c4d7b72SSadaf Ebrahimi                    Thanks to Brett Lounsbury, Gary Gregory.
100*0c4d7b72SSadaf Ebrahimi                    o IO-512: ThresholdingOutputStream.thresholdReached() results in
101*0c4d7b72SSadaf Ebrahimi                    FileNotFoundException. Thanks to Ralf Hauser.
102*0c4d7b72SSadaf Ebrahimi                    o IO-511: After a few unit tests, a few newly created directories not cleaned
103*0c4d7b72SSadaf Ebrahimi                    completely. Thanks to Ahmet Celik.
104*0c4d7b72SSadaf Ebrahimi                    o IO-502: Exceptions are suppressed incorrectly when copying files.
105*0c4d7b72SSadaf Ebrahimi                    Thanks to Christian Schulte.
106*0c4d7b72SSadaf Ebrahimi                    o IO-503: Update platform requirement to Java 7.
107*0c4d7b72SSadaf Ebrahimi                    o IO-537: BOMInputStream shouldn't sort array of BOMs in-place.
108*0c4d7b72SSadaf Ebrahimi                    Thanks to Borys Zibrov.
109*0c4d7b72SSadaf Ebrahimi
110*0c4d7b72SSadaf Ebrahimi                    CHANGES
111*0c4d7b72SSadaf Ebrahimi                    =======
112*0c4d7b72SSadaf Ebrahimi
113*0c4d7b72SSadaf Ebrahimi                    o IO-542: FileUtils#readFileToByteArray: optimize reading of files with known
114*0c4d7b72SSadaf Ebrahimi                    size. Thanks to Ilmars Poikans.
115*0c4d7b72SSadaf Ebrahimi                    o IO-547: Throw a IllegalArgumentException instead of NullPointerException in
116*0c4d7b72SSadaf Ebrahimi                    FileSystemUtils.freeSpaceWindows(). Thanks to Nikhil Shinde,
117*0c4d7b72SSadaf Ebrahimi                    Michael Ernst, Gary Greory.
118*0c4d7b72SSadaf Ebrahimi                    o IO-506: Deprecate methods FileSystemUtils.freeSpaceKb().
119*0c4d7b72SSadaf Ebrahimi                    Thanks to Christian Schulte.
120*0c4d7b72SSadaf Ebrahimi                    o IO-505: Make LineIterator implement Closeable to support try-with-resources
121*0c4d7b72SSadaf Ebrahimi                    statements. Thanks to Christian Schulte.
122*0c4d7b72SSadaf Ebrahimi                    o IO-504: Deprecated of all IOUtils.closeQuietly() methods and use
123*0c4d7b72SSadaf Ebrahimi                    try-with-resources internally. Thanks to Christian Schulte.
124*0c4d7b72SSadaf Ebrahimi
125*0c4d7b72SSadaf Ebrahimi                    REMOVED
126*0c4d7b72SSadaf Ebrahimi                    =======
127*0c4d7b72SSadaf Ebrahimi
128*0c4d7b72SSadaf Ebrahimi                    o IO-514: Remove org.apache.commons.io.Java7Support.
129*0c4d7b72SSadaf Ebrahimi
130*0c4d7b72SSadaf Ebrahimi                    COMPATIBILITY WITH OLDER VERSIONS
131*0c4d7b72SSadaf Ebrahimi                    =================================
132*0c4d7b72SSadaf Ebrahimi
133*0c4d7b72SSadaf Ebrahimi                    Compatibility with 2.5:
134*0c4d7b72SSadaf Ebrahimi                    Binary compatible: Yes.
135*0c4d7b72SSadaf Ebrahimi                    Source compatible: Yes.
136*0c4d7b72SSadaf Ebrahimi                    Semantic compatible: Yes.
137*0c4d7b72SSadaf Ebrahimi
138*0c4d7b72SSadaf Ebrahimi                    Compatibility with 2.6 and 1.4:
139*0c4d7b72SSadaf Ebrahimi                    Binary compatible: Yes.
140*0c4d7b72SSadaf Ebrahimi                    Source compatible: No, see the rare case in
141*0c4d7b72SSadaf Ebrahimi                    https://issues.apache.org/jira/browse/IO-318.
142*0c4d7b72SSadaf Ebrahimi                    Semantic compatible: No, see the rare case in
143*0c4d7b72SSadaf Ebrahimi                    https://issues.apache.org/jira/browse/IO-318.
144*0c4d7b72SSadaf Ebrahimi
145*0c4d7b72SSadaf Ebrahimi                    Commons IO 2.6 requires Java 7 or later.
146*0c4d7b72SSadaf Ebrahimi                    Commons IO 2.5 requires Java 6 or later.
147*0c4d7b72SSadaf Ebrahimi                    Commons IO 2.4 requires Java 6 or later.
148*0c4d7b72SSadaf Ebrahimi                    Commons IO 2.3 requires Java 6 or later.
149*0c4d7b72SSadaf Ebrahimi                    Commons IO 2.2 requires Java 5 or later.
150*0c4d7b72SSadaf Ebrahimi                    Commons IO 1.4 requires Java 1.3 or later.
151*0c4d7b72SSadaf Ebrahimi                </source>
152*0c4d7b72SSadaf Ebrahimi            </p>
153*0c4d7b72SSadaf Ebrahimi        </section>
154*0c4d7b72SSadaf Ebrahimi
155*0c4d7b72SSadaf Ebrahimi    </body>
156*0c4d7b72SSadaf Ebrahimi</document>
157