Release Notes -- Apache Jackrabbit -- Version 2.21.12

Introduction
------------

This is Apache Jackrabbit(TM) 2.21.12, a fully compliant implementation of the
Content Repository for Java(TM) Technology API, version 2.0 (JCR 2.0) as
specified in the Java Specification Request 283 (JSR 283).

Apache Jackrabbit 2.21.12 is an unstable release cut directly from
Jackrabbit trunk, with a focus on new features and other
improvements. For production use we recommend the latest stable 2.20.x
release.

Changes in Jackrabbit 2.21.12
-----------------------------

Bug

    [JCR-4799] - jackrabbit.client.useSystemProperties undone by SSL config: client certificates no longer work
    [JCR-4808] - 'pedantic' profile should run integration tests
    [JCR-4814] - FileDataStore: File.renameTo sometimes fails to move temporary file to data record location

Task

    [JCR-4741] - add test coverage for mandatory non-residual child nodes
    [JCR-4804] - Update Tika dependency to 2.4.1
    [JCR-4805] - Update h2db dependency to 2.1.214
    [JCR-4806] - Update tomcat dependency to 8.5.81
    [JCR-4809] - set baseline comparisonVersion to latest stable (2.20.6)
    [JCR-4812] - Update Jackrabbit trunk to Oak 1.44.0
    [JCR-4815] - Update mockito dependency to 4.6.1
    [JCR-4816] - webapp: update htmlunit dependency to 2.63.0
    [JCR-4817] - Update aws java sdk version to 1.12.272
    [JCR-4818] - Update to jacoco version 0.8.8
    [JCR-4819] - Update spotbugs-maven-plugin to 4.7.1.1
    [JCR-4820] - Update maven-assembly-plugin to 3.4.2
    [JCR-4821] - Update javadoc-plugin dependency to 3.4.0
    [JCR-4822] - Update pmd-plugin dependency to 3.17.0
    [JCR-4823] - Update war-plugin dependency to 3.3.2
    [JCR-4824] - Update antrun plugin dependency to 3.1.0
    [JCR-4825] - Update to maven bundle plugin to 5.1.8
    [JCR-4826] - Update maven-jar-plugin to 3.2.2
    [JCR-4827] - Update animal-sniffer dependency to 1.21
    [JCR-4828] - Update build-helper-maven-plugin to version 3.3.0
    [JCR-4829] - Update com.google.guava to 31.1


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

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

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 an SHA512 checksum 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 140 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 3,800+ 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.
