              Apache Commons VFS Project 2.4.1
              RELEASE NOTES
              2019-08-10    

The Apache Commons VFS Project team is pleased to announce the release of Apache Commons VFS Project 2.4.1-SNAPSHOT

Apache Commons VFS is a Virtual File System library.

New features and bug fix release.

Changes in this version include:

Fixed Bugs:
o VFS-725:  [Local] org.apache.commons.vfs2.FileContent.getLastModifiedTime() is losing milliseconds (always ends in 000). Thanks to Gary Gregory.
o VFS-724:  FileContent#getByteArray() throws IllegalArgumentException: Buffer size <= 0 when file size is 0. Thanks to William R, Gary Gregory.
o           Javadoc fixes. Thanks to Gary Gregory.


Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html

For complete information on Apache Commons VFS Project, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons VFS Project website:

Visit http://commons.apache.org/proper/commons-vfs/

Download it from http://commons.apache.org/proper/commons-vfs/download_vfs.cgi

-----------------------------------------------------------------------------

              Apache Commons VFS Project 2.4
                  RELEASE NOTES

The Apache Commons VFS Project team is pleased to announce the release of Apache Commons VFS Project 2.4.

Apache Commons VFS is a Virtual File System library.

New features and bug fix release.

Changes in this version include:

New features:
o VFS-690:  Allow to set key exchange algorithm explicitly. GitHub #32.
o VFS-497:  Ported filters from Commons IO #9. Thanks to Michael Schnell.
o VFS-696:  More efficient comparison in FileExtensionSelector #44. Thanks to Robert DeRose.
o VFS-660:  Expose workaround for connecting to FTP server from different subnets in PASV mode #35. Thanks to Liu Yubao.
o VFS-699:  Add setting for FTP encoding auto-detection #58. Thanks to Boris Petrov.
o VFS-706:  Add ability to specify buffer sizes #59. Thanks to Boris Petrov.
o VFS-609:  SFTP provider doesn't support a private key as byte array #60. Thanks to stevezhuang, Rostislav, Gary Gregory.
o VFS-707:  Update Apache HttpClient from 4.5.7 to 4.5.8. Thanks to Gary Gregory.
o VFS-712:  Add null-safe org.apache.commons.vfs2.util.FileObjectUtils.exists(FileObject). Thanks to Gary Gregory.
o VFS-713:  Add FileObjectUtils.readProperties(FileObject) method to read a .properties file. Thanks to Gary Gregory.
o VFS-715:  Add org.apache.commons.vfs2.FileContent.getByteArray(). Thanks to Gary Gregory.
o VFS-719:  Add methods to get the contents of file objects as strings. Thanks to Gary Gregory.
o VFS-720:  Implement Closeable for RandomAccessContent #66. Thanks to Boris Petrov.
o VFS-721:  Add support for symbolic links for the local file system and add FileObject#isSymbolicLink(). Thanks to Gary Gregory.

