TrueZIP 7.2 released

I am pleased to announce the availability of TrueZIP 7.2. TrueZIP 7.2 provides some exciting new features and improvements and some bug fixes. All users are recommended to upgrade from previous versions.

Most notably, TrueZIP 7.2 features the new module TrueZIP Path, which is a FileSystemProvider implementation for the NIO.2 API (JSR 203) in JSE 7. Using the module TrueZIP Path, TrueZIP applications can now easily access any (virtual) file system or archive file which is supported by a TrueZIP Driver module JAR on the run time class path. The module TrueZIP Kernel has been extended to support new features of the NIO.2 API, e.g. SeekableByteChannel and the different access time types in BasicFileAttributes.

The TFileSystemProvider instance which gets installed by the FileSystemProvider service location feature of the NIO.2 API in JSE 7 is associated with the URI scheme tpath for accessing the platform file system. To unleash the full power of the TrueZIP Path module, e.g. for random read access to a TAR.GZ file via HTTP, please instantiate the new TPath class directly. You can find the Javadoc for its API at https://christian-schlichtherle.bitbucket.io/truezip/apidocs/de/schlichtherle/truezip/nio/file/package-summary.html.

Also new: The module TrueZIP Driver FILE contains a new alternative file system driver for accessing the platform file system via the default FileSystemProvider instance of the NIO.2 API. The TrueZIP Kernel figures the JSE compliance of the JVM it’s running in (JSE 6 or 7) and automatically picks either the “old” or the “new” platform file system driver implementation.

To kick-start TrueZIP Path applications, a new Maven archetype has been added:

<dependency>
    <groupId>de.schlichtherle.truezip</groupId>
    <artifactId>truezip-archetype-path</artifactId>
    <version>7.2</version>
</dependency>

Please try this archetype to get you started quickly. It contains sample usage patterns and demos. The archetype for TrueZIP File* applications has been updated, too:

<dependency>
    <groupId>de.schlichtherle.truezip</groupId>
    <artifactId>truezip-archetype-file</artifactId>
    <version>7.2</version>
</dependency>

For instructions how to use these archetypes, please refer to the kick-start articles on the TrueZIP User website at https://christian-schlichtherle.bitbucket.io/truezip/kick-start/index.html.

Release Notes

Following are the Release Notes for TrueZIP 7.2 as compiled by its issue tracking tool at http://java.net/jira/browse/TRUEZIP.

Bug

  • [TRUEZIP-112] - Colons in FsMountPoint and FsPath are not always quotes correctly.
  • [TRUEZIP-123] - The exception thrown by the filtering TArchiveDetector constructors does not report the archive file suffixes in its message
  • [TRUEZIP-128] - ByteArrayReadOnlyFile should be fixed
  • [TRUEZIP-130] - The archive entry cache still has some minor issues
  • [TRUEZIP-131] - When writing to the platform file system, missing parent directories get automatically created
  • [TRUEZIP-134] - TFile.cp does not work with unc names

Improvement

  • [TRUEZIP-104] - HttpDriver constructor should have public accessibility
  • [TRUEZIP-111] - Paths.prefixLength(String, char) should recognize drive letters only if the separatorChar is ‘’
  • [TRUEZIP-113] - Remove FsStatisticsManager
  • [TRUEZIP-118] - FsUriModifier.PostFix needs some changes to enhance FsUriModifier.CANONICALIZE
  • [TRUEZIP-125] - Revision de.schlichtherle.truezip.io.Paths
  • [TRUEZIP-127] - Add new convenience methods to TFile for copying directory trees recursively
  • [TRUEZIP-129] - FsCovariantEntry.getSize(Size) should return 0 for directory entries
  • [TRUEZIP-133] - Improve KeyManager to make it more reusable

New Feature

  • [TRUEZIP-48] - Implement a TrueZIP FileSystemProvider for NIO.2 in JSE7
  • [TRUEZIP-89] - Provide alternative implementation of TrueZIP Driver File using NIO.2
  • [TRUEZIP-109] - Provide InputSocket.newSeekableByteChannel() and OutputSocket.newSeekableByteChannel()
  • [TRUEZIP-110] - Provide a Maven Archetype for NIO.2 applications.
  • [TRUEZIP-114] - Provide FsController.isExecutable(FsEntryName)
  • [TRUEZIP-115] - Provide FsController.setTime(FsEntryName, Map<Access, Long>)
  • [TRUEZIP-117] - UriBuilder and UriEncoder should provide a “raw” mode to preserve quoted characters in URIs.
  • [TRUEZIP-124] - Refactor the global configuration to a manageable class
  • [TRUEZIP-126] - Introduce de.schlichtherle.truezip.util.QuotedInputUriSyntaxException

Task

  • [TRUEZIP-51] - Ongoing task: Improve documentation
  • [TRUEZIP-116] - Provide comprehensive unit tests for the TrueZIP Path module.