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. 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: http://commons.apache.org/proper/commons-vfs/