Fixed Bugs:
o VFS-694:  Fix inability to start the DefaultFileMonitor after it has been stopped. GitHub PR #55. Thanks to Boris Petrov.
o VFS-696:  SFTP HTTP and SOCKS proxy authentication. GitHub PR #49. Thanks to rayzzed.
o VFS-707:  [SFTP] SftpFileSystem.executeCommand(String, StringBuilder) can leak ChannelExec objects. Thanks to Gary Gregory.
o VFS-709:  [SFTP] SftpFileSystem.getGroupsIds() can initialize underlying data more than once while multithreading. Thanks to Gary Gregory.
o VFS-710:  [SFTP] SftpFileSystem.getUid() can initialize underlying data more than once while multithreading. Thanks to Gary Gregory.
o VFS-711:  [SFTP] SftpFileSystem can initialize underlying Session more than once while multithreading. Thanks to Gary Gregory.
o VFS-662:  [SFTP] SftpFileSystem has Thread-safe issue about idleChannel (#36). Thanks to qxo, Alexey Abashev, Gary Gregory.
o VFS-700:  Some tests fail on Java 11 and above. Thanks to Gary Gregory, Matthias Krueger.
o VFS-716:  Fix AbstractFileName.getURI returning unencoded #-sign #64. Thanks to Boris Petrov.
o VFS-698:  SFTP file attributes are fetched multiple times leading to very slow directory listing; #65. Thanks to David Septimus, Bernd.
o VFS-717:  Update org.apache.httpcomponents:httpclient from 4.5.8 to 4.5.9. Thanks to Gary Gregory.
o VFS-718:  MonitorInputStream should not close the stream in "read" #67. Thanks to Boris Petrov.

Changes:
o VFS-692:  Update Apache Commons Collections from 4.2 to 4.3. Thanks to Gary Gregory.
o VFS-693:  Add support for customizing FTP transfer aborted status codes. GitHub PR #51. Thanks to Boris Petrov, Gary Gregory.
o VFS-702:  Simplify adding files to DefaultFileMonitor #57. Thanks to Boris Petrov.
o VFS-703:  Update Apache Commons Lang from 3.8.1 to 3.9. Thanks to Gary Gregory.
o VFS-722:  Update Apache Commons Collections from 4.3 to 4.4. Thanks to Gary Gregory.
o           Source incompatibility: org.apache.commons.vfs2.FileFilter.accept(FileSelectInfo) now throws checked exception FileSystemException.
o           Public API note: The overridden methods getURI() and getFriendlyURI() in org.apache.commons.vfs2.provider.local.LocalFileName where removed but are implemented in a superclass.
o           Public API note: The overridden method org.apache.commons.vfs2.provider.sftp.SftpFileObject#refresh() was removed but is implemented in a superclass.
o           Public API note: The overridden method org.apache.commons.vfs2.provider.sftp.SftpFileProvider#init() was removed but is implemented in a superclass.


Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html

For complete information on Apache Commons VFS Project, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons VFS Project website:

Visit http://commons.apache.org/proper/commons-vfs/

Download it from http://commons.apache.org/proper/commons-vfs/download_vfs.cgi

-----------------------------------------------------------------------------

              Apache Commons VFS Project 2.3
                  RELEASE NOTES

The Apache Commons VFS Project team is pleased to announce the release of Apache Commons VFS Project 2.3.

Apache Commons VFS is a Virtual File System library.

New features and bug fix release.

Changes in this version include:

New features:
o VFS-677:  [SFTP] Add support for append mode. Thanks to dingxbcn.
o VFS-673:  [SFTP] Support com.jcraft.jsch.ConfigRepository (~/.ssh/config) with SftpFileSystemConfigBuilder and flag to load OpenSSHConfig. Thanks to Oleksandr Lykhonosov.
o VFS-673:  DefaultFileSystemManager should implement AutoCloseable. Thanks to Daniel Banks.
o VFS-637:  Zip files with legacy encoding and special characters let VFS crash. Thanks to Gary Gregory.
o VFS-360:  Add HTTP provider based on HttpComponents HttpClient 4. Thanks to Woonsan Ko.
o VFS-689:  org.apache.commons.vfs2.provider.http.HttpFileObject.getHeadMethod() does not release connection when an exception is thrown. Thanks to Gary Gregory.

Fixed Bugs:
o VFS-645:  VfsClassLoaderTests and JarProviderTestCase fails on Java 9 and up.
o VFS-678:  Fix various LGTM.com code review warnings.
o VFS-652:  PatternFileSelector documentation to describe actual matching against getPath().
o VFS-589:  SFTP moveTo operation hangs if the server does not support SSH channelExec. Thanks to L, Gary Gregory.
o VFS-655:  OSGI MANIFEST.MF "Import-Package" should be ";resolution:=optional" for Maven "optional" dependencies. Thanks to Arnaud MERGEY.
o VFS-657:  FileSelector implementations like FileDepthSelector should throw Exception. Thanks to Elias Putz.
o VFS-614:  MonitorInputStream should not close the stream in read(). Thanks to Boris Petrov, Otto Fowler.
o VFS-667:  org.apache.commons.vfs2.provider.res.ResourceFileProvider.findFile(FileObject, String, FileSystemOptions) should throw a org.apache.commons.vfs2.FileSystemException instead of a NPE when the class loader is null.
o VFS-669:  org.apache.commons.vfs2.util.CombinedResources.loadResources(String) should not throw an NPE for the system class loader is null.
o VFS-675:  NullPointerException at AbstractFileObject.java:221.
o VFS-674:  Cannot close an FTP input stream without an exception. Thanks to Boris Petrov, Gary Gregory.
o VFS-294:  NullPointerException in FtpFileObject.getChildFile(). Thanks to Johannes Scharf.
o VFS-679:  NullPointerException in FtpFileObject.doGetLastModifiedTime(). Thanks to Boris Petrov, Gary Gregory.
o VFS-398:  FtpFileObject.getChildren() fails when a folder contains a file with a colon in the name. Thanks to Otto Fowler.

Changes:
o VFS-650:  Update Apache Commons Compress from 1.15 to 1.16.1.
o VFS-646:  Update Apache Commons Compress from 1.14 to 1.15.
o VFS-653:  Replace use of deprecated APIs in HDFS provider.
o VFS-666:  Update Apache Commons Collections from 4.1 to 4.2.
o VFS-668:  Throw a NPE with a better message when a class loader is null.
o VFS-671:  Update Apache Commons Compress from 1.16.1 to 1.18.
o VFS-680:  Update from Java 7 to Java 8.
o VFS-681:  VFS.setManager should be synchronized; #43. Thanks to Robert DeRose.
o VFS-682:  Throw a org.apache.commons.vfs2.FileSystemException instead of a NullPointerException in org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveName(FileName, String, NameScope).
o VFS-688:  [SFTP] Update jsch from 0.1.54 to 0.1.55.


Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html

For complete information on Apache Commons VFS Project, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons VFS Project website:

Visit http://commons.apache.org/proper/commons-vfs/

Download it from http://commons.apache.org/proper/commons-vfs/download_vfs.cgi

-----------------------------------------------------------------------------

              Apache Commons VFS Project 2.2
                  RELEASE NOTES

The Apache Commons VFS Project team is pleased to announce the release of Apache Commons VFS Project 2.2.

Apache Commons VFS is a Virtual File System library.

New features and bug fix release.

Changes in this version include:

New features:
o VFS-628:  Add a file inverter FileSelector: InvertIncludeFileSelector.

Fixed Bugs:
o VFS-189:  Possible NPE in DefaultFileSystemManager.
o VFS-620:  FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP. Thanks to stevezhuang.
o VFS-291:  ZIP archives are not properly closed after unzipping and cannot be deleted until the JVM exists.
o VFS-644:  AbstractFileSystem.streamClosed() always sets openStream count to zero.

Changes:
o VFS-642:  Upgrade to jcifs 1.3.17 Thanks to ilangoldfeld.
o VFS-612:  Update the platform requirement from Java 6 to Java 7.
o VFS-615:  Update Apache Commons Compress from 1.11 to 1.12.
o VFS-629:  Update Apache Commons Compress from 1.12 to 1.13.
o VFS-639:  Update Apache Commons Compress from 1.13 to 1.14.
o VFS-631:  Update from Apache Commons Net 3.5 to 3.6.
o VFS-632:  Update from JCraft jsch for SFTP/SSH from 0.1.53 to 0.1.54.
o VFS-621:  Add API VFS.setManager(FileSystemManager).
o VFS-643:  VFS should not log at the INFO level.

Known Problems:
o VFS-645:  VfsClassLoaderTests fails on Java 9.


Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html

For complete information on Apache Commons VFS Project, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons VFS Project website:

Visit http://commons.apache.org/proper/commons-vfs/

Download it from http://commons.apache.org/proper/commons-vfs/download_vfs.cgi

-----------------------------------------------------------------------------

              Apache Commons VFS 2.1
                  RELEASE NOTES

The Apache Commons VFS team is pleased to announce the release of Apache Commons VFS 2.1.

Apache Commons VFS is a Virtual File System library.

New features and bug fix release.

Please note that the Clirr report shows several errors.
These may affect source compatibility.
However they should not affect binary compatibility, as explained below.

FileContent, FileName, FileObject, FileSystemManager, RandomAccessContent:
The above interfaces have been updated to add new methods.
This does not affect binary compatibility; for details please see:
https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.3-100
The above changes may affect source compatibility.
 Changes to method parameters and return types in TarFileObject and TarFileSystem
The original parameter/return types were the following:
org.apache.commons.vfs2.provider.tar.TarEntry
org.apache.commons.vfs2.provider.tar.TarInputStream
The above were package protected, so any methods using them did not form part of the public API.
Therefore source and binary compatibility is not affected.

Changes in this version include:

New features:
o VFS-198:  [http] Make user agent configurable. Thanks to Andrew Franklin, Simon Legner.
o VFS-555:  [hdfs] Add the ability to specify an HDFS configuration file with HdfsFileSystemConfigBuilder.
o           [example] make VFS Shell print version and implement new 'info' command.
o VFS-532:  [FTP] Allow configuring remoteVerificationEnabled on FTPClient instances. Thanks to Gareth Daniel Smith.
o VFS-468:  [FTPS] Add option for KeyManager (and TrustManager) to support FTPS servers that ask for the client certificate for authentication.
o VFS-412:  [FTPS] Add support for command to set the DataChannelProtectionLevel. Thanks to Jose Juan Montiel.
o VFS-442:  [HDFS] Add an HDFS FileSystem Provider. Thanks to Dave Marion.
o VFS-447:  [FTP/FTPS] Update Apache Commons Net to 3.2 from 3.1.
o VFS-445:  Add FileSystemManager.resolveFile(URI) and resolveFile(URL).
o VFS-440:  [SFTP] Stream (e.g. netcat) proxy for Sftp file system (aka ProxyCommand). Thanks to bpiwowar.
o VFS-432:  [HTTP][WebDAV] Allow HTTP follow redirect.
o VFS-431:  FileSystemOption does not implement toString().
o VFS-405:  Get/set the file permissions. Thanks to dwaszak.
o VFS-426:  HTTP URL query string not part of cache key. Thanks to daniel.bergholm.
o VFS-425:  Add API FileObject.isExecutable().
o VFS-421:  [SFTP] Configure a custom Identity Repository. Thanks to bpiwowar.
o VFS-417:  [RAM][Local] Add and implement new API: RandomAccessContent.setLength(long).
o VFS-400:  Add a FileSelector based on regular expressions.
o VFS-254:  Let FileObject and FileContent extend java.io.Closeable. Thanks to mzawirski.
o VFS-252:  [SMB] SmbFileObject does not support setLastModifiedTime while jcifs supports it.
o VFS-313:  [FTP] Configuration does not include option for setting socket timeout. Thanks to bdavis@saintandreas.org.
o VFS-414:  [FTP] Add config API to set the file type.
o VFS-182:  [FTP] Usage of FTP with heterogeneous FTP server (possibility of using Ascii file type).
o VFS-381:  Iterate over a FileObject using the Java "foreach" statement, to provide all descendents of a FileObject.
o VFS-373:  Add FileContent write APIs.
o VFS-372:  Add constructors FileDepthSelector() and FileDepthSelector(int).
o VFS-371:  Add FileObject API deleteAll().
o VFS-370:  Add a FileExtensionSelector class.
o VFS-367:  Add APIs FileObject isFile(), FileObject isFolder(), and FileName isFile().

Fixed Bugs:
o VFS-424:  Fix StandardFileSystemManager class loading so it works in a OSGi environment.
o VFS-490:  [vfsclassloader] Do not open folders with .jar extension. Adds tests.
o VFS-582:  [tests] revert rename of getTestDirectoryFile to make test classes more compatible for external providers.
o VFS-480:  Make startup of SoftRefsFileCache cleaner thread work and less racy to avoid leaks.
o VFS-549:  Use File.seperator instead of getProperty("file.separator").
o VFS-567:  [ftp] Ignore exceptions while QUIT/disconnect. Thanks to Antonio Petrelli.
o VFS-572:  [sftp] better documentation for knownhosts file option. Thanks to Sandra Parsick.
o VFS-574:  Ensure FileOpertionProviders are closed. Adds some testcases.
            The error code for missing operations exceptions corrected: vfs.operation/operation-not-supported.error
o VFS-279:  [local] Avoid ClassCastException when replicating local files while OnCall caching is active. Thanks to Didier Earith, Simon Legner.
o VFS-297:  [sftp] VSF fails to reuse FileSystem instances if FileSystemOptions contain
            an array as value. Reported for SFTP using identities. Thanks to Kirill Safonov, Jimmy Praet.
o VFS-202:  [http] Allow URLs responding with 405 to HEAD requests. Thanks to Sergey Vladimirov, Simon Legner.
o VFS-490:  [hdfs] Make OSGi package imports for hdfs resolution=optional.
            Removed all scopes from dependency management.
o VFS-560:  [http] avoid initial HEAD request to root of HttpFileSystem as it might be wrong context.
o VFS-236:  [smb] Allow SMB to be used with no authentication. Thanks to Matt Casters.
o VFS-564:  Make some loggers static. Thanks to Dmitry Konstantinov.
o VFS-557:  [webdav][test] Create WebDav test directory in target/test. Avoid creating core/jackrabbit/tmp.
            Logfiles of Jackrabbit are preserved when -DWebdavProviderTestCase.Debug=true is specified.
o VFS-558:  Make moveTo() and getParent() work with CacheStrategy.ON_CALL.
            In case of FTP Provider it would lead otherwise to an UnsupportedOperationException.
o           [sandbox] RACRandomAccessFile is now in org.apache.commons.vfs2.util package (so sandbox has only one overlapping package).
o VFS-552:  [sandbox] include vfs-providers.xml in JAR for dynamic registration of mime and smb providers.
o VFS-551:  Javadoc: make it clear that DefaultCryptor is only an obfuscation function. Thanks to David Camilo Espitia Manrique.
o VFS-309:  DefaultFileContent will remove thread data whenever possible to avoid leaks.
o VFS-487:  DefaultFileMonitor detects recreated files. Thanks to Dave Marion.
o VFS-523:  [HDFS] Make HdfsFileObject.equal use system hashcode/equals instead of
            wrongly comparing file path only. Thanks to Roger Whitcomb.
o VFS-544:  [Virtual] Allow virtual file systems and virtual file system provider
            to be closed, to avoid memory leak.
o VFS-142:  Use ThreadLocal.remove() to clean out FileContentThreadData objects. Thanks to Ryan Boettcher.
o VFS-545:  Make DefaultFilesCache remove reference to filesystem when it is cleared (closed).
o VFS-521:  [Ram][Tests] Make RAM provider test pass on Java 8
            (JDK-8042377, self-suppression not permitted, MonitorOutputStream#close()).
o VFS-338:  [Local][Tests] Avoid IndexOutOfBoundsException when validating local file URIs. Thanks to Daniel R..
o VFS-489:  [tests] ProviderWriteTests#testListener does not fail cleanly. Thanks to Bernd Eckenfels.
o VFS-486:  DefaultFileMonitor sleeps for twice the specified delay when checkPerRun > 0. Thanks to Sam Haldane.
o VFS-482:  Wrong assertion messages in RAM provider test case.
o VFS-460:  Dependency to commons-compress set as optional.
o VFS-464:  StaticUserAuthenticator should return only requested authentication data.
o VFS-461:  [FTP/FTPS] ConfigBuilder does not consider system properties for the value of SoTimeout and Encoding.
o VFS-458:  [FTPS] Provider missed functionality and bug fixes already available for the FTP provider.
o VFS-452:  [HTTP] HttpFileObject read/write attributes should reflect underlying FileSystem capabilities. Thanks to Jean-Marc Borer.
o VFS-285:  AbstractFileObject.getChildren() may corrupt its internal state if a filename
            can not be resolved. Thanks to Kirill Safonov.
o VFS-450:  [HDFS] HDFSFileSystem.resolveFile() does not honor CacheStrategy.ON_RESOLVE. Thanks to Dave Marion.
o VFS-448:  commons-vfs 2.0 JAR has flawed OSGi MANIFEST.MF.
o VFS-439:  StaticUserAuthenticator usage example wrong. Thanks to pensecit.
o VFS-437:  [FTP] StackOverFlowError getting the type of a directory with a symbolic link to a parent directory with the same name. Thanks to denniszhu, danttran, jpowang.
o VFS-435:  FileSystemConfigBuilder does not use prefix for some system property lookups. Thanks to george scott.
o VFS-434:  FileSystemException should reuse IOException's chained exception.
o VFS-433:  [WebDAV] Message "vfs.provider.webdav/propfind.error" is not defined.
o VFS-430:  The SoftRefFilesCache class logs clear text password. Thanks to antonin.stefanutti.
o VFS-429:  Remove extra FileSystem ivar in AbstractFileObject subclasses with generics.
o VFS-427:  [HTTP] NPE on HttpFileObject.getContent().getContentInfo(). Thanks to awelynant.
o VFS-406:  [RAM] resize throws ArrayOOBE when shrinking in size. Thanks to mp1.
o VFS-353:  [FTP] Client should call logout before disconnecting. Thanks to bergander.
o VFS-408:  CompressedFileFileObject Exception thrown when container file has no extension. Thanks to anilm2@yahoo.com.
o VFS-258:  [SFTP][RAM] Unsafe casting to AbstractFileObject subclasses in doRename(). Thanks to mzawirski.
o VFS-413:  [FTP] No support for FTP servers with non Latin-1 control encoding. Thanks to polivenok.
o VFS-200:  [SFTP] Failure when files are very large.
o VFS-296:  [FTP] FTP socket timeout setting doesn't work if connect hangs. Thanks to andreasp.
o VFS-410:  [SFTP] SftpFileObject getInputStream(long) reads the whole file into memory. Thanks to mstockhammer.
o VFS-407:  [RAM] Reading a RAM FileSystem file fails because it never returns EOF -1. Thanks to mp1.
o VFS-382:  SFTP getChildren() does not fail when called on a file.
o VFS-380:  FTP connect.error message used instead of SFTP connect.error message.
o VFS-378:  Tar error message are missing from resource file.
o VFS-374:  Incorrect lazy initialization of static field org.apache.commons.vfs2.util.Messages.resources in org.apache.commons.vfs2.util.Messages.findMessage(String)Add FileContent write APIs.
o VFS-355:  The read method of RamFileRandomAccessContent's input stream does not return -1 at eof. Thanks to Miroslav Pokorny.
o VFS-356:  Throw an IOException if an attempt is made to seek to a position before the start of the file.
o VFS-359:  Don't delete a RamFileObject if it is open. Thanks to Miroslav Pokorny.
o VFS-352:  ZipFileSystem now uses an internal Map as a cache for all the files in the zip archive.
o VFS-351:  Chain the SftpException in the FileSystemException. Thanks to John Backstrand.
o VFS-325:  Allow # character in file names. Thanks to Larry Reeve.
o VFS-335:  Use atomic variables in MonitorInputStream.
o VFS-364:  Check the href in the response for just a path in addition to a full uri.

Changes:
o VFS-607:  Update Apache Commons Compress from 1.10 to 1.11.
o VFS-608:  Update Apache Commons Net from 3.4 to 3.5.
o VFS-530:  [hdfs] Use stable Apache Hadoop 2.6 dependencies. Thanks to Dave Marion.
o VFS-601:  Update Apache Commons Net from 3.3 to 3.4.
o VFS-602:  Update Apache Commons IO from 2.4 to 2.5.
o VFS-579:  Update Jsch from 0.1.51 to 0.1.53.
o VFS-542:  Update Jsch from 0.1.50 to 0.1.51.
o VFS-578:  Update Apache Commons Compress from 1.9 to 1.10.
o VFS-541:  Update Apache Commons Compress from 1.6 to 1.9.
o VFS-540:  Update Apache Commons Logging from 1.1.3 to 1.2.
o VFS-539:  Update Apache Commons Lang from 3.1 to 3.3.2.
o VFS-526:  [HDFS][Tests] Support HDFS testing on Windows (but keep profile "no-hdfs" enabled on Windows VFS-529).
o VFS-453:  [HTTP][WEBDAV] Add file system options for connect and socket timeout. Thanks to Jiri Syrovy.
o VFS-167:  [FTP] Allow Proxy support to file system options. Thanks to Jimmy Praet.
o VFS-520:  Make Javadoc compatible with Java 8 tool.
o VFS-518:  Documentation of FileSystemOptions should be more helpful. Thanks to Roland Illig.
o VFS-500:  VFSClassLoader.findResources missing. Thanks to Bernd Eckenfels.
o VFS-514:  [tests] PermissionsTests leaves unclean test directory. Thanks to Bernd Eckenfels.
o VFS-501:  Hide passwords from log/console output. Thanks to Yves Schumann.
o VFS-496:  Resource translation issues. Thanks to Bernd Eckenfels.
o VFS-494:  [SFTP] No support for SFTP servers with non Latin-1 file name encoding. Thanks to Allen Xudong Cheng.
o VFS-368:  [SFTP] Documentation implies that "userDirIsRoot" defaults to true. Thanks to Brendan Long.
o VFS-265:  [FTP] Set user dir as root dir by default. Thanks to Scott Bjerstedt.
o VFS-484:  [SFTP] Update Jsch to 0.1.50 from 0.1.49.
o VFS-507:  Update to Apache Commons Collection 4.1 from 3.2.1 and use generics.
o VFS-476:  Update Apache Commons Logging to 1.1.3 from 1.1.2.
o VFS-475:  Update Apache Commons Net to 3.3 from 3.2.
o VFS-506:  [Tar][Bzip2] Update Apache Commons Compress to 1.6 from 1.5.
o VFS-471:  Update to Apache Commons Compress 1.5.
o VFS-283:  [SFTP] SFTP provider did not support passphrase-protected keys nor the exchange of a public key with
            a requesting SFTP server. To support such triples (private key/passphrase/public key) instead of private
            keys only, a new structure EntityInfo has been created. SftpFileSystemConfigBuilder has now the new
            getter and setter methods getIdentityInfo and setIdentity info which replace the now deprecated methods
            getIdentities and setIdentities.
o VFS-463:  FileSytemConfigBuilder supports system properties for the value of enum-based configuration entries.
o VFS-462:  [FTPS] Deprecate FtpsFileSystemConfigBuilder.setFtpsType and FtpsFileSystemConfigBuilder.getFtpsType
            in favor of FtpsFileSystemConfigBuilder.setFtpsMode and FtpsFileSystemConfigBuilder.getFtpsMode which
            use new enum FtpsMode instead.
o VFS-459:  [FTP/FTPS] Sent commands and the received answer is logged at debug level.
o VFS-457:  Update test dependencies: sshd-core version 0.7.0 to 0.8.0; mina-core 2.0.4 to 2.0.7; junit 4.11 to 4.12; slf4j-* 1.5.5 to 1.5.11
o VFS-456:  Use org.bouncycastel:bcprov-jdk16 instead of org.bouncycastle:bcprof-jdk15on since Java 1.6 is required.
o VFS-415:  Update VFS requirement to Java 1.6.
o VFS-418:  Update to Apache Commons Compress 1.4.1.
o VFS-321:  AbstractFileObject sometimes uses getFileSystem() and sometimes references "fs" field directly. Thanks to sebb.
o VFS-327:  UriParser.canonicalizePath possible NPE for filenameParser. Thanks to sebb.
o VFS-416:  [SFTP] Update Jsch to version 0.1.49 from 0.1.47.
o VFS-395:  [POM] Remove maven-scm-* dependencies.
o VFS-411:  [SFTP] Update Jsch to version 0.1.47 from 0.1.46.
o VFS-409:  Update Apache Commons Compress to 1.4 from 1.3.
o VFS-404:  [FTP][FTPS] Update Apache Commons Net to 3.1 from 3.0.1.
o VFS-402:  [WebDAV] Update Apache Jackrabbit 1.5.2 to 1.6.5.
o VFS-401:  Update JSch to 0.1.46 from 0.1.45 for the SFTP provider.
o VFS-392:  Build tests WebDAV file system with an embedded WebDAV server (Apache Jackrabbit).
o VFS-391:  Build tests URL HTTP file system with an embedded HTTP server (Apache HttpComponent Core).
o VFS-390:  Use variable argument list in org.apache.commons.vfs2.util.Messages instead of Object[].
o VFS-389:  Use variable argument lists in FileSystemException instead of Object[]s.
o VFS-388:  Build tests SFTP file system with an embedded SFTP server (Apache MINA).
o VFS-387:  Build tests FTP file system with an embedded FTP server (Apache MINA).
o VFS-386:  Build tests HTTP file system with an embedded HTTP server (Apache HttpComponent Core).
o VFS-385:  Add HTTP status code to HTTP file provider exception messages when available.
o VFS-384:  Update Apache Commons Net to 3.0.1 from 2.2 for FTP and SFTP providers.
o VFS-383:  Update JSch to 0.1.45 from 0.1.42 for the SFTP provider.
o VFS-379:  Replace custom BZIP2 code with Apache Commons Compress 1.3.
o VFS-377:  Replace custom TAR code with Apache Commons Compress 1.3.
o VFS-375:  Upgrade to Apache Commons Compress 1.3 from 1.2.
o VFS-366:  Can't sort a List of FileObject's, FileObject to implement Comparable<FileObject>.
o VFS-341:  Enable logging of JSch using the Commons Logging Log object in SftpClientFactory. Thanks to Rajika Kumarasiri.
o VFS-361:  Upgrade commons collections version to 3.2.1.

Removed:
o VFS-469:  Remove unused dependency to javax.jcr:jcr.

Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html

For complete information on Apache Commons VFS, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons VFS website:

Visit http://commons.apache.org/proper/commons-vfs/

Download it from http://commons.apache.org/proper/commons-vfs/download_vfs.cgi

-----------------------------------------------------------------------------