I am not happy about the change of class name from ByteOrderFactory to
ByteOrderUtils. I am also did a knee jerk -1 when I saw the commit go by
but I have in the middle of moving.

- A ByteOrderFactory creates ByteOrder objects and that's it. The intent is
clear and focused.
- The use of ByteOrder "Utils" does not have any use ATM, there are no
other "util" methods.
- The use of ByteOrder "Utils" leads to the same problems we have seen with
[lang]'s StringUtils: An endless, unorganized, dumping ground.
- Granted there is less room for expansion with ByteOrder than with
Strings. But, having dealt with byte order code in the past, I can tell you
from experience it can grow a plenty to deal with all sorts of funky cases.
Ever heard of middle-endian? ;-)

Gary

On Fri, Mar 16, 2012 at 6:28 PM, <s...@apache.org> wrote:

> Author: sebb
> Date: Sat Mar 17 00:28:40 2012
> New Revision: 1301835
>
> URL: http://svn.apache.org/viewvc?rev=1301835&view=rev
> Log:
> Move changes.xml to location expected by CP24
> Add previous release notes to end of .vm file so we keep history when
> regenerating
>
> Added:
>     commons/proper/io/trunk/src/changes/
>       - copied from r1178270, commons/proper/io/trunk/src/changes/
>     commons/proper/io/trunk/src/changes/changes.xml
>       - copied unchanged from r1300447, commons/proper/io/trunk/src/
> changes/changes.xml
>     commons/proper/io/trunk/src/changes/release-notes.vm   (with props)
> Modified:
>     commons/proper/io/trunk/RELEASE-NOTES.txt
>
> Modified: commons/proper/io/trunk/RELEASE-NOTES.txt
> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/
> RELEASE-NOTES.txt?rev=1301835&r1=1301834&r2=1301835&view=diff
> ============================================================
> ==================
> --- commons/proper/io/trunk/RELEASE-NOTES.txt (original)
> +++ commons/proper/io/trunk/RELEASE-NOTES.txt Sat Mar 17 00:28:40 2012
> @@ -1,8 +1,7 @@
> -$Id$
>
> -                        Commons IO Package
> -                           Version 2.1
> -                          Release Notes
> +             Commons IO Package
> +                Version 2.2
> +               Release Notes
>
>  INTRODUCTION:
>
> @@ -17,31 +16,39 @@ file comparators and endian transformati
>  Commons IO Package Version 2.2
>  ============================================================
> ==================
>
> +The Commons IO library contains utility classes, stream implementations,
> file filters, file comparators and endian classes.
> +
> +$release.description.replaceAll("  ", "
> +")
> +
> +Changes in this version include:
> +
>  New features:
> -o Use terabyte (TB) , petabyte (PB) and exabyte (EB) in 
> FileUtils.byteCountToDisplaySize(long
> size)  Issue: IO-287. Thanks to Ron Kuris, Gary Gregory.
> -o FileUtils.listFiles() doesn't return directories  Issue: IO-173. Thanks
> to Marcos Vinícius da Silva.
> -o CharSequenceInputStream to efficiently stream content of a
> CharSequence  Issue: IO-297. Thanks to Oleg Kalnichevski.
> -o The second constructor of Tailer class does not pass 'delay' to the
> third one  Issue: IO-304. Thanks to liangly.
> -o TeeOutputStream does not call branch.close() when main.close() throws
> an exception  Issue: IO-303. Thanks to fabian.barney.
> -o ArrayIndexOutOfBoundsException in BOMInputStream when reading a file
> without BOM multiple times  Issue: IO-302. Thanks to jsteuerwald, detinho.
> -o Add IOUtils.closeQuietly(Selector) necessary  Issue: IO-301. Thanks to
> kaykay.unique.
> -o IOUtils.closeQuietly() should take a ServerSocket as a parameter
> Issue: IO-292. Thanks to sebb.
> -o Add read/readFully methods to IOUtils  Issue: IO-290. Thanks to sebb.
> -o Supply a ReversedLinesFileReader  Issue: IO-288. Thanks to Georg
> Henzler.
> -o Add new function FileUtils.directoryContains.  Issue: IO-291. Thanks to
> ggregory.
> -o FileUtils.contentEquals and IOUtils.contentEquals - Add option to
> ignore "line endings"
> -        Added contentEqualsIgnoreEOL methods to both classes  Issue:
> IO-275. Thanks to CJ Aspromgos.
> +o IO-287:  Use terabyte (TB) , petabyte (PB) and exabyte (EB) in
> FileUtils.byteCountToDisplaySize(long size) Thanks to Ron Kuris, Gary
> Gregory.
> +o IO-173:  FileUtils.listFiles() doesn't return directories Thanks to
> Marcos Vinícius da Silva.
> +o IO-297:  CharSequenceInputStream to efficiently stream content of a
> CharSequence Thanks to Oleg Kalnichevski.
> +o IO-304:  The second constructor of Tailer class does not pass 'delay'
> to the third one Thanks to liangly.
> +o IO-303:  TeeOutputStream does not call branch.close() when main.close()
> throws an exception Thanks to fabian.barney.
> +o IO-302:  ArrayIndexOutOfBoundsException in BOMInputStream when reading
> a file without BOM multiple times Thanks to jsteuerwald, detinho.
> +o IO-301:  Add IOUtils.closeQuietly(Selector) necessary Thanks to
> kaykay.unique.
> +o IO-292:  IOUtils.closeQuietly() should take a ServerSocket as a
> parameter Thanks to sebb.
> +o IO-290:  Add read/readFully methods to IOUtils Thanks to sebb.
> +o IO-288:  Supply a ReversedLinesFileReader Thanks to Georg Henzler.
> +o IO-291:  Add new function FileUtils.directoryContains. Thanks to
> ggregory.
> +o IO-275:  FileUtils.contentEquals and IOUtils.contentEquals - Add option
> to ignore "line endings"
> +        Added contentEqualsIgnoreEOL methods to both classes Thanks to CJ
> Aspromgos.
>
>  Fixed Bugs:
> -o FileUtils.moveDirectoryToDirectory removes source directory if
> destination is a subdirectory  Issue: IO-300.
> -o ReaderInputStream#read(byte[] b, int off, int len) should check for
> valid parameters  Issue: IO-307.
> -o ReaderInputStream#read(byte[] b, int off, int len) should always return
> 0 for length == 0  Issue: IO-306.
> -o "FileUtils#deleteDirectoryOnExit(File)" does not work  Issue: IO-276.
> Thanks to nkami.
> -o BoundedInputStream.read() treats max differently from
> BoundedInputStream.read(byte[]...)  Issue: IO-273. Thanks to sebb.
> -o Various methods of class 'org.apache.commons.io.FileUtils' incorrectly
> suppress 'java.io.IOException'  Issue: IO-298. Thanks to Christian Schulte.
> +o IO-300:  FileUtils.moveDirectoryToDirectory removes source directory
> if destination is a subdirectory
> +o IO-307:  ReaderInputStream#read(byte[] b, int off, int len) should
> check for valid parameters
> +o IO-306:  ReaderInputStream#read(byte[] b, int off, int len) should
> always return 0 for length == 0
> +o IO-276:  "FileUtils#deleteDirectoryOnExit(File)" does not work Thanks
> to nkami.
> +o IO-273:  BoundedInputStream.read() treats max differently from
> BoundedInputStream.read(byte[]...) Thanks to sebb.
> +o IO-298:  Various methods of class 'org.apache.commons.io.FileUtils'
> incorrectly suppress 'java.io.IOException' Thanks to Christian Schulte.
>
>  Changes:
> -o ReaderInputStream optimization: more efficient reading of small chunks
> of data  Issue: IO-296. Thanks to Oleg Kalnichevski.
> +o IO-296:  ReaderInputStream optimization: more efficient reading of
> small chunks of data Thanks to Oleg Kalnichevski.
> +
>
>  ============================================================
> ==================
>  Commons IO Package Version 2.1
>
> Added: commons/proper/io/trunk/src/changes/release-notes.vm
> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/
> changes/release-notes.vm?rev=1301835&view=auto
> ============================================================
> ==================
> --- commons/proper/io/trunk/src/changes/release-notes.vm (added)
> +++ commons/proper/io/trunk/src/changes/release-notes.vm Sat Mar 17
> 00:28:40 2012
> @@ -0,0 +1,897 @@
> +## Licensed to the Apache Software Foundation (ASF) under one
> +## or more contributor license agreements.  See the NOTICE file
> +## distributed with this work for additional information
> +## regarding copyright ownership.  The ASF licenses this file
> +## to you under the Apache License, Version 2.0 (the
> +## "License"); you may not use this file except in compliance
> +## with the License.  You may obtain a copy of the License at
> +##
> +##  http://www.apache.org/licenses/LICENSE-2.0
> +##
> +## Unless required by applicable law or agreed to in writing,
> +## software distributed under the License is distributed on an
> +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +## KIND, either express or implied.  See the License for the
> +## specific language governing permissions and limitations
> +## under the License.
> +
> +             Commons IO Package
> +                Version ${version}
> +               Release Notes
> +
> +INTRODUCTION:
> +
> +Commons IO is a package of Java utility classes for java.io's hierarchy.
> +Classes in this package are considered to be so standard and of such high
> +reuse as to justify existence in java.io.
> +
> +Commons IO contains utility classes, stream implementations, file filters,
> +file comparators and endian transformation classes.
> +
> +===========================================================
> ===================
> +Commons IO Package Version ${version}
> +===========================================================
> ===================
> +
> +$introduction.replaceAll("(?<!\015)\012", "
> +")
> +
> +## N.B. the available variables are described here:
> +## http://maven.apache.org/plugins/maven-changes-plugin/
> examples/using-a-custom-announcement-template.html
> +##
> +## Hack to improve layout: replace all pairs of spaces with a single
> new-line
> +$release.description.replaceAll("  ", "
> +")
> +
> +#if ($release.getActions().size() == 0)
> +No changes defined in this version.
> +#else
> +Changes in this version include:
> +
> +## indent to be used if there is no issue attribute.
> +## should be the same as the indent in the changes.xml file
> +## less 2 spaces for the 'o' and trailing space
> +#set($indent='          ')
> +#if ($release.getActions('add').size() !=0)
> +New features:
> +#foreach($actionItem in $release.getActions('add'))
> +## Use replaceAll to fix up LF-only line ends on Windows.
> +#set($action=$actionItem.getAction().replaceAll("\n","
> +"))
> +#if ($actionItem.getIssue())
> +#set($issue=$actionItem.getIssue())
> +#else
> +#set($issue="")
> +#end
> +#if ($actionItem.getDueTo())
> +#set($dueto=$actionItem.getDueTo())
> +#else
> +#set($dueto="")
> +#end
> +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto !=
> "")Thanks to $dueto. #end
> +
> +#set($issue="")
> +#set($dueto="")
> +#end
> +#end
> +
> +#if ($release.getActions('fix').size() !=0)
> +Fixed Bugs:
> +#foreach($actionItem in $release.getActions('fix'))
> +## Use replaceAll to fix up LF-only line ends on Windows.
> +#set($action=$actionItem.getAction().replaceAll("\n","
> +"))
> +#if ($actionItem.getIssue())
> +#set($issue=$actionItem.getIssue())
> +#else
> +#set($issue="")
> +#end
> +#if ($actionItem.getDueTo())
> +#set($dueto=$actionItem.getDueTo())
> +#else
> +#set($dueto="")
> +#end
> +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto !=
> "")Thanks to $dueto. #end
> +
> +#set($issue="")
> +#set($dueto="")
> +#end
> +#end
> +
> +#if ($release.getActions('update').size() !=0)
> +Changes:
> +#foreach($actionItem in $release.getActions('update'))
> +## Use replaceAll to fix up LF-only line ends on Windows.
> +#set($action=$actionItem.getAction().replaceAll("\n","
> +"))
> +#if ($actionItem.getIssue())
> +#set($issue=$actionItem.getIssue())
> +#else
> +#set($issue="")
> +#end
> +#if ($actionItem.getDueTo())
> +#set($dueto=$actionItem.getDueTo())
> +#else
> +#set($dueto="")
> +#end
> +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto !=
> "")Thanks to $dueto. #end
> +
> +#set($issue="")
> +#set($dueto="")
> +#end
> +#end
> +
> +#if ($release.getActions('remove').size() !=0)
> +Removed:
> +#foreach($actionItem in $release.getActions('remove'))
> +## Use replaceAll to fix up LF-only line ends on Windows.
> +#set($action=$actionItem.getAction().replaceAll("\n","
> +"))
> +#if ($actionItem.getIssue())
> +#set($issue=$actionItem.getIssue())
> +#else
> +#set($issue="")
> +#end
> +#if ($actionItem.getDueTo())
> +#set($dueto=$actionItem.getDueTo())
> +#else
> +#set($dueto="")
> +#end
> +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto !=
> "")Thanks to $dueto. #end
> +
> +#set($issue="")
> +#set($dueto="")
> +#end
> +#end
> +## End of main loop
> +#end
> +
> +===========================================================
> ===================
> +Commons IO Package Version 2.1
> +===========================================================
> ===================
> +
> +New features:
> +o Use standard Maven directory layout  Issue: IO-285. Thanks to ggregory.
> +o Add IOUtils API toString for URL and URI to get contents  Issue:
> IO-284. Thanks to ggregory.
> +o Add API FileUtils.copyFile(File input, OutputStream output)  Issue:
> IO-282. Thanks to ggregory.
> +o FileAlterationObserver has no getter for FileFilter  Issue: IO-262.
> +o Add FileUtils.getFile API with varargs parameter  Issue: IO-261.
> +o Add new APPEND parameter for writing string into files  Issue: IO-182.
> +o Add new read method "toByteArray" to handle InputStream with known
> size.  Issue: IO-251. Thanks to Marco Albini.
> +
> +Fixed Bugs:
> +o Dubious use of mkdirs() return code  Issue: IO-280. Thanks to sebb.
> +o ReaderInputStream enters infinite loop when it encounters an unmappable
> character  Issue: IO-277.
> +o FileUtils.moveFile() JavaDoc should specify FileExistsException thrown
> Issue: IO-264.
> +o ClassLoaderObjectInputStream does not handle Proxy classes  Issue:
> IO-260.
> +o Tailer returning partial lines when reaching EOF before EOL  Issue:
> IO-274. Thanks to Frank Grimes.
> +o FileUtils.copyFile() throws IOException when copying large files to a
> shared directory (on Windows)  Issue: IO-266. Thanks to Igor Smereka.
> +o FileSystemUtils.freeSpaceKb throws exception for Windows volumes with
> no visible files.
> +        Improve coverage by also looking for hidden files.  Issue:
> IO-263. Thanks to Gil Adam.
> +
> +Changes:
> +o FileAlterationMonitor.stop(boolean allowIntervalToFinish)  Issue:
> IO-259.
> +
> +===========================================================
> ===================
> +Commons IO Package Version 2.0.1
> +===========================================================
> ===================
> +
> +Compatibility with 2.0 and 1.4
> +------------------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes
> +  Check the bug fixes section for semantic bug fixes
> +
> +Commons IO 2.0.1 requires a minimum of JDK 1.5
> + (Commons IO 1.4 had a minimum of JDK 1.3)
> +
> +Enhancements from 2.0
> +---------------------
> +
> +   * [IO-256] - Provide thread factory for FileAlternationMonitor
> +
> +Bug fixes from 2.0
> +------------------
> +
> +   * [IO-257] - BOMInputStream.read(byte[]) can return 0 which it should
> not
> +   * [IO-258] - XmlStreamReader consumes the stream during encoding
> detection
> +
> +===========================================================
> ===================
> +Commons IO Package Version 2.0
> +===========================================================
> ===================
> +
> +Compatibility with 1.4
> +----------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes
> +  Check the bug fixes section for semantic bug fixes
> +
> +Commons IO 2.0 requires a minimum of JDK 1.5
> + (Commons IO 1.4 had a minimum of JDK 1.3)
> +
> +Deprecations from 1.4
> +---------------------
> +
> +- IOUtils
> +  - write(StringBuffer, Writer) in favour of write(CharSequence, Writer)
> +  - write(StringBuffer, OutputStream)  in favour of write(CharSequence,
> OutputStream)
> +  - write(StringBuffer, OutputStream, String) in favour of
> write(CharSequence, OutputStream, String)
> +
> +- FileFilterUtils
> +  - andFileFilter(IOFileFilter, IOFileFilter) in favour of
> and(IOFileFilter...)
> +  - orFileFilter(IOFileFilter, IOFileFilter)  in favour of
> or(IOFileFilter...)
> +
> +Enhancements from 1.4
> +---------------------
> +
> +  * [IO-140] Move minimum Java requirement from JDK 1.3 to JDK 1.5
> +             - use Generics
> +             - add new CharSequence write() flavour methods to IOUtils
> and FileUtils
> +             - replace StringBuffer with StringBuilder, where appropriate
> +             - add new Reader/Writer methods to ProxyReader and
> ProxyWriter
> +             - Annotate with @Override and @Deprecated
> +
> +  * [IO-178] New BOMInputStream and ByteOrderMark implementations - to
> detect and optionally exclude an initial Byte Order mark (BOM)
> +  * [IO-197] New BoundedInputStream (copied from from Apache JackRabbit)
> +  * [IO-193] New Broken Input and Output streams
> +  * [IO-132] New File Listener/Monitor facility
> +  * [IO-158] New ReaderInputStream and WriterOutputStream implementations
> +  * [IO-139] New StringBuilder Writer implementation
> +  * [IO-192] New Tagged Input and Output streams
> +  * [IO-177] New Tailer class - simple implementation of the Unix "tail
> -f" functionality
> +  * [IO-162] New XML Stream Reader/Writer implementations (from ROME via
> plexus-utils)
> +
> +  * [IO-142] Comparators - add facility to sort file lists/arrays
> +  * [IO-186] Comparators - new Composite and Directory File Comparator
> implementations
> +  * [IO-176] DirectoryWalker - add filterDirectoryContents() callback
> method for filtering directory contents
> +  * [IO-210] FileFilter - new Magic Number FileFilter
> +  * [IO-221] FileFilterUtils - add methods for suffix and prefix filters
> which take an IOCase object
> +  * [IO-232] FileFilterUtils - add method for name filters which take an
> IOCase object
> +  * [IO-229] FileFilterUtils - add varargs and() and or() methods
> +  * [IO-198] FileFilterUtils - add ability to apply file filters to
> collections and arrays
> +  * [IO-156] FilenameUtils - add normalize() and
> normalizeNoEndSeparator() methods which allow the separator character to be
> specified
> +  * [IO-194] FileSystemUtils - add freeSpaceKb() method with no input
> arguments
> +  * [IO-185] FileSystemUtils - add freeSpaceKb() methods that take a
> timeout parameter - fixes freeSpaceWindows() blocks
> +  * [IO-155] FileUtils - use NIO to copy files
> +  * [IO-168] FileUtils - add new isSymlink() method
> +  * [IO-219] FileUtils - throw FileExistsException when moving a file or
> directory if the destination already exists
> +  * [IO-234] FileUtils - add Methods for retrieving System User/Temp
> directories/paths
> +  * [IO-208] FileUtils - add timeout (connection and read) support for
> copyURLToFile() method
> +  * [IO-238] FileUtils - add sizeOf(File) method
> +  * [IO-181] LineIterator now implements Iterable
> +  * [IO-224] IOUtils - add closeQuietly(Closeable) and
> closeQuietly(Socket) methods
> +  * [IO-203] IOUtils - add skipFully() method for InputStreams
> +  * [IO-137] IOUtils and ByteArrayOutputStream - add
> toBufferedInputStream() method to avoid unnecessary array allocation/copy
> +  * [IO-195] Proxy streams/Reader/Writer - provide exception handling
> methods
> +  * [IO-211] Proxy Input/Output streams - add pre/post processing support
> +  * [IO-242] Proxy Reader/Writer - add pre/post processing support
> +
> +Bug fixes from 1.4
> +------------------
> +  * [IO-214] ByteArrayOutputStream - fix inconsistent synchronization of
> fields
> +  * [IO-201] Counting Input/Output streams - fix inconsistent
> synchronization
> +  * [IO-159] FileCleaningTracker - fix remove() never returns null
> +  * [IO-220] FileCleaningTracker - fix Vector performs badly under load
> +  * [IO-167] FilenameUtils - fix case-insensitive string handling in
> FilenameUtils and FilesystemUtils
> +  * [IO-179] FilenameUtils - fix StringIndexOutOfBounds exception in
> getPathNoEndSeparator()
> +  * [IO-248] FilenameUtils - fix getFullPathNoEndSeparator() returns
> empty while path is a one level directory
> +  * [IO-246] FilenameUtils - fix wildcardMatch gives incorrect results
> +  * [IO-187] FileSystemUtils - fix freeSpaceKb() doesn't work with
> relative paths on Linux
> +  * [IO-160] FileSystemUtils - fix freeSpace() fails on solaris
> +  * [IO-209] FileSystemUtils - fix freeSpaceKb() fails to return correct
> size for a windows mount point
> +  * [IO-163] FileUtils - fix toURLs() using deprecated method of
> conversion to URL
> +  * [IO-168] FileUtils - fix Symbolic links followed when deleting
> directory
> +  * [IO-231] FileUtils - fix wrong exception message generated in
> isFileNewer() method
> +  * [IO-207] FileUtils - fix race condition in forceMkdir() method
> +  * [IO-217] FileUtils - fix copyDirectoryToDirectory() makes infinite
> loops
> +  * [IO-166] FileUtils - fix URL decoding in toFile(URL)
> +  * [IO-190] FileUtils - fix copyDirectory not preserving lastmodified
> date on sub-directories
> +  * [IO-240] FileFilterUtils - ensure cvsFilter and svnFilter are only
> created once.
> +  * [IO-175] IOUtils - fix copyFile() issues with very large files
> +  * [IO-191] Improvements from static analysis
> +  * [IO-216] LockableFileWriter - delete files quietly when an exception
> is thrown during initialization
> +  * [IO-243] SwappedDataInputStream - fix readBoolean is inverted
> +  * [IO-235] Tests - remove unused YellOnFlushAndCloseOutputStream from
> CopyUtilsTest
> +  * [IO-161] Tests - fix FileCleaningTrackerTestCase hanging
> +
> +Documentation changes from 1.4
> +------------------------------
> +  * [IO-183 FilenameUtils.getExtension() method documentation improvements
> +  * [IO-226 FileUtils.byteCountToDisplaySize() documentation corrections
> +  * [IO-205 FileUtils.forceMkdir() documentation improvements
> +  * [IO-215 FileUtils copy file/directory improve documentation regarding
> preserving the last modified date
> +  * [IO-189 HexDump.dump() method documentation improvements
> +  * [IO-171 IOCase document that it assumes there are only two OSes:
> Windows and Unix
> +  * [IO-223 IOUtils.copy() documentation corrections
> +  * [IO-247 IOUtils.closeQuietly() improve documentation with examples
> +  * [IO-202 NotFileFilter documentation corrections
> +  * [IO-206 ProxyInputStream - fix misleading parameter names
> +  * [IO-212 ProxyInputStream.skip() documentation corrections
> +
> +===========================================================
> ===================
> +Commons IO Package Version 1.4
> +===========================================================
> ===================
> +
> +Compatibility with 1.3.2
> +------------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes
> +  Check the bug fixes section for semantic bug fixes
> +
> +Commons IO 1.4 introduces four new implementations which depend on JDK
> 1.4 features
> +(CharSequenceReader, FileWriterWithEncoding, IOExceptionWithCause and
> RegexFileFilter).
> +It has been built with the JDK source and target options set to JDK 1.3
> and, except for
> +those implementations, can be used with JDK 1.3 (see IO IO-127).
> +
> +Deprecations from 1.3.2
> +-----------------------
> +- FileCleaner deprecated in favour of FileCleaningTracker [see IO-116]
> +
> +Bug fixes from 1.3.2
> +--------------------
> +- FileUtils
> +  - forceDelete of orphaned Softlinks does not work [IO-147]
> +  - Infinite loop on FileUtils.copyDirectory when the destination
> directory is within
> +    the source directory [IO-141]
> +  - Add a copyDirectory() method that makes use of FileFilter [IO-105]
> +  - Add moveDirectory() and moveFile() methods [IO-77]
> +
> +- HexDump
> +  - HexDump's use of static StringBuffers isn't thread-safe [IO-136]
> +
> +Enhancements from 1.3.2
> +-----------------------
> +- FileUtils
> +  - Add a deleteQuietly method [IO-135]
> +
> +- FilenameUtils
> +  - Add file name extension separator constants[IO-149]
> +
> +- IOExceptionWithCause [IO-148]
> +  - Add a new IOException implementation with constructors which take a
> cause
> +
> +- TeeInputStream [IO-129]
> +  - Add new Tee input stream implementation
> +
> +- FileWriterWithEncoding [IO-153]
> +  - Add new File Writer implementation that accepts an encoding
> +
> +- CharSequenceReader [IO-138]
> +  - Add new Reader implementation that handles any CharSequence (String,
> +    StringBuffer, StringBuilder or CharBuffer)
> +
> +- ThesholdingOuputStream [IO-121]
> +  - Add a reset() method which sets the count of the bytes written back
> to zero.
> +
> +- DeferredFileOutputStream [IO-130]
> +  - Add support for temporary files
> +
> +- ByteArrayOutputStream
> +  - Add a new write(InputStream) method [IO-152]
> +
> +- New Closed Input/Output stream implementations [IO-122]
> +  - AutoCloseInputStream - automatically closes and discards the
> underlying input stream
> +  - ClosedInputStream - returns -1 for any read attempts
> +  - ClosedOutputStream - throws an IOException for any write attempts
> +  - CloseShieldInputStream - prevents the underlying input stream from
> being closed.
> +  - CloseShieldOutputStream - prevents the underlying output stream from
> being closed.
> +
> +- Add Singleton Constants to several stream classes [IO-143]
> +
> +- PrefixFileFilter [IO-126]
> +  - Add faciltiy to specify case sensitivity on prefix matching
> +
> +- SuffixFileFilter [IO-126]
> +  - Add faciltiy to specify case sensitivity on suffix matching
> +
> +- RegexFileFilter [IO-74]
> +  - Add new regular expression file filter implementation
> +
> +- Make IOFileFilter implementations Serializable [IO-131]
> +
> +- Improve IOFileFilter toString() methods [IO-120]
> +
> +- Make fields final so classes are immutable/threadsafe [IO-133]
> +  - changes to Age, Delegate, Name, Not, Prefix, Regex, Size, Suffix and
> Wildcard IOFileFilter
> +    implementations.
> +
> +- IOCase
> +  - Add a compare method to IOCase [IO-144]
> +
> +- Add a package of java.util.Comparator implementations for files [IO-145]
> +  - DefaultFileComparator - compare files using the default
> File.compareTo(File) method.
> +  - ExtensionFileComparator - compares files using file name extensions.
> +  - LastModifiedFileComparator - compares files using the last modified
> date/time.
> +  - NameFileComparator - compares files using file names.
> +  - PathFileComparator - compares files using file paths.
> +  - SizeFileComparator - compares files using file sizes.
> +
> +===========================================================
> ===================
> +Commons IO Package Version 1.3.2
> +===========================================================
> ===================
> +
> +Compatibility with 1.3.1
> +----------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes
> +
> +Compatibility with 1.3
> +----------------------
> +Binary compatible - No
> +  See [IO-113]
> +
> +Source compatible - No
> +  See [IO-113]
> +
> +Semantic compatible - Yes
> +
> +Enhancements since 1.3.1
> +------------------------
> +
> +- Created the FileCleaningTracker, basically a non-static version of the
> +  FileCleaner, which can be controlled by the user. [IO-116]
> +- The FileCleaner is deprecated.
> +
> +Bug fixes from 1.3.1
> +--------------------
> +
> +- Some tests, which are implicitly assuming a Unix-like file system, are
> +  now skipped on Windows. [IO-115]
> +- EndianUtils
> +  - Both readSwappedUnsignedInteger(...) methods could return negative
> +    numbers due to int/long casting. [IO-117]
> +
> +Bug fixes from 1.3
> +------------------
> +
> +- FileUtils
> +  - NPE in openOutputStream(File) when file has no parent in path [IO-112]
> +  - readFileToString(File) is not static [IO-113]
> +
> +===========================================================
> ===================
> +Commons IO Package Version 1.3.1
> +===========================================================
> ===================
> +
> +Compatibility with 1.3
> +----------------------
> +Binary compatible - No
> +  See [IO-113]
> +
> +Source compatible - No
> +  See [IO-113]
> +
> +Semantic compatible - Yes
> +
> +Bug fixes from 1.3
> +------------------
> +
> +- FileUtils
> +  - NPE in openOutputStream(File) when file has no parent in path [IO-112]
> +  - readFileToString(File) is not static [IO-113]
> +
> +===========================================================
> ===================
> +Commons IO Package Version 1.3
> +===========================================================
> ===================
> +
> +Compatibility with 1.2
> +----------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes
> +  Check the bug fixes section for semantic bug fixes
> +
> +Deprecations from 1.2
> +---------------------
> +- WildcardFilter deprecated, replaced by WildcardFileFilter
> +  - old class only accepted files, thus had a confusing dual purpose
> +
> +- FileSystemUtils.freeSpace deprecated, replaced by freeSpaceKb
> +  - freeSpace returns a result that varies by operating system and
> +    thus isn't that useful
> +  - freeSpaceKb returns much better and more consistent results
> +  - freeSpaceKb existed in v1.2, so this is a gentle cutover
> +
> +Bug fixes from 1.2
> +------------------
> +- LineIterator now implements Iterator
> +  - It was always supposed to...
> +
> +- FileSystemUtils.freeSpace/freeSpaceKb [IO-83]
> +  - These should now work on AIX and HP-UX
> +
> +- FileSystemUtils.freeSpace/freeSpaceKb [IO-90]
> +  - Avoid infinite looping in Windows
> +  - Catch more errors with nice messages
> +
> +- FileSystemUtils.freeSpace [IO-91]
> +  - This is now documented not to work on SunOS 5
> +
> +- FileSystemUtils [IO-93]
> +  - Fixed resource leak leading to 'Too many open files' error
> +  - Previously did not destroy Process instances (as JDK Javadoc is so
> poor)
> +  - http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4801027
> +
> +- FileUtils.touch [IO-100]
> +  - The touch method previously gave no indication when the file could not
> +    be touched successfully (such as due to access restrictions) - it now
> +    throws an IOException if the last modified date cannot be changed
> +
> +- FileCleaner
> +  - This now handles the situation where an error occurs when deleting
> the file
> +
> +- IOUtils.copy [IO-84]
> +  - Copy methods could return inaccurate byte/char count for large streams
> +  - The copy(InputStream, OutputStream) method now returns -1 if the
> count is greater than an int
> +  - The copy(Reader, Writer) method now throws now returns -1 if the
> count is greater than an int
> +  - Added a new copyLarge(InputStream, OutputStream) method that returns
> a long
> +  - Added a new copyLarge(Reader, Writer) method that returns a long
> +
> +- CountingInputStream/CountingOutputStream [IO-84]
> +  - Methods were declared as int thus the count was innacurate for large
> streams
> +  - new long based methods getByteCount()/resetByteCount() added
> +  - existing methods changed to throw an exception if the count is
> greater than an int
> +
> +- FileBasedTestCase
> +  - Fixed bug in compare content methods identified by GNU classpath
> +
> +- EndianUtils.writeSwappedLong(byte[], int) [IO-101]
> +  - An int overrun in the bit shifting when it should have been a long
> +
> +- EndianUtils.writeSwappedLong(InputStream) [IO-102]
> +  - The return of input.read(byte[]) was not being checked to ensure all
> 8 bytes were read
> +
> +Enhancements from 1.2
> +---------------------
> +- DirectoryWalker [IO-86]
> +  - New class designed for subclassing to walk through a set of files.
> +    DirectoryWalker provides the walk of the directories, filtering of
> +    directories and files, and cancellation support. The subclass must
> provide
> +    the specific behaviour, such as text searching or image processing.
> +
> +- IOCase
> +  - New class/enumeration for case-sensitivity control
> +
> +- FilenameUtils
> +  - New methods to handle case-sensitivity
> +  - wildcardMatch - new method that has IOCase as a parameter
> +  - equals - new method that has IOCase as a parameter
> +
> +- FileUtils [IO-108] - new default encoding methods for:
> +  - readFileToString(File)
> +  - readLines(File)
> +  - lineIterator(File)
> +  - writeStringToFile(File, String)
> +  - writeLines(File, Collection)
> +  - writeLines(File, Collection, String)
> +
> +- FileUtils.openOutputStream  [IO-107]
> +  - new method to open a FileOutputStream, creating parent directories if
> required
> +- FileUtils.touch
> +- FileUtils.copyURLToFile
> +- FileUtils.writeStringToFile
> +- FileUtils.writeByteArrayToFile
> +- FileUtils.writeLines
> +  - enhanced to create parent directories if required
> +- FileUtils.openInputStream  [IO-107]
> +  - new method to open a FileInputStream, providing better error messages
> than the JDK
> +
> +- FileUtils.isFileOlder
> +  - new methods to check if a file is older (i.e. isFileOlder()) -
> counterparts
> +    to the existing isFileNewer() methods.
> +
> +- FileUtils.checksum, FileUtils.checksumCRC32
> +  - new methods to create a checksum of a file
> +
> +- FileUtils.copyFileToDirectory  [IO-104]
> +  - new variant that optionally retains the file date
> +
> +- FileDeleteStrategy
> +- FileCleaner    [IO-56,IO-70]
> +  - FileDeleteStrategy is a strategy for handling file deletion
> +  - This can be used as a calback in FileCleaner
> +  - Together these allow FileCleaner to do a forceDelete to kill
> directories
> +
> +- FileCleaner.exitWhenFinished [IO-99]
> +  - A new method that allows the internal cleaner thread to be cleanly
> terminated
> +
> +- WildcardFileFilter
> +  - Replacement for WildcardFilter
> +  - Accepts both files and directories
> +  - Ability to control case-sensitivity
> +
> +- NameFileFilter
> +  - Ability to control case-sensitivity
> +
> +- FileFileFilter
> +  - New IOFileFilter implementation
> +  - Accepts files where File.isFile() is true
> +  - In other words it filters out directories
> +  - Singleton instance provided (FILE)
> +
> +- CanReadFileFilter
> +  - New IOFileFilter implementation
> +  - Accepts files where File.canRead() is true
> +  - Singleton instances provided (CAN_READ/CANNOT_READ/READ_ONLY)
> +
> +- CanWriteFileFilter
> +  - New IOFileFilter implementation
> +  - Accepts files where File.canWrite() is true
> +  - Singleton instances provided (CAN_WRITE/CANNOT_WRITE)
> +
> +- HiddenFileFilter
> +  - New IOFileFilter implementation
> +  - Accepts files where File.isHidden() is true
> +  - Singleton instances provided (HIDDEN/VISIBLE)
> +
> +- EmptyFileFilter
> +  - New IOFileFilter implementation
> +  - Accepts files or directories that are empty
> +  - Singleton instances provided (EMPTY/NOT_EMPTY)
> +
> +- TrueFileFilter/FalseFileFilter/DirectoryFileFilter
> +  - New singleton instance constants (TRUE/FALSE/DIRECTORY)
> +  - The new constants are more JDK 1.5 friendly with regards to static
> imports
> +    (whereas if everything uses INSTANCE, then they just clash)
> +  - The old INSTANCE constants are still present and have not been
> deprecated
> +
> +- FileFilterUtils.sizeRangeFileFilter
> +  - new sizeRangeFileFilter(long minimumSize, long maximumSize) method
> which
> +    creates a filter that accepts files within the specified size range.
> +
> +- FileFilterUtils.makeDirectoryOnly/makeFileOnly
> +  - two new methods that decorate a file filter to make it apply to
> +    directories only or files only
> +
> +- NullWriter
> +  - New writer that acts as a sink for all data, as per /dev/null
> +
> +- NullInputStream
> +  - New input stream that emulates a stream of a specified size
> +
> +- NullReader
> +  - New reader that emulates a reader of a specified size
> +
> +- ByteArrayOutputStream  [IO-97]
> +  - Performance enhancements
> +
> +===========================================================
> ===================
> +Commons IO Package Version 1.2
> +===========================================================
> ===================
> +
> +Compatibility with 1.1
> +----------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes
> +
> +Deprecations from 1.1
> +---------------------
> +
> +Bug fixes from 1.1
> +------------------
> +- FileSystemUtils.freeSpace(drive)
> +  Fix to allow Windows based command to function in French locale
> +
> +- FileUtils.read*
> +  Increase certainty that files are closed in case of error
> +
> +- LockableFileWriter
> +  Locking mechanism was broken and only provided limited protection
> [38942]
> +  File deletion and locking in case of constructor error was broken
> +
> +Enhancements from 1.1
> +---------------------
> +- AgeFileFilter/SizeFileFilter
> +  New file filters that compares against the age and size of the file
> +
> +- FileSystemUtils.freeSpaceKb(drive)
> +  New method that unifies result to be in kilobytes [38574]
> +
> +- FileUtils.contentEquals(File,File)
> +  Performance improved by adding length and file location checking
> +
> +- FileUtils.iterateFiles
> +  Two new method to provide direct access to iterators over files
> +
> +- FileUtils.lineIterator
> +  IOUtils.lineIterator
> +  New methods to provide an iterator over the lines in a file [38083]
> +
> +- FileUtils.copyDirectoryToDirectory
> +  New method to copy a directory to within another directory [36315]
> +
> +===========================================================
> ===================
> +Commons IO Package Version 1.1
> +===========================================================
> ===================
> +
> +Incompatible changes from 1.0
> +-----------------------------
> +Binary compatible - Yes
> +
> +Source compatible - Yes
> +
> +Semantic compatible - Yes, except:
> +- FileUtils.writeStringToFile()
> +    A null encoding previously used 'ISO-8859-1', now it uses the
> platform default
> +    Generally this will make no difference
> +
> +- LockableFileWriter
> +    Improved validation and now create directories if necesssary
> +
> +plus these bug fixes may affect you semantically:
> +- FileUtils.touch()  (Bug fix 29821)
> +    Now creates the file if it did not previously exist
> +
> +- FileUtils.toFile(URL) (Bug fix 32575)
> +    Now handles escape syntax such as %20
> +
> +- FileUtils.sizeOfDirectory()  (Bug fix 36801)
> +    May now return a size of 0 if the directory is security restricted
> +
> +Deprecations from 1.0
> +---------------------
> +- CopyUtils has been deprecated.
> +    Its methods have been moved to IOUtils.
> +    The new IOUtils methods handle nulls better, and have clearer names.
> +
> +- IOUtils.toByteArray(String) - Use {@link String#getBytes()}
> +- IOUtils.toString(byte[]) - Use {@link String#String(byte[])}
> +- IOUtils.toString(byte[],String) - Use {@link
> String#String(byte[],String)}
> +
> +Bug fixes from 1.0
> +------------------
> +- FileUtils - touch()  [29821]
> +    Now creates the file if it did not previously exist
> +
> +- FileUtils - toFile(URL)  [32575]
> +    Now handles escape syntax such as %20
> +
> +- FileFilterUtils - makeCVSAware(IOFileFilter)  [33023]
> +    Fixed bug that caused method to be completely broken
> +
> +- CountingInputStream  [33336]
> +    Fixed bug that caused the count to reduce by one at the end of the
> stream
> +
> +- CountingInputStream - skip(long)  [34311]
> +    Bytes from calls to this method were not previously counted
> +
> +- NullOutputStream  [33481]
> +    Remove unecessary synchronization
> +
> +- AbstractFileFilter - accept(File, String)  [30992]
> +    Fixed broken implementation
> +
> +- FileUtils  [36801]
> +    Previously threw NPE when listing files in a security restricted
> directory
> +    Now throw IOException with a better message
> +
> +- FileUtils - writeStringToFile()
> +    Null encoding now correctly uses the platform default
> +
> +Enhancements from 1.0
> +---------------------
> +- FilenameUtils - new class  [33303,29351]
> +    A static utility class for working with filenames
> +    Seeks to ease the pain of developing on Windows and deploying on Unix
> +
> +- FileSystemUtils - new class  [32982,36325]
> +    A static utility class for working with file systems
> +    Provides one method at present, to get the free space on the filing
> system
> +
> +- IOUtils - new public constants
> +    Constants for directory and line separators on Windows and Unix
> +
> +- IOUtils - toByteArray(Reader,encoding)
> +    Handles encodings when reading to a byte array
> +
> +- IOUtils - toCharArray(InputStream)  [28979]
> +          - toCharArray(InputStream,encoding)
> +          - toCharArray(Reader)
> +    Reads a stream/reader into a charatcter array
> +
> +- IOUtils - readLines(InputStream)  [36214]
> +          - readLines(InputStream,encoding)
> +          - readLines(Reader)
> +    Reads a stream/reader line by line into a List of Strings
> +
> +- IOUtils - toInputStream(String)  [32958]
> +          - toInputStream(String,encoding)
> +    Creates an input stream that uses the string as a source of data
> +
> +- IOUtils - writeLines(Collection,lineEnding,OutputStream)  [36214]
> +          - writeLines(Collection,lineEnding,OutputStream,encoding)
> +          - writeLines(Collection,lineEnding,Writer)
> +    Writes a collection to a stream/writer line by line
> +
> +- IOUtils - write(...)
> +    Write data to a stream/writer (moved from CopyUtils with better null
> handling)
> +
> +- IOUtils - copy(...)
> +    Copy data between streams (moved from CopyUtils with better null
> handling)
> +
> +- IOUtils - contentEquals(Reader,Reader)
> +    Method to compare the contents of two readers
> +
> +- FileUtils - toFiles(URL[])
> +    Converts an array of URLs to an array of Files
> +
> +- FileUtils - copyDirectory()  [32944]
> +    New methods to copy a directory
> +
> +- FileUtils - readFileToByteArray(File)
> +    Reads an entire file into a byte array
> +
> +- FileUtils - writeByteArrayToFile(File,byte[])
> +    Writes a byte array to a file
> +
> +- FileUtils - readLines(File,encoding)  [36214]
> +    Reads a file line by line into a List of Strings
> +
> +- FileUtils - writeLines(File,encoding,List)
> +              writeLines(File,encoding,List,lineEnding)
> +    Writes a collection to a file line by line
> +
> +- FileUtils - EMPTY_FILE_ARRAY
> +    Constant for an empty array of File objects
> +
> +- ConditionalFileFilter - new interface  [30705]
> +    Defines the behaviour of list based filters
> +
> +- AndFileFilter, OrFileFilter  [30705]
> +    Now support a list of filters to and/or
> +
> +- WildcardFilter  [31115]
> +    New filter that can match using wildcard file names
> +
> +- FileFilterUtils - makeSVNAware(IOFileFilter)
> +    New method, like makeCVSAware, that ignores Subversion source control
> directories
> +
> +- ClassLoaderObjectInputStream
> +    An ObjectInputStream that supports a ClassLoader
> +
> +- CountingInputStream,CountingOutputStream - resetCount()  [28976]
> +    Adds the ability to reset the count part way through reading/writing
> the stream
> +
> +- DeferredFileOutputStream - writeTo(OutputStream)  [34173]
> +    New method to allow current contents to be written to a stream
> +
> +- DeferredFileOutputStream  [34142]
> +    Performance optimizations avoiding double buffering
> +
> +- LockableFileWriter - encoding support [36825]
> +    Add support for character encodings to LockableFileWriter
> +    Improve the validation
> +    Create directories if necesssary
> +
> +- IOUtils and EndianUtils are no longer final  [28978]
> +    Allows developers to have subclasses if desired
> +
> +===========================================================
> ===================
> +Feedback
> +===========================================================
> ===================
> +
> +Open source works best when you give feedback:
> +http://commons.apache.org/io/
> +
> +Please direct all bug reports to JIRA
> +http://issues.apache.org/jira/browse/IO
> +
> +Or subscribe to the commons-user mailing list (prefix emails by [io])
> +http://commons.apache.org/mail-lists.html
> +
> +The Commons-IO Team
>
> Propchange: commons/proper/io/trunk/src/changes/release-notes.vm
> ------------------------------------------------------------
> ------------------
>     svn:eol-style = native
>
>
>

Reply via email to