Release Notes -- Apache Jackrabbit FileVault -- Version 3.5.0

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.5.0
--------------------------------------

Release Notes - Jackrabbit FileVault - Version 3.5.0
This version requires Java 8
The bundles are backwards compatible with Oak 1.8 and Jackrabbit 2.16

Bug
    * [JCRVLT-255] - ImportModes act on file serialization level not on node level
    * [JCRVLT-513] - Don't check for property 'allowIndexDefinitions' in package type validator
    * [JCRVLT-514] - JcrWorkspaceFilter does not support property filters
    * [JCRVLT-517] - FSPackageRegistry.contains does not initialize packages
    * [JCRVLT-520] - ZipVaultPackage does not respect the noIntermediateSaves property.
Improvement
    * [JCRVLT-396] - Import mode "MERGE" and "UPDATE" still may remove properties during import
    * [JCRVLT-509] - Make DocView import failures fail the whole installation
    * [JCRVLT-511] - Allow to parameterize PackageTasks
    * [JCRVLT-512] - Add flag to allow install hooks for "application" packages
    * [JCRVLT-515] - AdminPermissionChecker should evaluate all principals bound to the Session
    * [JCRVLT-516] - Ease usage of DocViewProperty outside a repository context
    * [JCRVLT-521] - Drop support of Jackrabbit API 2.14 and Declarative Services 1.3

Changes in Jackrabbit FileVault 3.4.10
--------------------------------------

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

Bug
    * [JCRVLT-448] - JcrPackageManagerImpl.rewrap and assemble do not close passed output stream
    * [JCRVLT-496] - Clarify usage of oak:index in application packages
    * [JCRVLT-497] - NodeTypeValidator: Incorrect errors emitted for rep:Authorizable nodes
    * [JCRVLT-499] - JcrPackageDefinitionImpl:getDate does not fully support ISO8601 format
    * [JCRVLT-500] - DefaultPathFilter#isAbsolute fails with quoted patterns
Improvement
    * [JCRVLT-450] - Deprecate duplicate/unused util classes
    * [JCRVLT-492] - Document install hooks
    * [JCRVLT-493] - Document restrictions of package types
    * [JCRVLT-494] - Clarify javadoc of ExecutionPlanBuilder.execute()
    * [JCRVLT-503] - Introduce CompositePackageRegistry
    * [JCRVLT-505] - Separate unit test from integration tests
    * [JCRVLT-507] - Update to Oak 1.38.0

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.
