Release Notes -- Apache Jackrabbit FileVault -- Version 3.4.8

Introduction
------------
The FileVault introduces a JCR repository to filesystem mapping. The mapping
is exposed by an API and used by the "FileVault Content Packages" which allow to
create portable packages of repository content.

The Vault Command Line Interface aka "vlt" provides a subversion like
utility to work and develop with repository content.

Changes in Jackrabbit FileVault 3.4.8
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.4.8
This version requires Java 8
The bundles are backwards compatible with Oak 1.6 and Jackrabbit 2.14

Bug
    * [JCRVLT-459] - VLT-RCP: Edit operation does not work
    * [JCRVLT-460] - VLT-RCP: IllegalStateException thrown by Configuration.updateIfDifferent
    * [JCRVLT-461] - jackrabbit-nodetypes: Mandatory property ''{http://www.jcp.org/jcr/1.0}data' missing in node with types [oak:Resource]
    * [JCRVLT-462] - Nodetype validator complains about root node
    * [JCRVLT-463] - jackrabbit-nodetypes: Mandatory child node missing: jcr:content [nt:base]
    * [JCRVLT-465] - VLT-RCP and Core require DS 1.4 due to constructor injection
    * [JCRVLT-480] - NPE when validating not allowed properties
    * [JCRVLT-482] - ArrayIndexOutOfBoundsException when validating multivalue property with empty value array
    * [JCRVLT-485] - Validation fails for nodetypes extending mix:versionable
    * [JCRVLT-488] - PlatformNameFormat incorrectly sets repository names for nodes with double colons
    * [JCRVLT-489] - jackrabbit-nodetypes validator errors for cq:WorkflowModel
New Feature
    * [JCRVLT-486] - nodetype validation: Allow to define list of valid namespaces
Improvement
    * [JCRVLT-433] - Validator for acHandling
    * [JCRVLT-470] - VLT-RCP: Expose version via servlet
    * [JCRVLT-475] - Enable Sonarcloud.io analysis with Travis
    * [JCRVLT-479] - jackrabbit-nodetypes validator: validation fails "overeager" for autocreated properties
    * [JCRVLT-484] - Filter settings should ignore whitespaces when splitting comma-separated strings
    * [JCRVLT-487] - VLT-RCP: Persist also options set on RepositoryCopier

Changes in Jackrabbit FileVault 3.4.6
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.4.6
This version requires Java 8
The bundles are backwards compatible with Oak 1.6 and Jackrabbit 2.14

Bug
    * [JCRVLT-421] - filevault-package-maven-plugin 1.1.2: Empty nodes (used for ordering only) outside filter lead to error
    * [JCRVLT-422] - filevault-package-maven-plugin 1.1.2: jackrabbit-emptyelements filter fails for nodes starting with numbers
    * [JCRVLT-430] - Potential NPE in PackageTypeValidator.validate(...)
    * [JCRVLT-436] - VLT-RCP bundle no longer working with older Jackrabbit/Oak versions
    * [JCRVLT-441] - CompressionUtilTest.testCompressibilityEstimation() and testCompressibility fail sometimes
    * [JCRVLT-444] - DiffTest failure on Windows
    * [JCRVLT-445] - FSRegisteredPackageTest leaks temp files
    * [JCRVLT-446] - AdvancedFilterValidatorTest.testFilterWithInvalidElements fails for non-english locale
Improvement
    * [JCRVLT-398] - Migrate Filevault to Git
    * [JCRVLT-419] - Feature/enable insecure https host
    * [JCRVLT-424] - Make compilable and Runnable with Java 14
    * [JCRVLT-426] - Add nodetype validator
    * [JCRVLT-427] - Allow installation of packages with hook for users without admin privileges
    * [JCRVLT-429] - Switch to bnd-maven-plugin
    * [JCRVLT-437] - VLT-RCP: allow to pass a filter.xml for more finegrained control
    * [JCRVLT-438] - VLT-RCP: Provide API
    * [JCRVLT-440] - Do not treat Throwables differently than PackageExceptions in Hooks
    * [JCRVLT-449] - VLT-RCP: Optionally persist tasks
    * [JCRVLT-451] - Upgrade to Jackrabbit 2.20.1 and Oak 1.32.0
    * [JCRVLT-453] - RepositoryCopier should not catch exceptions

Changes in Jackrabbit FileVault 3.4.4
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.4.4
This version requires Java 8, Oak 1.20 and Jackrabbit 2.20.0

Bug
    * [JCRVLT-409] - Validation: Emit node names in expanded form
    * [JCRVLT-410] - PackageTypeValidator does not detect OSGi configurations of type sling:OsgiConfig
    * [JCRVLT-414] - Embedding of Woodstox leads to non-necessary Import-Package statements
    * [JCRVLT-415] - jackrabbit-emptyelements validator reports error for nested folders
    * [JCRVLT-417] - Intermediate Node Types should be default node type of parent node type definition instead of "nt:folder"

Improvement
    * [JCRVLT-400] - '/etc/packages' should be a valid root
    * [JCRVLT-401] - Clarify allowed contents of container package type
    * [JCRVLT-402] - Clarify error message for validator "jackrabbit-emptyelements"
    * [JCRVLT-406] - Improve logging of runtime exception in validators
    * [JCRVLT-411] - PackageTypeValidator: Optionally allow complex filters
    * [JCRVLT-413] - Clarify documentation about intermediate/ancestor nodes


Changes in Jackrabbit FileVault 3.4.2
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.4.2
This version requires Java 8, Oak 1.20 and Jackrabbit 2.20.0

Bug fixes
    * [JCRVLT-343] - Check for index definitions also considers ACL entries
    * [JCRVLT-379] - CompressionUtilTest.testCompressibilityEstimation() fails sometimes
    * [JCRVLT-386] - Eclipse/m2e: Could not get metadata for dependencies which are resolved via m2e workspace resolution or for multimodule builds with phases < package
    * [JCRVLT-390] - filter based on content properties is not working

New Features
    * [JCRVLT-232] - Enforce constraints for package types
    * [JCRVLT-345] - Support pluggable node/file/filter validators

Improvements
    * [JCRVLT-187] - Expose PackageProperties from MetaInf and VaultPackage from Archive
    * [JCRVLT-361] - Validate that all includes/excludes are below the filter root
    * [JCRVLT-365] - Migrate from JSR 305 to Jetbrains annotations
    * [JCRVLT-368] - DefaultWorkspaceFilter.readFilter(Element) might throw j.u.r.PatternSyntaxException
    * [JCRVLT-369] - Include package name in error message when dependencies are not satisfied
    * [JCRVLT-371] - Include Maven groupId and artifactId of each dependency in the MANIFEST.MF and the properties.xml
    * [JCRVLT-376] - test cases leak 'vaulttest*zip' temp files
    * [JCRVLT-382] - DefaultWorkspaceFilter: Reset source for every modifying operation
    * [JCRVLT-384] - Document config.xml, settings.xml, nodetypes.cnd and privileges.xml below META-INF/vault
    * [JCRVLT-385] - AdvancedFilterValidator should also consider filter roots of nested subpackages
    * [JCRVLT-399] - Update to Jackrabbit 2.20.0 / Oak 1.20.0

Tasks
    * [JCRVLT-161] - Document FileVault Workspace Property filter
    * [JCRVLT-347] - Enable ignored principal-based ITs once Oak 1.18.0 is released
    * [JCRVLT-391] - Remove copied classes of Xerces
    * [JCRVLT-392] - Support Matrix builds on Windows/Linux with Travis
    * [JCRVLT-393] - Java 13 Build Support


Changes in Jackrabbit FileVault 3.4.0
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.4.0
This version requires Java 8, Oak 1.16 and Jackrabbit 2.18.3

Bug fixes:
    * [JCRVLT-323] - Unable to perform sync due to wrong default workspace handling
    * [JCRVLT-338] - argLine getting overridden by parent pom and vault-core pom
    * [JCRVLT-341] - https doesn't work anymore
    * [JCRVLT-352] - File leak in Hook.init
    * [JCRVLT-359] - Provide separate option to control handling of rep:cugPolicy nodes
    * [JCRVLT-362] - ZipStreamArchive does not expose correct input source to the META-INF resources
    * [JCRVLT-367] - CLONE - vlt shell script prints out error when using openjdk

New Features:
    * [JCRVLT-340] - Adjust JackrabbitACLImporter to handle extensions provided by OAK-8190

Improvements:
    * [JCRVLT-287] - Throw exception in case of ACL Importer failures (instead of just logging)
    * [JCRVLT-336] - FSPackageRegistry should allow forced application scoping of PackageInstallations
    * [JCRVLT-339] - Add FSPackageRegistry support for hollow packages
    * [JCRVLT-346] - allow for custom security setup
    * [JCRVLT-348] - Implement AutoCloseable for classes which have a close method
    * [JCRVLT-349] - Clarify closing behaviour of input streams in methods getting it as argument
    * [JCRVLT-353] - Add constant for allowIndexDefinitions to PackageProperties
    * [JCRVLT-356] - Add equals and toString methods to DocViewNode and DocViewProperty
    * [JCRVLT-360] - Add equals and toString methods to DefaultWorkspaceFilter and FilterSet
    * [JCRVLT-364] - Upgrade jackrabbit and oak and use Java 8
    * [JCRVLT-366] - Allow loading DefaultWorkspaceFilter and AbstractConfig from DOM Element

Tasks:
    * [JCRVLT-344] - update version of jackrabbit and oak dependencies


Changes in Jackrabbit FileVault 3.2.8
-------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.2.8

Bug fixes:
    * [JCRVLT-329] - FSPackageRegistry doesn't handle absolutely configured homepaths correct
    * [JCRVLT-334] - Regression of JCRVLT-271: Property names mixed case problem

Improvements:
    * [JCRVLT-332] - JcrPackageRegistry / JcrPackageImpl cannot deal with dependencies satisfied by FsPackageRegistry


Changes in Jackrabbit FileVault 3.2.6
-------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.2.6

Improvement
   * [JCRVLT-141] - Log all activity to debug so that an activity log can be created
   * [JCRVLT-319] - Allow building of stacked ExecutionPlans


Changes in Jackrabbit FileVault 3.2.4
-------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.2.4

Bug Fixes:
    * [JCRVLT-317] - Aggregate not recognized as XML if root element name followed by a newline

Improvements:
    * [JCRVLT-313] - Avoid opening VaultPackage to get RegisteredPackage in FSRegistry
    * [JCRVLT-314] - Optimize buildup & update flow of FSInstallState
    * [JCRVLT-318] - Allow FSPackageRegistry to be configured to absolute path
    * [JCRVLT-310] - FSRegistry: store package properties in metainfo


Changes in Jackrabbit FileVault 3.2.0
-------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.2.0

Important Changes:
For the fix of JCRVLT-282 the embedded dependencies of jackrabbit-spi and jackrabbit-spi-commons were removed from the
vault-core bundle. This was required to keep the bundle Java 1.7 compatible and rather consume the libraries from the
running system. Since some of the exported APIs already contain references to the Jackrabbit SPI this was necessary.

Bug Fixes:
    * [JCRVLT-292] - Order of ACLs are altered on installation of content packages
    * [JCRVLT-293] - Failing tests when building vault-core with -Doak=true
    * [JCRVLT-294] - DocViewFormatTest fails on Windows
    * [JCRVLT-305] - DefaultWorkspaceFilter.add(nodeFilters) does not include properties

New Features:
    * [JCRVLT-180] - implement filesystem based persistence layer
    * [JCRVLT-271] - Support a CLI command to format vault xml files
    * [JCRVLT-289] - InstallHooks: Propagate exceptions also for phase INSTALL
    * [JCRVLT-300] - vlt-rcp: Support proxy

Improvements:
    * [JCRVLT-282] - Filevault bundle should be Java 1.7 Compatible
    * [JCRVLT-284] - Add support through environment var to directly control the line separator
    * [JCRVLT-286] - Markup in http://jackrabbit.apache.org/filevault/rcp.html broken
    * [JCRVLT-301] - Do not always skip installation of sub packages for older versions and log a WARN in case a subpackage is skipped
    * [JCRVLT-303] - Register namespace under a unique prefix in case of clash
    * [JCRVLT-304] - Add tests that cover combinations of node and property filters
    * [JCRVLT-306] - Document properties.xml format
    * [JCRVLT-277] - vault-davex: cleanup dependencies - suppression of commons-httpclient
    * [JCRVLT-309] - Create helper filter that allows to limit the installation paths


Changes in Jackrabbit FileVault 3.1.44
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.1.44

Bug Fixes:
* [JCRVLT-184] - vlt shell script prints out error when using openjdk
* [JCRVLT-208] - Add support for package storage outside /etc/packages
* [JCRVLT-235] - Refuse to create snapshot for empty or root filters.
* [JCRVLT-247] - Java 9 Support
* [JCRVLT-250] - Test class "SimpleFileAggregateInPackage" not executed by default in maven-surefire-plugin
* [JCRVLT-257] - ZipException: invalid code lengths set
* [JCRVLT-258] - Default compression level incorrectly set to NO_COMPRESSION (0)
* [JCRVLT-265] - JcrPackageDefinition.getDependencies() might return an array with a null element
* [JCRVLT-266] - DocViewSaxFormatter does not always emit namespace declaration for "jcr"

Improvements:
* [JCRVLT-270] - Use Jackrabbit 2.16.1
* [JCRVLT-132] - Document enhanced document view format

Won't Fix:
* [JCRVLT-267] - Changing log level to info from error in JcrPackageregistry upload method in case a .jar resource doesn't contains jcr_root
* [JCRVLT-251] - Child nodes mentioned in parent node's docview xml are not cleared correctly during installation


Changes in Jackrabbit FileVault 3.1.42
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.1.42

Bug Fixes:
* [JCRVLT-185] - JcrPackageManagerImpl#extract() javadoc mentions not existent "register" property
* [JCRVLT-186] - rcp fails to copy binaries correctly
* [JCRVLT-197] - AggregateImpl.includesProperty fails with multiple filter roots
* [JCRVLT-198] - Creating a package with specific path fails to import
* [JCRVLT-225] - vlt doesn't work anymore with latest jackrabbit
* [JCRVLT-226] - vlt doesn't work with java 9
* [JCRVLT-227] - Import fails if user does not have access to the root path

Improvements:
* [JCRVLT-170] - Introduce the concept of package types
* [JCRVLT-171] - Introduce the concept of Package Registry
* [JCRVLT-172] - Introduce Package Persistence Layer
* [JCRVLT-188] - Ensure that hollow packages still provide PackageProperties and JcrPackageDefinition.
* [JCRVLT-190] - Provide mechanism to install several packages at once
* [JCRVLT-191] - Make VaultPackage and JcrPackage AutoCloseable
* [JCRVLT-192] - Deprecated exact storage location (/etc/packages)
* [JCRVLT-196] - Add remapping support for other than renames
* [JCRVLT-220] - Include package type when assembling a package

Wont't Fix:
* [JCRVLT-200] - Vault should support suppressSnapshots property


Changes in Jackrabbit FileVault 3.1.40
--------------------------------------

Bug Fixes:
* [JCRVLT-155] - JcrPackage.isInstalled does not return false in case the package has been overwritten
* [JCRVLT-158] - Assert causing a NPE if executed
* [JCRVLT-176] - Package with non-deep filter removes node
* [JCRVLT-177] - jcr:content and its children not overwritten during installation of Simple File Aggregate

New Features:
* [JCRVLT-50] - Add support for "hollow" packages

Improvements:
* [JCRVLT-32] - Store package properties in the MANIFEST.MF for faster access
* [JCRVLT-163] - Avoid compressing incompressible binaries
* [JCRVLT-164] - Allow to define default compression level
* [JCRVLT-174] - Add support to pass source credentials in RcpServlet
* [JCRVLT-175] - Ensure RcpTask is clearing out sensitive data in toString statement
* [JCRVLT-181] - Create ZipStreamArchive
* [JCRVLT-183] - Switch to OSGi annotations

Changes in Jackrabbit FileVault 3.1.38
--------------------------------------

Bug Fixes:
* [JCRVLT-128] - System maintained cache nodes should be ignored
* [JCRVLT-137] - Importing packages with users that contain a rep:cache node fails
* [JCRVLT-143] - JcrPackage.extractSubpackages() aborts if subpackage already exists
* [JCRVLT-144] - Unable to perform checkout due to wrong default workspace handling
* [JCRVLT-146] - Package Manager should use osgiCompare to determine version order
* [JCRVLT-147] - Remove unused special jcr:xmltext handling in DocViewSAXFormatter
* [JCRVLT-149] - PermSize deprecation warning for java 1.8
* [JCRVLT-157] - Package import does not handle "Atomic Counter"
* [JCRVLT-162] - package installation should not fully open the package when retrieving the package id
* [JCRVLT-169] - Dependency handling doesn't work when package definition not loaded

New Features:
* [JCRVLT-139] - Add support for package installation listeners
* [JCRVLT-140] - Add support for extract subpackages without installing content
* [JCRVLT-136] - Add import option flags to enforce dependency checks
* [JCRVLT-153] - Enable baseline checking to enforce better export package checks

Improvements:
* [JCRVLT-133] - Avoid node.refresh()
* [JCRVLT-136] - Add import option flags to enforce dependency checks
* [JCRVLT-138] - Unzip test-packages for easier maintenance
* [JCRVLT-145] - Subpackage extraction should not add parent dependency if no content
* [JCRVLT-148] - Migrate org.apache.jackrabbit.vault.vault-davex to httpclient 4.x
* [JCRVLT-150] - Require min JDK 1.7
* [JCRVLT-152] - Reduce verbosity of package installation
* [JCRVLT-165] - Replace proprietary diffing for vlt client with google's diffutils
* [JCRVLT-168] - Update dependencies to stable versions

Changes in Jackrabbit FileVault 3.1.36
--------------------------------------
(version skipped)

Changes in Jackrabbit FileVault 3.1.34
--------------------------------------
(version skipped)

Changes in Jackrabbit FileVault 3.1.32
--------------------------------------
(version skipped)

Changes in Jackrabbit FileVault 3.1.30
--------------------------------------
Bug Fixes:
* [JCRVLT-106] Importing an user and children with UPDATE mode causes unnecessary warnings
* [JCRVLT-126] Content packages update content outside of their filters if ancestor node have binary property
* [JCRVLT-130] Installing package with versions fails if the node is checked in

Improvements:
* [JCRVLT-111] Add support for o.a.j.api.security.authorization.PrincipalSetPolicy
* [JCRVLT-129] Update commons-httpclient to 3.1

Changes in Jackrabbit FileVault 3.1.28
--------------------------------------
Bug Fixes:
* [JCRVLT-89] - JcrPackageImpl.uninstall() throws exception if snapshot is missing
* [JCRVLT-108] - Import of binaries fail because they cannot be converted to strings
* [JCRVLT-114] - Subpackage extraction that contains vlt:definitiion might already have installed state
* [JCRVLT-117] - Potential XSS problem in org.apache.jackrabbit.vault.util.HtmlProgressListener
* [JCRVLT-121] - Credential challenge incorrect for dst server in rcp

Improvements:
* [JCRVLT-105] - Use Node.setPrimaryType() when changing primary type.
* [JCRVLT-113] - Skip installation of sub packages if newer version is already present and installed
* [JCRVLT-116] - InstallHookProcessor.Hook should not only use TCCL as fallback
* [JCRVLT-120] - Allow to filter content properties based on property name and value
* [JCRVLT-122] - Avoid deprecated Item.save()

Changes in Jackrabbit FileVault 3.1.26
--------------------------------------
Bug Fixes:
* [JCRVLT-100] - FileVault requires access to root node
  ** [JCRVLT-99] - Creating a package using package manager API requires read access to root node
  ** [JCRVLT-101] - Importer.TxInfo : access to root node
  ** [JCRVLT-102] - DefaultWorkspaceFilter requires access to root node
  ** [JCRVLT-103] - JcrPackageDefinitionImpl always accesses root node
  ** [JCRVLT-104] - Access to root node in DocViewSAXImporter and JcrSysViewTransformer

Changes in Jackrabbit FileVault 3.1.24
--------------------------------------
Bug Fixes:
* [JCRVLT-91] - HTTPS Support for CLI
* [JCRVLT-92] - Package rewrap broken for packages smaller than 1mb since introduction of memory archive
* [JCRVLT-94] - [AccessControlHandling] Unexpected behavior of acHandling 'merge'
* [JCRVLT-96] - DefaultWorkspaceFilter.getImportMode(path) should find the closest filter root
* [JCRVLT-98] - Multivalued properties of users are saved as single valued properties

Tasks:
* [JCRVLT-93] - Install apache-rat-plugin for license header checks

Improvement:
* [JCRVLT-97] - Implement binaryless export

Changes in Jackrabbit FileVault 3.1.18
--------------------------------------
Bug Fixes:
* [JCRVLT-84] - Installhook processor should not recursively call itself
* [JCRVLT-86] - Unable to merge group-member if the member node name is different from its authorizable id.


Changes in Jackrabbit FileVault 3.1.16
--------------------------------------
Bug Fixes:
* [JCRVLT-21] - "Item is protected" error during vlt rcp copy operation
* [JCRVLT-60] - The "--filter <file>" parameter does not seem to work
* [JCRVLT-81] - FilterSet.equals is returning true for filter sets with distinct roots
* [JCRVLT-83] - vlt rcp does not map namespaces properly


Changes in Jackrabbit FileVault 3.1.14
--------------------------------------
Bug Fixes:
* [JCRVLT-63] - DocViewSAXImporter relies on implementation detail wrt authorizable Id
* [JCRVLT-64] - Nodes that have a user parent are not installed if they are in the same .content.xml as their parent
* [JCRVLT-65] - Packages of authorizable content rely on a stable authorizable path
* [JCRVLT-66] - Updating an exiting authorizable does not work if on different path (mode=merge)
* [JCRVLT-67] - rep:authorizableId might be removed on package install causing error in oak
* [JCRVLT-68] - Wrong JAVA_HOME default location for OSX Yosemite
* [JCRVLT-75] - Installing rep:policy on root node fails (regression of JCRVLT-71)
* [JCRVLT-76] - Installing 2 moved sibling authorizables fails (regression)
* [JCRVLT-77] - AdminPermissionChecker fails if user can't read itself.

Improvements:
* [JCRVLT-72] - Add support for global remapping content during package installation.
* [JCRVLT-57] - Update maven-scr-plugin to 1.19.0 to allow building with Java 8
* [JCRVLT-71] - Allow creation of ancestor user nodes when they are not explicitly included in a filter

Tasks:
* [JCRVLT-70] - Change exported JMX name of PackageManagerMBeanImpl


Changes in Jackrabbit FileVault 3.1.8
-------------------------------------
Bug Fixes:
* [JCRVLT-55] - vlt st should notify the user executed in a directory notunder vault control

Improvement:
* [JCRVLT-54] - [vault-rcp] Allow single task retrieval
* [JCRVLT-56] - Add support for oak system users

Tasks:
* [JCRVLT-52] - Set maven-compiler-plugin target/source version to 1.6


Changes in Jackrabbit FileVault 3.1.6
-------------------------------------
Bug Fixes:
* [JCRVLT-48] - BinMetaDir causes test failures in windows
* [JCRVLT-45] - Uninstallation of package fails if snapshot of sub-package is missing


Changes in Jackrabbit FileVault 3.1.2
-------------------------------------
New Features:
* New project documentation on http://jackrabbit.apache.org/filevault/index.html

Bug Fixes:
* [JCRVLT-43] - vault-doc has duplicate artifactId
* [JCRVLT-44] - Regression: child node order to respected for mixed aggregate parents

Improvements:
* [JCRVLT-19] - Document filter.xml format


Changes in Jackrabbit FileVault 3.1.0
-------------------------------------
New Features:
* [JCRVLT-25] - Implement AccessControlHandling MERGE and MERGE_PRESERVE
* [JCRVLT-30] - Allow package definition to specify recursive install behavior

Bug Fixes:
* [JCRVLT-17] - Provide better abstraction for install hook handling
* [JCRVLT-22] - Import of SNS content on not supporting repositories
* [JCRVLT-23] - Integration tests fail with Jackrabbit Oak
* [JCRVLT-24] - Childnode order not respected for detached full coverage sub aggregates
* [JCRVLT-26] - File vault stores passwords in clear text in ~/.vault/auth.xml
* [JCRVLT-27] - "vlt rcp" requires credentials as URL parameters
* [JCRVLT-34] - NPE in MemoryArchive
* [JCRVLT-36] - IllegalArgumentException while extracting subpackages
* [JCRVLT-37] - Regression: Order of ACE entries is not correct
* [JCRVLT-39] - Regression: installing a package with repository ACL fails
* [JCRVLT-41] - ImportMode=UPDATE deletes existing nodes
* [JCRVLT-42] - Do not allow creation of packages with illegal JCR names

Improvements:
* [JCRVLT-28] - Improve package import for subtrees
* [JCRVLT-31] - Packages defined by a stream are copied to a file first


Changes in Jackrabbit FileVault 3.0.0
-------------------------------------
New features:

    Version 3.0.0 is the initial version of this contribution to the Apache
    Jackrabbit project.

    For more detailed information about all the changes in this and other
    FileVault releases, please see the FileVault issue tracker at

        https://issues.apache.org/jira/browse/JCR

Bug Fixes:
* [JCR-3661] jcrvlt: String[]{""} not packaged correctly

Improvements:
* [JCR-3612] Contribute Adobe's FileVault to ASF
* [JCR-3649] FileVault: fix usage of @inheritDoc in constructor documentation
* [JCR-3666] FileVault: VaultFsConfig11 references incorrect classes from prior versions
* [JCR-3664] FileVault: fix javadoc for PlatformNameFormatter
* [JCR-3663] FileVault: tweak gitignore file
* [JCR-3648] FileVault: remove dependecyManagement entry for concurrent:concurrent
* [JCR-3647] FileVault: update maven-scr-plugin and maven-bundle-plugin versions

Release Contents
----------------
This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.txt file for instructions on how to build this release.

The source archive is accompanied by SHA1 and MD5 checksums and a PGP
signature that you can use to verify the authenticity of your download.
The public key used for the PGP signature can be found at
https://www.apache.org/dist/jackrabbit/KEYS

About Apache Jackrabbit
-----------------------
Apache Jackrabbit is a fully conforming implementation of the Content
Repository for Java Technology API (JCR). A content repository is a
hierarchical content store with support for structured and unstructured
content, full text search, versioning, transactions, observation, and
more.

For more information, visit http://jackrabbit.apache.org/

About The Apache Software Foundation
------------------------------------
Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 100 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 2,500+ contributors.

For more information, visit http://www.apache.org/

Trademarks
----------
Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
Jackrabbit project logo are trademarks of The Apache Software Foundation.
