Hello Gary,

> Am 03.10.2017 um 15:07 schrieb Gary Gregory <garydgreg...@gmail.com>:
> 
> On Oct 3, 2017 03:47, "Benedikt Ritter" <brit...@apache.org> wrote:
> 
> Hello Gary,
> 
>> Am 02.10.2017 um 19:00 schrieb Gary Gregory <garydgreg...@gmail.com>:
>> 
>> Hi Benedikt,
>> 
>> First, thank you for being the RM here.
>> 
>> Granted, I might have documented this new class better (and made the ctor
>> private.)
>> 
>> That said, while it is a new class for 2.6, we cannot RERO and change the
>> class name later.
> 
> Sorry I meant I can roll out another RC to polish this API.
> 
>> 
>> I do believe that in this case, the narrow class name of "Factory" is
>> better but I will not -1 the release. Maybe ByteOrderParser would be even
>> better.
>> 
>> If other operations are needed in the future, like some conversion
> gadgets,
>> then a good class name should be created for that, and not dumped in a
> Util
>> class. But, hey, that's just me, YMMV. I just like clear names that
>> demonstrate intent.
> 
> I have been to fast changing this class without giving others the chance to
> review and comment my changes. For this reason I canceled the release of IO
> 2.6. Let’s find a class design that everybody is happy with.
> 
> 
> Thank you Benedikt. I created the class based on code I had at work. So it
> is based on a real life use case.
> 
> IMO, the most narrow name for the class would be (1) ByteOrderParser, based
> on the current code. The widest name would be (2) ByteOrderUtil. The in
> between name I picked was (3) ByteOrderFactory. These are the three options
> IMO. I like (3) but could live with (1). (2) is a code smell IMO for the
> reasons stated previously.

I see your point here and I agree. Utils tend to become a dumping ground for 
everything. I’m not to fond of the name Factory, because factories are objects 
which help with complicated object constructions. This class creates a 
ByteOrder instance from a string so I’d say it’s a parser. If you can live with 
this name, lets take it.

Can you please elaborate some more on the use case you have in your 
application? I don’t understand why we need the handling of „Little“ and „Big“ 
Strings. This feels kind of random/specific to a single application to me.

Regards,
Benedikt

> 
> Gary
> 
> 
> Cheers,
> Benedikt
> 
>> 
>> Cheers,
>> Gary
>> 
>> 
>> Gary
>> 
>> 
>> 
>> 
>> On Mon, Oct 2, 2017 at 10:42 AM, Benedikt Ritter <brit...@apache.org>
> wrote:
>> 
>>> Hey Gary,
>>> 
>>>> Am 02.10.2017 um 16:15 schrieb Gary Gregory <garydgreg...@gmail.com>:
>>>> 
>>>> 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? ;-)
>>> 
>>> Thank you for your feedback! To be honest I was confused when I came
> along
>>> that class. My observations were:
>>> 
>>> - Only static methods, but instantiable
>>> - It is really a parser but it was called factory (okay, „utils" isn’t
>>> better…)
>>> - strange special handling of Strings „Little“ and „Big“ with no
>>> explanation
>>> 
>>> So I tried to change it in a way, that it makes more sense to me, but
> that
>>> doesn’t seem to make sense for everybody :-)
>>> 
>>> I have no problem with RERO, if this class need more polishing.
>>> 
>>> Regards,
>>> Benedikt
>>> 
>>>> 
>>>> 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
>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>> 
>>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to