<?xml version="1.0"?>
<!--
   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.
-->
<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits. Set the project.properties' maven.changelog.range
property to the number of days since the last release.

To generate the release notes from this file:

mvn -N changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the formatting if necessary
and commit

The <action> type attribute can be add,update,fix,remove.
-->

<document xmlns="http://maven.apache.org/changes/1.0.0">
  <properties>
    <title>Apache Commons VFS Release Notes</title>
    <author email="dev@commons.apache.org">Apache Commons Developers</author>
  </properties>

  <body>
    <release version="2.5.0" date="2019-MM-DD" description="New features and bug fix release.">
<!--       <action issue="VFS-443" dev="ggregory" type="update" due-to="nickallen"> -->
<!--        [Local] Need an easy way to convert from a FileObject to a File. -->
<!--       </action> -->
<!-- START Might need to be moved to the next version -->
      <action issue="VFS-741" dev="ecki" type="fix">
        FileObject#getChildren allows listing of files with known scheme prefix (generalizes VFS-398).
      </action>
      <action issue="VFS-726" dev="ggregory" type="fix" due-to="Cornelius Höfig, Gary Gregory">
        getInputStream(int bufferSize) on SftpFileObject effectively ignores buffer size.
      </action>
      <action issue="VFS-704" dev="ggregory" type="fix" due-to="Boris Petrov, Gary Gregory">
        Some providers wrap their input/output streams twice in a BufferedInputStream.
      </action>
      <action issue="VFS-727" dev="ggregory" type="fix" due-to="Michiel Hendriks, Gary Gregory">
        Prevented creation of singleton file system manager from providers.
      </action>
      <action issue="VFS-444" dev="ggregory" type="update" due-to="Walter Eaves, Xavier Dury, Michiel Hendriks, Gary Gregory">
        ResourceFileProvider "res://" failed to obtain FileObject from resolved FileName.
      </action>
      <action issue="VFS-728" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Apache Commons Compress from 1.18 to 1.19.
      </action>
      <action issue="VFS-729" dev="ggregory" type="update" due-to="Michiel Hendriks, Gary Gregory">
        Upgrade Hadoop to 2.7.4 or later; will use current 3.2.0.
      </action>
      <action issue="VFS-731" dev="ggregory" type="update" due-to="Gary Gregory">
        Update org.apache.httpcomponents:httpclient from 4.5.9 to 4.5.10.
      </action>
      <action issue="VFS-732" dev="ggregory" type="update" due-to="Gary Gregory">
        Update org.apache.httpcomponents:httpcore-nio from 4.4.11 to 4.4.12.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        Update tests using org.mockito:mockito-core from 3.0.0 to 3.1.0.
      </action>
      <action issue="VFS-734" dev="ggregory" type="add" due-to="Gary Gregory">
        Add functional interface org.apache.commons.vfs2.function.VfsConsumer.
      </action>
      <action issue="VFS-735" dev="ggregory" type="add" due-to="Gary Gregory">
        Add org.apache.commons.vfs2.FileSystemManager.close() via AutoCloseable.
      </action>
      <action issue="VFS-736" dev="ggregory" type="add" due-to="Gary Gregory">
        Add org.apache.commons.vfs2.VFS.reset().
      </action>
      <action issue="VFS-737" dev="ggregory" type="add" due-to="Gary Gregory">
        Update Hadoop from 3.2.0 to 3.2.1.
      </action>
      <action issue="VFS-733" dev="ggregory" type="fix" due-to="Falco, Gary Gregory, Bruno P. Kinoshita">
        Parent layer of ZipFileSystem set to null through OnCallRefreshFileObject and DecoratedFileObject.refresh().
      </action>
      <action issue="VFS-738" dev="ggregory" type="add" due-to="Gary Gregory">
        Deprecate org.apache.commons.vfs2.FileChangeEvent.getFile() in favor of getFileObject().
      </action>
      <action issue="VFS-739" dev="ggregory" type="fix" due-to="xia0c, Gary Gregory">
        Changes to parseUri breaks backward compatibility by throwing NullPointerException in some cases.
      </action>
      <action issue="VFS-686" dev="ggregory" type="fix" due-to="Woonsan Ko, Gary Gregory">
        webdav4 provider based on the latest Jackrabbit 2.x #52.
      </action>
      <action issue="VFS-742" dev="ggregory" type="add" due-to="Gary Gregory">
        Add org.apache.commons.vfs2.FileContent.isEmpty().
      </action>
      <action issue="VFS-743" dev="ggregory" type="add" due-to="Gary Gregory">
        Add org.apache.commons.vfs2.provider.compressed.CompressedFileFileObject.SIZE_UNDEFINED.
      </action>
      <action issue="VFS-744" dev="ggregory" type="fix" due-to="Gary Gregory">
        org.apache.commons.vfs2.FileContent.getByteArray() can throw NegativeArraySizeException for BZip2 files.
      </action>
      <action issue="VFS-687" dev="ggregory" type="fix" due-to="Woonsan Ko, Gary Gregory">
        Add http5 and http5s providers (#74)
      </action>
    </release>
    <release version="2.4.1" date="2019-08-10" description="Bug fix release.">
      <action issue="VFS-725" dev="ggregory" type="fix" due-to="Gary Gregory">
        [Local] org.apache.commons.vfs2.FileContent.getLastModifiedTime() is losing milliseconds (always ends in 000).
      </action>
      <action issue="VFS-724" dev="ggregory" type="fix" due-to="William R, Gary Gregory">
        FileContent#getByteArray() throws IllegalArgumentException: Buffer size &lt;= 0 when file size is 0.
      </action>
      <action                 dev="ggregory" type="fix" due-to="Gary Gregory">
        Javadoc fixes.
      </action>
    </release>
    <release version="2.4" date="2019-07-12" description="New features and bug fix release.">
      <action issue="VFS-690" dev="ggregory" type="add">
        Allow to set key exchange algorithm explicitly. GitHub #32.
      </action>
      <action issue="VFS-692" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Apache Commons Collections from 4.2 to 4.3.
      </action>
      <action issue="VFS-693" dev="ggregory" type="update" due-to="Boris Petrov, Gary Gregory">
        Add support for customizing FTP transfer aborted status codes. GitHub PR #51.
      </action>
      <action issue="VFS-694" dev="ggregory" type="fix" due-to="Boris Petrov">
        Fix inability to start the DefaultFileMonitor after it has been stopped. GitHub PR #55.
      </action>
      <action issue="VFS-696" dev="ggregory" type="fix" due-to="rayzzed">
        SFTP HTTP and SOCKS proxy authentication. GitHub PR #49.
      </action>
      <action issue="VFS-497" dev="ggregory" type="add" due-to="Michael Schnell">
        Ported filters from Commons IO #9.
      </action>
      <action issue="VFS-696" dev="ggregory" type="add" due-to="Robert DeRose">
        More efficient comparison in FileExtensionSelector #44.
      </action>
      <action issue="VFS-660" dev="ggregory" type="add" due-to="Liu Yubao">
        Expose workaround for connecting to FTP server from different subnets in PASV mode #35.
      </action>
      <action issue="VFS-699" dev="ggregory" type="add" due-to="Boris Petrov">
        Add setting for FTP encoding auto-detection #58.
      </action>
      <action issue="VFS-702" dev="ggregory" type="update" due-to="Boris Petrov">
        Simplify adding files to DefaultFileMonitor #57.
      </action>
      <action issue="VFS-703" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Apache Commons Lang from 3.8.1 to 3.9.
      </action>
      <action issue="VFS-706" dev="ggregory" type="add" due-to="Boris Petrov">
        Add ability to specify buffer sizes #59.
      </action>
      <action issue="VFS-609" dev="ggregory" type="add" due-to="stevezhuang, Rostislav, Gary Gregory">
        SFTP provider doesn't support a private key as byte array #60.
      </action>
      <action issue="VFS-707" dev="ggregory" type="add" due-to="Gary Gregory">
        Update Apache HttpClient from 4.5.7 to 4.5.8.
      </action>
      <action issue="VFS-707" dev="ggregory" type="fix" due-to="Gary Gregory">
        [SFTP] SftpFileSystem.executeCommand(String, StringBuilder) can leak ChannelExec objects.
      </action>
      <action issue="VFS-709" dev="ggregory" type="fix" due-to="Gary Gregory">
        [SFTP] SftpFileSystem.getGroupsIds() can initialize underlying data more than once while multithreading.
      </action>
      <action issue="VFS-710" dev="ggregory" type="fix" due-to="Gary Gregory">
        [SFTP] SftpFileSystem.getUid() can initialize underlying data more than once while multithreading.
      </action>
      <action issue="VFS-711" dev="ggregory" type="fix" due-to="Gary Gregory">
        [SFTP] SftpFileSystem can initialize underlying Session more than once while multithreading.
      </action>
      <action issue="VFS-662" dev="ggregory" type="fix" due-to="qxo, Alexey Abashev, Gary Gregory">
        [SFTP] SftpFileSystem has Thread-safe issue about idleChannel (#36).
      </action>
      <action issue="VFS-700" dev="ggregory" type="fix" due-to="Gary Gregory, Matthias Krueger">
        Some tests fail on Java 11 and above.
      </action>
      <action issue="VFS-712" dev="ggregory" type="add" due-to="Gary Gregory">
        Add null-safe org.apache.commons.vfs2.util.FileObjectUtils.exists(FileObject).
      </action>
      <action issue="VFS-713" dev="ggregory" type="add" due-to="Gary Gregory">
        Add FileObjectUtils.readProperties(FileObject) method to read a .properties file.
      </action>
      <action issue="VFS-715" dev="ggregory" type="add" due-to="Gary Gregory">
        Add org.apache.commons.vfs2.FileContent.getByteArray().
      </action>
      <action issue="VFS-716" dev="ggregory" type="fix" due-to="Boris Petrov">
        Fix AbstractFileName.getURI returning unencoded #-sign #64.
      </action>
      <action issue="VFS-698" dev="ggregory" type="fix" due-to="David Septimus, Bernd">
        SFTP file attributes are fetched multiple times leading to very slow directory listing; #65.
      </action>
      <action issue="VFS-717" dev="ggregory" type="fix" due-to="Gary Gregory">
        Update org.apache.httpcomponents:httpclient from 4.5.8 to 4.5.9.
      </action>
      <action issue="VFS-718" dev="ggregory" type="fix" due-to="Boris Petrov">
        MonitorInputStream should not close the stream in "read" #67.
      </action>
      <action issue="VFS-719" dev="ggregory" type="add" due-to="Gary Gregory">
        Add methods to get the contents of file objects as strings.
      </action>
      <action issue="VFS-720" dev="ggregory" type="add" due-to="Boris Petrov">
        Implement Closeable for RandomAccessContent #66.
      </action>
      <action issue="VFS-721" dev="ggregory" type="add" due-to="Gary Gregory">
        Add support for symbolic links for the local file system and add FileObject#isSymbolicLink().
      </action>
      <action issue="VFS-722" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Apache Commons Collections from 4.3 to 4.4.
      </action>
      <!-- Source code notes -->
      <action dev="ggregory" type="update">
        Source incompatibility: org.apache.commons.vfs2.FileFilter.accept(FileSelectInfo) now throws checked exception FileSystemException.
      </action>
      <action dev="ggregory" type="update">
        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.
      </action>
      <action dev="ggregory" type="update">
        Public API note: The overridden method org.apache.commons.vfs2.provider.sftp.SftpFileObject#refresh() was removed but is implemented in a superclass.
      </action>
      <action dev="ggregory" type="update">
        Public API note: The overridden method org.apache.commons.vfs2.provider.sftp.SftpFileProvider#init() was removed but is implemented in a superclass.
      </action>
    </release>
    <release version="2.3" date="2019-02-01" description="New features and bug fix release.">
      <action issue="VFS-645" dev="ggregory" type="fix">
		VfsClassLoaderTests and JarProviderTestCase fails on Java 9 and up.
      </action>
      <action issue="VFS-678" dev="ecki" type="fix">
        Fix various LGTM.com code review warnings.
      </action>
      <action issue="VFS-652" dev="ecki" type="fix">
        PatternFileSelector documentation to describe actual matching against getPath().
      </action>
      <action issue="VFS-650" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.15 to 1.16.1.
      </action>
      <action issue="VFS-646" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.14 to 1.15.
      </action>
      <action issue="VFS-589" dev="ggregory" type="fix" due-to="L, Gary Gregory">
        SFTP moveTo operation hangs if the server does not support SSH channelExec.
      </action>
      <action issue="VFS-653" dev="ggregory" type="update">
        Replace use of deprecated APIs in HDFS provider.
      </action>
      <action issue="VFS-655" dev="ggregory" type="fix" due-to="Arnaud MERGEY">
        OSGI MANIFEST.MF "Import-Package" should be ";resolution:=optional" for Maven "optional" dependencies.
      </action>
      <action issue="VFS-657" dev="ggregory" type="fix" due-to="Elias Putz">
        FileSelector implementations like FileDepthSelector should throw Exception.
      </action>
      <action issue="VFS-614" dev="ggregory" type="fix" due-to="Boris Petrov, Otto Fowler">
        MonitorInputStream should not close the stream in read().
      </action>
      <action issue="VFS-666" dev="ggregory" type="update">
        Update Apache Commons Collections from 4.1 to 4.2.
      </action>
      <action issue="VFS-667" dev="ggregory" type="fix">
        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.
      </action>
      <action issue="VFS-668" dev="ggregory" type="update">
        Throw a NPE with a better message when a class loader is null.
      </action>
      <action issue="VFS-669" dev="ggregory" type="fix">
        org.apache.commons.vfs2.util.CombinedResources.loadResources(String) should not throw an NPE for the system class loader is null.
      </action>
      <action issue="VFS-671" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.16.1 to 1.18.
      </action>
      <action issue="VFS-675" dev="ggregory" type="fix">
        NullPointerException at AbstractFileObject.java:221.
      </action>
      <action issue="VFS-680" dev="ggregory" type="update">
        Update from Java 7 to Java 8.
      </action>
      <action issue="VFS-681" dev="ggregory" type="update" due-to="Robert DeRose">
        VFS.setManager should be synchronized; #43.
      </action>
      <action issue="VFS-674" dev="ggregory" type="fix" due-to="Boris Petrov, Gary Gregory">
        Cannot close an FTP input stream without an exception.
      </action>
      <action issue="VFS-682" dev="ggregory" type="update">
        Throw a org.apache.commons.vfs2.FileSystemException instead of a NullPointerException in org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveName(FileName, String, NameScope).
      </action>
      <action issue="VFS-294" dev="ggregory" type="fix" due-to="Johannes Scharf">
        NullPointerException in FtpFileObject.getChildFile().
      </action>
      <action issue="VFS-679" dev="ggregory" type="fix" due-to="Boris Petrov, Gary Gregory">
        NullPointerException in FtpFileObject.doGetLastModifiedTime().
      </action>
      <action issue="VFS-398" dev="ggregory" type="fix" due-to="Otto Fowler">
        FtpFileObject.getChildren() fails when a folder contains a file with a colon in the name.
      </action>
      <action issue="VFS-688" dev="ggregory" type="update">
        [SFTP] Update jsch from 0.1.54 to 0.1.55.
      </action>
      <action issue="VFS-677" dev="ggregory" type="add" due-to="dingxbcn">
        [SFTP] Add support for append mode.
      </action>
      <action issue="VFS-673" dev="ggregory" type="add" due-to="Oleksandr Lykhonosov">
        [SFTP] Support com.jcraft.jsch.ConfigRepository (~/.ssh/config) with SftpFileSystemConfigBuilder and flag to load OpenSSHConfig.
      </action>
      <action issue="VFS-673" dev="ggregory" type="add" due-to="Daniel Banks">
        DefaultFileSystemManager should implement AutoCloseable.
      </action>
      <action issue="VFS-637" dev="ggregory" type="add" due-to="Gary Gregory">
        Zip files with legacy encoding and special characters let VFS crash.
      </action>
      <action issue="VFS-360" dev="ggregory" type="add" due-to="Woonsan Ko">
        Add HTTP provider based on HttpComponents HttpClient 4.
      </action>
      <action issue="VFS-689" dev="ggregory" type="add" due-to="Gary Gregory">
        org.apache.commons.vfs2.provider.http.HttpFileObject.getHeadMethod() does not release connection when an exception is thrown.
      </action>
    </release>
    <release version="2.2" date="2017-10-06" description="New features and bug fix release.">
      <action issue="VFS-642" dev="pschumacher" type="update" due-to="ilangoldfeld">
        Upgrade to jcifs 1.3.17
      </action>
      <action issue="VFS-189" dev="kinow" type="fix">
        Possible NPE in DefaultFileSystemManager.
      </action>
      <action issue="VFS-628" dev="ggregory" type="add">
        Add a file inverter FileSelector: InvertIncludeFileSelector.
      </action>
      <action issue="VFS-612" dev="ggregory" type="update">
        Update the platform requirement from Java 6 to Java 7.
      </action>
      <action issue="VFS-615" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.11 to 1.12.
      </action>
      <action issue="VFS-629" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.12 to 1.13.
      </action>
      <action issue="VFS-639" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.13 to 1.14.
      </action>
      <action issue="VFS-631" dev="ggregory" type="update">
        Update from Apache Commons Net 3.5 to 3.6.
      </action>
      <action issue="VFS-632" dev="ggregory" type="update">
        Update from JCraft jsch for SFTP/SSH from 0.1.53 to 0.1.54.
      </action>
      <action issue="VFS-621" dev="ggregory" type="update">
        Add API VFS.setManager(FileSystemManager).
      </action>
      <action issue="VFS-643" dev="ggregory" type="update">
        VFS should not log at the INFO level.
      </action>
      <action issue="VFS-620" dev="ggregory" type="fix" due-to="stevezhuang">
        FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP.
      </action>
      <action issue="VFS-291" dev="ggregory" type="fix">
        ZIP archives are not properly closed after unzipping and cannot be deleted until the JVM exists.
      </action>
      <action issue="VFS-644" dev="ggregory" type="fix">
        AbstractFileSystem.streamClosed() always sets openStream count to zero.
      </action>
    </release>
    <release version="2.1" date="2016-05-19" description="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.">
<!--       <action issue="VFS-443" dev="ggregory" type="update" due-to="nickallen"> -->
<!--        [Local] Need an easy way to convert from a FileObject to a File. -->
<!--       </action> -->
<!-- START Might need to be moved to the next version -->
     <action issue="VFS-607" dev="ggregory" type="update">
        Update Apache Commons Compress from 1.10 to 1.11.
     </action>
     <action issue="VFS-608" dev="ggregory" type="update">
        Update Apache Commons Net from 3.4 to 3.5.
     </action>
<!-- END Might need to be moved to the next version -->
     <action issue="VFS-424" dev="ecki" type="fix">
        Fix StandardFileSystemManager class loading so it works in a OSGi environment.
     </action>
      <action issue="VFS-490" dev="ecki" type="fix">
        [vfsclassloader] Do not open folders with .jar extension. Adds tests.
     </action>
      <action issue="VFS-582" dev="ecki" type="fix">
        [tests] revert rename of getTestDirectoryFile to make test classes more compatible for external providers.
     </action>
      <action issue="VFS-480" dev="ecki" type="fix">
        Make startup of SoftRefsFileCache cleaner thread work and less racy to avoid leaks.
     </action>
      <action issue="VFS-549" dev="ecki" type="fix">
        Use File.seperator instead of getProperty("file.separator").
     </action>
      <action issue="VFS-567" dev="ecki" type="fix" due-to="Antonio Petrelli">
        [ftp] Ignore exceptions while QUIT/disconnect.
     </action>
      <action issue="VFS-572" dev="ecki" type="fix" due-to="Sandra Parsick">
        [sftp] better documentation for knownhosts file option.
     </action>
      <action issue="VFS-574" dev="ecki" type="fix">
        Ensure FileOpertionProviders are closed. Adds some testcases.
        The error code for missing operations exceptions corrected: vfs.operation/operation-not-supported.error
     </action>
      <action issue="VFS-279" dev="ecki" type="fix" due-to="Didier Earith, Simon Legner">
        [local] Avoid ClassCastException when replicating local files while OnCall caching is active.
      </action>
      <action issue="VFS-297" dev="joehni" type="fix" due-to="Kirill Safonov, Jimmy Praet">
        [sftp] VSF fails to reuse FileSystem instances if FileSystemOptions contain
        an array as value. Reported for SFTP using identities.
      </action>
      <action issue="VFS-198" dev="ecki" type="add" due-to="Andrew Franklin, Simon Legner">
        [http] Make user agent configurable.
      </action>
      <action issue="VFS-202" dev="ecki" type="fix" due-to="Sergey Vladimirov, Simon Legner">
        [http] Allow URLs responding with 405 to HEAD requests.
      </action>
      <action issue="VFS-490" dev="ecki" type="fix">
        [hdfs] Make OSGi package imports for hdfs resolution=optional.
        Removed all scopes from dependency management.
      </action>
      <action issue="VFS-560" dev="ecki" type="fix">
        [http] avoid initial HEAD request to root of HttpFileSystem as it might be wrong context.
      </action>
      <action issue="VFS-236" dev="ecki" type="fix" due-to="Matt Casters">
        [smb] Allow SMB to be used with no authentication.
      </action>
      <action issue="VFS-564" dev="ecki" type="fix" due-to="Dmitry Konstantinov">
        Make some loggers static.
      </action>
      <action issue="VFS-555" dev="rwhitcomb" type="add">
        [hdfs] Add the ability to specify an HDFS configuration file with HdfsFileSystemConfigBuilder.
      </action>
      <action issue="VFS-557" dev="ecki" type="fix">
       [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.
      </action>
      <action issue="VFS-558" dev="ecki" type="fix">
       Make moveTo() and getParent() work with CacheStrategy.ON_CALL.
       In case of FTP Provider it would lead otherwise to an UnsupportedOperationException.
      </action>
      <action dev="ecki" type="fix">
       [sandbox] RACRandomAccessFile is now in org.apache.commons.vfs2.util package (so sandbox has only one overlapping package).
      </action>
      <action issue="VFS-530" dev="ecki" type="update" due-to="Dave Marion">
       [hdfs] Use stable Apache Hadoop 2.6 dependencies.
      </action>
      <action dev="ecki" type="add">
       [example] make VFS Shell print version and implement new 'info' command.
      </action>
      <action issue="VFS-552" dev="ecki" type="fix">
       [sandbox] include vfs-providers.xml in JAR for dynamic registration of mime and smb providers.
      </action>
      <action issue="VFS-551" dev="ecki" type="fix" due-to="David Camilo Espitia Manrique">
       Javadoc: make it clear that DefaultCryptor is only an obfuscation function.
      </action>
      <action issue="VFS-309" dev="ecki" type="fix">
       DefaultFileContent will remove thread data whenever possible to avoid leaks.
      </action>
      <action issue="VFS-487" dev="ecki" type="fix" due-to="Dave Marion">
       DefaultFileMonitor detects recreated files.
      </action>
      <action issue="VFS-523" dev="ecki" type="fix" due-to="Roger Whitcomb">
       [HDFS] Make HdfsFileObject.equal use system hashcode/equals instead of
       wrongly comparing file path only.
      </action>
      <action issue="VFS-544" dev="ecki" type="fix">
       [Virtual] Allow virtual file systems and virtual file system provider
       to be closed, to avoid memory leak.
      </action>
      <action issue="VFS-142" dev="ecki" type="fix" due-to="Ryan Boettcher">
       Use ThreadLocal.remove() to clean out FileContentThreadData objects.
      </action>
      <action issue="VFS-545" dev="ecki" type="fix">
       Make DefaultFilesCache remove reference to filesystem when it is cleared (closed).
      </action>
      <action issue="VFS-521" dev="ecki" type="fix">
       [Ram][Tests] Make RAM provider test pass on Java 8
       (JDK-8042377, self-suppression not permitted, MonitorOutputStream#close()).
      </action>
      <action issue="VFS-601" dev="ggregory" type="update">
       Update Apache Commons Net from 3.3 to 3.4.
      </action>
      <action issue="VFS-602" dev="ggregory" type="update">
       Update Apache Commons IO from 2.4 to 2.5.
      </action>
      <action issue="VFS-579" dev="ggregory" type="update">
       Update Jsch from 0.1.51 to 0.1.53.
      </action>
      <action issue="VFS-542" dev="ggregory" type="update">
       Update Jsch from 0.1.50 to 0.1.51.
      </action>
      <action issue="VFS-578" dev="ggregory" type="update">
       Update Apache Commons Compress from 1.9 to 1.10.
      </action>
      <action issue="VFS-541" dev="ggregory" type="update">
       Update Apache Commons Compress from 1.6 to 1.9.
      </action>
      <action issue="VFS-540" dev="ggregory" type="update">
       Update Apache Commons Logging from 1.1.3 to 1.2.
      </action>
      <action issue="VFS-539" dev="ggregory" type="update">
       Update Apache Commons Lang from 3.1 to 3.3.2.
      </action>
      <action issue="VFS-532" dev="ggregory" type="add" due-to="Gareth Daniel Smith">
       [FTP] Allow configuring remoteVerificationEnabled on FTPClient instances.
      </action>
      <action issue="VFS-338" dev="ecki" type="fix" due-to="Daniel R.">
       [Local][Tests] Avoid IndexOutOfBoundsException when validating local file URIs.
      </action>
      <action issue="VFS-526" dev="ecki" type="update">
       [HDFS][Tests] Support HDFS testing on Windows (but keep profile "no-hdfs" enabled on Windows VFS-529).
      </action>
      <action issue="VFS-453" dev="ecki" type="update" due-to="Jiri Syrovy">
       [HTTP][WEBDAV] Add file system options for connect and socket timeout.
      </action>
      <action issue="VFS-167" dev="ecki" type="update" due-to="Jimmy Praet">
       [FTP] Allow Proxy support to file system options.
      </action>
      <action issue="VFS-520" dev="ecki" type="update">
       Make Javadoc compatible with Java 8 tool.
      </action>
      <action issue="VFS-518" dev="ggregory" type="update" due-to="Roland Illig">
        Documentation of FileSystemOptions should be more helpful.
      </action>
      <action issue="VFS-500" dev="ggregory" type="update" due-to="Bernd Eckenfels">
        VFSClassLoader.findResources missing.
      </action>
      <action issue="VFS-514" dev="ggregory" type="update" due-to="Bernd Eckenfels">
        [tests] PermissionsTests leaves unclean test directory.
      </action>
      <action issue="VFS-501" dev="ggregory" type="update" due-to="Yves Schumann">
        Hide passwords from log/console output.
      </action>
      <action issue="VFS-496" dev="ggregory" type="update" due-to="Bernd Eckenfels">
        Resource translation issues.
      </action>
      <action issue="VFS-494" dev="ggregory" type="update" due-to="Allen Xudong Cheng">
        [SFTP] No support for SFTP servers with non Latin-1 file name encoding.
      </action>
      <action issue="VFS-368" dev="ggregory" type="update" due-to="Brendan Long">
        [SFTP] Documentation implies that "userDirIsRoot" defaults to true.
      </action>
      <action issue="VFS-265" dev="ggregory" type="update" due-to="Scott Bjerstedt">
        [FTP] Set user dir as root dir by default.
      </action>
      <action issue="VFS-489" dev="ggregory" type="fix" due-to="Bernd Eckenfels">
        [tests] ProviderWriteTests#testListener does not fail cleanly.
      </action>
      <action issue="VFS-486" dev="ggregory" type="fix" due-to="Sam Haldane">
        DefaultFileMonitor sleeps for twice the specified delay when checkPerRun > 0.
      </action>
      <action issue="VFS-484" dev="ggregory" type="update">
        [SFTP] Update Jsch to 0.1.50 from 0.1.49.
      </action>
      <action issue="VFS-482" dev="ggregory" type="fix">
        Wrong assertion messages in RAM provider test case.
      </action>
      <action issue="VFS-507" dev="ggregory" type="update">
        Update to Apache Commons Collection 4.1 from 3.2.1 and use generics.
      </action>
      <action issue="VFS-476" dev="ggregory" type="update">
        Update Apache Commons Logging to 1.1.3 from 1.1.2.
      </action>
      <action issue="VFS-475" dev="ggregory" type="update">
        Update Apache Commons Net to 3.3 from 3.2.
      </action>
      <action issue="VFS-506" dev="ggregory" type="update">
        [Tar][Bzip2] Update Apache Commons Compress to 1.6 from 1.5.
      </action>
      <action issue="VFS-471" dev="ggregory" type="update">
        Update to Apache Commons Compress 1.5.
      </action>
      <action issue="VFS-469" dev="joehni" type="remove">
        Remove unused dependency to javax.jcr:jcr.
      </action>
      <action issue="VFS-283" dev="joehni" type="update">
        [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.
      </action>
      <action issue="VFS-460" dev="joehni" type="fix">
        Dependency to commons-compress set as optional.
      </action>
      <action issue="VFS-468" dev="joehni" type="add">
        [FTPS] Add option for KeyManager (and TrustManager) to support FTPS servers that ask for the client certificate for authentication.
      </action>
      <action issue="VFS-464" dev="joehni" type="fix">
        StaticUserAuthenticator should return only requested authentication data.
      </action>
      <action issue="VFS-463" dev="joehni" type="update">
        FileSytemConfigBuilder supports system properties for the value of enum-based configuration entries.
      </action>
      <action issue="VFS-462" dev="joehni" type="update">
        [FTPS] Deprecate FtpsFileSystemConfigBuilder.setFtpsType and FtpsFileSystemConfigBuilder.getFtpsType
        in favor of FtpsFileSystemConfigBuilder.setFtpsMode and FtpsFileSystemConfigBuilder.getFtpsMode which
        use new enum FtpsMode instead.
      </action>
      <action issue="VFS-461" dev="joehni" type="fix">
        [FTP/FTPS] ConfigBuilder does not consider system properties for the value of SoTimeout and Encoding.
      </action>
      <action issue="VFS-412" dev="joehni" type="add" due-to="Jose Juan Montiel">
        [FTPS] Add support for command to set the DataChannelProtectionLevel.
      </action>
      <action issue="VFS-459" dev="joehni" type="update">
        [FTP/FTPS] Sent commands and the received answer is logged at debug level.
      </action>
      <action issue="VFS-458" dev="joehni" type="fix">
        [FTPS] Provider missed functionality and bug fixes already available for the FTP provider.
      </action>
      <action issue="VFS-452" dev="ggregory" type="fix" due-to="Jean-Marc Borer">
        [HTTP] HttpFileObject read/write attributes should reflect underlying FileSystem capabilities.
      </action>
      <action issue="VFS-285" dev="tn" type="fix" due-to="Kirill Safonov">
        AbstractFileObject.getChildren() may corrupt its internal state if a filename
        can not be resolved.
      </action>
      <action issue="VFS-450" dev="ggregory" type="fix" due-to="Dave Marion">
        [HDFS] HDFSFileSystem.resolveFile() does not honor CacheStrategy.ON_RESOLVE.
      </action>
      <action issue="VFS-442" dev="ggregory" type="add" due-to="Dave Marion">
        [HDFS] Add an HDFS FileSystem Provider.
      </action>
      <action issue="VFS-448" dev="ggregory" type="fix">
        commons-vfs 2.0 JAR has flawed OSGi MANIFEST.MF.
      </action>
      <action issue="VFS-447" dev="ggregory" type="add">
        [FTP/FTPS] Update Apache Commons Net to 3.2 from 3.1.
      </action>
      <action issue="VFS-445" dev="ggregory" type="add">
        Add FileSystemManager.resolveFile(URI) and resolveFile(URL).
      </action>
      <action issue="VFS-440" dev="ggregory" type="add" due-to="bpiwowar">
        [SFTP] Stream (e.g. netcat) proxy for Sftp file system (aka ProxyCommand).
      </action>
      <action issue="VFS-439" dev="ggregory" type="fix" due-to="pensecit">
        StaticUserAuthenticator usage example wrong.
      </action>
      <action issue="VFS-437" dev="ggregory" type="fix" due-to="denniszhu, danttran, jpowang">
        [FTP] StackOverFlowError getting the type of a directory with a symbolic link to a parent directory with the same name.
      </action>
      <action issue="VFS-435" dev="ggregory" type="fix" due-to="george scott">
        FileSystemConfigBuilder does not use prefix for some system property lookups.
      </action>
      <action issue="VFS-434" dev="ggregory" type="fix">
        FileSystemException should reuse IOException's chained exception.
      </action>
      <action issue="VFS-433" dev="ggregory" type="fix">
        [WebDAV] Message "vfs.provider.webdav/propfind.error" is not defined.
      </action>
      <action issue="VFS-430" dev="ggregory" type="fix" due-to="antonin.stefanutti">
        The SoftRefFilesCache class logs clear text password.
      </action>
      <action issue="VFS-432" dev="ggregory" type="add">
        [HTTP][WebDAV] Allow HTTP follow redirect.
      </action>
      <action issue="VFS-431" dev="ggregory" type="add">
        FileSystemOption does not implement toString().
      </action>
      <action issue="VFS-429" dev="ggregory" type="fix">
        Remove extra FileSystem ivar in AbstractFileObject subclasses with generics.
      </action>
      <action issue="VFS-427" dev="ggregory" type="fix" due-to="awelynant">
        [HTTP] NPE on HttpFileObject.getContent().getContentInfo().
      </action>
      <action issue="VFS-405" dev="ggregory" type="add" due-to="dwaszak">
        Get/set the file permissions.
      </action>
      <action issue="VFS-457" dev="joehni" type="update">
        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
      </action>
      <action issue="VFS-456" dev="joehni" type="update">
        Use org.bouncycastel:bcprov-jdk16 instead of org.bouncycastle:bcprof-jdk15on since Java 1.6 is required.
      </action>
      <action issue="VFS-415" dev="ggregory" type="update">
        Update VFS requirement to Java 1.6.
      </action>
      <action issue="VFS-426" dev="ggregory" type="add" due-to="daniel.bergholm">
        HTTP URL query string not part of cache key.
      </action>
      <action issue="VFS-425" dev="ggregory" type="add">
        Add API FileObject.isExecutable().
      </action>
      <action issue="VFS-421" dev="ggregory" type="add" due-to="bpiwowar">
        [SFTP] Configure a custom Identity Repository.
      </action>
      <action issue="VFS-418" dev="ggregory" type="update">
        Update to Apache Commons Compress 1.4.1.
      </action>
      <action issue="VFS-417" dev="ggregory" type="add">
        [RAM][Local] Add and implement new API: RandomAccessContent.setLength(long).
      </action>
      <action issue="VFS-406" dev="ggregory" type="fix" due-to="mp1">
        [RAM] resize throws ArrayOOBE when shrinking in size.
      </action>
      <action issue="VFS-321" dev="ggregory" type="update" due-to="sebb">
        AbstractFileObject sometimes uses getFileSystem() and sometimes references "fs" field directly.
      </action>
      <action issue="VFS-327" dev="ggregory" type="update" due-to="sebb">
        UriParser.canonicalizePath possible NPE for filenameParser.
      </action>
      <action issue="VFS-353" dev="ggregory" type="fix" due-to="bergander">
        [FTP] Client should call logout before disconnecting.
      </action>
      <action issue="VFS-408" dev="ggregory" type="fix" due-to="anilm2@yahoo.com">
        CompressedFileFileObject Exception thrown when container file has no extension.
      </action>
      <action issue="VFS-400" dev="ggregory" type="add">
        Add a FileSelector based on regular expressions.
      </action>
      <action issue="VFS-258" dev="ggregory" type="fix" due-to="mzawirski">
        [SFTP][RAM] Unsafe casting to AbstractFileObject subclasses in doRename().
      </action>
      <action issue="VFS-254" dev="ggregory" type="add" due-to="mzawirski">
        Let FileObject and FileContent extend java.io.Closeable.
      </action>
      <action issue="VFS-413" dev="ggregory" type="fix" due-to="polivenok">
        [FTP] No support for FTP servers with non Latin-1 control encoding.
      </action>
      <action issue="VFS-252" dev="ggregory" type="add">
        [SMB] SmbFileObject does not support setLastModifiedTime while jcifs supports it.
      </action>
      <action issue="VFS-200" dev="ggregory" type="fix">
        [SFTP] Failure when files are very large.
      </action>
      <action issue="VFS-416" dev="joehni" type="update">
        [SFTP] Update Jsch to version 0.1.49 from 0.1.47.
      </action>
      <action issue="VFS-296" dev="ggregory" type="fix" due-to="andreasp">
        [FTP] FTP socket timeout setting doesn't work if connect hangs.
      </action>
      <action issue="VFS-313" dev="ggregory" type="add" due-to="bdavis@saintandreas.org">
        [FTP] Configuration does not include option for setting socket timeout.
      </action>
      <action issue="VFS-414" dev="ggregory" type="add">
        [FTP] Add config API to set the file type.
      </action>
      <action issue="VFS-182" dev="ggregory" type="add">
        [FTP] Usage of FTP with heterogeneous FTP server (possibility of using Ascii file type).
      </action>
      <action issue="VFS-395" dev="ggregory" type="update">
        [POM] Remove maven-scm-* dependencies.
      </action>
      <action issue="VFS-411" dev="ggregory" type="update">
        [SFTP] Update Jsch to version 0.1.47 from 0.1.46.
      </action>
      <action issue="VFS-410" dev="ggregory" type="fix" due-to="mstockhammer">
        [SFTP] SftpFileObject getInputStream(long) reads the whole file into memory.
      </action>
      <action issue="VFS-409" dev="ggregory" type="update">
        Update Apache Commons Compress to 1.4 from 1.3.
      </action>
      <action issue="VFS-407" dev="ggregory" type="fix" due-to="mp1">
        [RAM] Reading a RAM FileSystem file fails because it never returns EOF -1.
      </action>
      <action issue="VFS-404" dev="ggregory" type="update">
        [FTP][FTPS] Update Apache Commons Net to 3.1 from 3.0.1.
      </action>
      <action issue="VFS-402" dev="ggregory" type="update">
        [WebDAV] Update Apache Jackrabbit 1.5.2 to 1.6.5.
      </action>
      <action issue="VFS-401" dev="ggregory" type="update">
        Update JSch to 0.1.46 from 0.1.45 for the SFTP provider.
      </action>
      <action issue="VFS-392" dev="ggregory" type="update">
        Build tests WebDAV file system with an embedded WebDAV server (Apache Jackrabbit).
      </action>
      <action issue="VFS-391" dev="ggregory" type="update">
        Build tests URL HTTP file system with an embedded HTTP server (Apache HttpComponent Core).
      </action>
      <action issue="VFS-390" dev="ggregory" type="update">
        Use variable argument list in org.apache.commons.vfs2.util.Messages instead of Object[].
      </action>
      <action issue="VFS-389" dev="ggregory" type="update">
        Use variable argument lists in FileSystemException instead of Object[]s.
      </action>
      <action issue="VFS-388" dev="ggregory" type="update">
        Build tests SFTP file system with an embedded SFTP server (Apache MINA).
      </action>
      <action issue="VFS-387" dev="ggregory" type="update">
        Build tests FTP file system with an embedded FTP server (Apache MINA).
      </action>
      <action issue="VFS-386" dev="ggregory" type="update">
        Build tests HTTP file system with an embedded HTTP server (Apache HttpComponent Core).
      </action>
      <action issue="VFS-385" dev="ggregory" type="update">
        Add HTTP status code to HTTP file provider exception messages when available.
      </action>
      <action issue="VFS-384" dev="ggregory" type="update">
        Update Apache Commons Net to 3.0.1 from 2.2 for FTP and SFTP providers.
      </action>
      <action issue="VFS-383" dev="ggregory" type="update">
        Update JSch to 0.1.45 from 0.1.42 for the SFTP provider.
      </action>
      <action issue="VFS-382" dev="ggregory" type="fix">
        SFTP getChildren() does not fail when called on a file.
      </action>
      <action issue="VFS-381" dev="ggregory" type="add">
        Iterate over a FileObject using the Java "foreach" statement, to provide all descendents of a FileObject.
      </action>
      <action issue="VFS-380" dev="ggregory" type="fix">
        FTP connect.error message used instead of SFTP connect.error message.
      </action>
      <action issue="VFS-379" dev="ggregory" type="update">
        Replace custom BZIP2 code with Apache Commons Compress 1.3.
      </action>
      <action issue="VFS-378" dev="ggregory" type="fix">
        Tar error message are missing from resource file.
      </action>
      <action issue="VFS-377" dev="ggregory" type="update">
        Replace custom TAR code with Apache Commons Compress 1.3.
      </action>
      <action issue="VFS-375" dev="ggregory" type="update">
        Upgrade to Apache Commons Compress 1.3 from 1.2.
      </action>
      <action issue="VFS-374" dev="ggregory" type="fix">
        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.
      </action>
      <action issue="VFS-373" dev="ggregory" type="add">
        Add FileContent write APIs.
      </action>
      <action issue="VFS-372" dev="ggregory" type="add">
        Add constructors FileDepthSelector() and FileDepthSelector(int).
      </action>
      <action issue="VFS-371" dev="ggregory" type="add">
        Add FileObject API deleteAll().
      </action>
      <action issue="VFS-370" dev="ggregory" type="add">
        Add a FileExtensionSelector class.
      </action>
      <action issue="VFS-367" dev="ggregory" type="add">
        Add APIs FileObject isFile(), FileObject isFolder(), and FileName isFile().
      </action>
      <action issue="VFS-366" dev="ggregory" type="update">
        Can't sort a List of FileObject's, FileObject to implement Comparable&lt;FileObject&gt;.
      </action>
      <action issue="VFS-341" dev="rgoers" type="update" due-to="Rajika Kumarasiri">
        Enable logging of JSch using the Commons Logging Log object in SftpClientFactory.
      </action>
      <action issue="VFS-355" dev="rgoers" type="fix" due-to="Miroslav Pokorny">
        The read method of RamFileRandomAccessContent's input stream does not return -1 at eof.
      </action>
      <action issue="VFS-356" dev="rgoers" type="fix">
        Throw an IOException if an attempt is made to seek to a position before the start of the file.
      </action>
      <action issue="VFS-359" dev="rgoers" type="fix" due-to="Miroslav Pokorny">
        Don't delete a RamFileObject if it is open.
      </action>
      <action issue="VFS-352" dev="rgoers" type="fix">
        ZipFileSystem now uses an internal Map as a cache for all the files in the zip archive.
      </action>
      <action issue="VFS-351" dev="rgoers" type="fix" due-to="John Backstrand">
        Chain the SftpException in the FileSystemException.
      </action>
      <action issue="VFS-361" dev="rgoers" type="update">
        Upgrade commons collections version to 3.2.1.
      </action>
      <action issue="VFS-325" dev="rgoers" type="fix" due-to="Larry Reeve">
        Allow # character in file names.
      </action>
      <action issue="VFS-335" dev="rgoers" type="fix">
        Use atomic variables in MonitorInputStream.
      </action>
      <action issue="VFS-364" dev="rgoers" type="fix">
        Check the href in the response for just a path in addition to a full uri.
      </action>
    </release>
    <release version="2.0" date="2011-08-24" description="Backwards incompatible update of Commons VFS to Java 5">
      <action issue="VFS-348" dev="rgoers" type="fix" due-to="Stefan Bodewig">
        Update the version of commons-net.
      </action>
      <action issue="VFS-230" dev="rgoers" type="fix">
        Documented FileSystem capabilities on the web site.
      </action>
      <action issue="VFS-337" dev="rgoers" type="fix">
        AbstractFileObject and classes that extend from it use AbstractFileName in the constructor and in
        the createFile method.
      </action>
       <action issue="VFS-245" dev="rgoers" type="fix">
        AbstractFileName is not immutable as it should be. equals(), hashcode() and compareTo() have been modified
        to return the same results regardless of whether the FileType is changed.
      </action>
      <action issue="VFS-334" dev="sebb" type="fix">
        DefaultFileSystemConfigBuilder.getConfigClass() returns DefaultFileSystemConfigBuilder.class which is not a FileSystem
      </action>
      <action dev="rgoers" type="fix" issue="VFS-305" due-to="Tom">
        Add encoding option to FTP provider.
      </action>
       <action dev="rgoers" type="fix" issue="VFS-315" due-to="David Hausladen">
        Fix potential NullPointerException if the DavProperty is null or contains null values.
      </action>
       <action dev="rgoers" type="fix" issue="VFS-316" due-to="David Hausladen">
        Add option for preemptive authentication for HTTP based protocols.
      </action>
       <action dev="rgoers" type="fix" issue="VFS-322" due-to="Curtis Boyden">
        Allow tar files that contain files over 2GB in size.
      </action>
       <action dev="rgoers" type="fix" issue="VFS-324" due-to="sebb">
        Clear the cache in RamFileSystem and the children in RamFileData.
      </action>
      <action dev="sebb" type="fix" issue="VFS-319">
        Typo in FtpsFileSystemConfigBuilder.setFtpsType
      </action>
      <action dev="rgoers" type="fix" issue="VFS-227" due-to="Sergey Vladimirov">
        InputStream and RandomAccessContent memory leak in FileContentThreadData
      </action>
      <action dev="rgoers" type="update" issue="VFS-263" due-to="Ingo Maas">
        WebdavFileObject does not implement doSetAttribute()
      </action>
      <action dev="rgoers" type="fix" issue="VFS-259" due-to="Marek Zawirski">
        Http and Webdav FIleContentInfoFactory: undress to AbstractFileObject before casting
      </action>
      <action dev="rgoers" type="fix" issue="VFS-261" due-to="Simon Olofsson">
        WebDAV upload corrupts binary files
      </action>
      <action dev="rgoers" type="fix" issue="VFS-276" due-to="Vince Bonfanti">
        add ProviderTestConfig.getDefaultFileSystemManager() method
      </action>
      <action dev="rgoers" type="fix" issue="VFS-282" due-to="Alexey">
        SftpFileProvider and SftpFileSystemConfigBuilder can't change ssh authentication methods
      </action>
      <action dev="rgoers" type="fix" issue="VFS-269" due-to="Marek Zawirski">
        HttpFileObject: unsupported content over 2GB length
      </action>
      <action dev="rgoers" type="fix" issue="VFS-287" due-to="Mircea-Eugen Ionica">
        LocalFileName objects are not released from AbstractFileSystem.listenerMap when all listeners are removed.
      </action>
      <action dev="rgoers" type="fix" issue="VFS-216" due-to="Reetu Mutti">
        The FTP Configuration includes an option to set a timeout for the data connection, but not for the socket
        timeout. This is a problem, as idle sockets can cause your download to hang forever and never timeout.
      </action>
      <action dev="rgoers" type="fix" issue="VFS-289" due-to="Kirill Safonov">
        FTP connection is not released If exception is thrown out of FtpFileObject.doGetOutputStream().
      </action>
      <action dev="rgoers" type="fix" issue="VFS-286" due-to="Kirill Safonov">
        SftpFileObject.doListChildrenResolved() changes the working dir before doing ChannelSftp.ls() call.
        If ls() throws an exception, the current directory is not reset. All the subsequent operations that rely on the
        current dir will fail trying to change into nonexistent directory.
      </action>
      <action dev="jcarman" type="add" issue="VFS-264" due-to="Scott Bjerstedt">
        Add FTPS provider.
      </action>
      <action dev="rgoers" type="add" issue="VFS-244">
        Rename HttpRandomAccesContent to HttpRandomAccessContent.
      </action>
    </release>
  </body>
</document>
