Release Notes -- Apache Jackrabbit -- Version 2.20.2

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

This is Apache Jackrabbit(TM) 2.20.2, 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.20.2 is an incremental feature release based on
and compatible with earlier stable Jackrabbit 2.x releases. Jackrabbit
2.20.x releases are considered stable and targeted for production use.

The minimum Java version for this release is Java 8. See

  http://jackrabbit.apache.org/jcr/downloads.html
  
for maintenance versions that support earlier Java versions.


Changes in Jackrabbit 2.20.2
----------------------------

Bug

    [JCR-4537] - MalformedURLException: Nested JAR URLs are not supported
    [JCR-4579] - jackrabbit-data: allow to disable statement pooling through system property
    [JCR-4590] - jcr-server: DirListingExportHandler sets empty Etag
    [JCR-4603] - spi-commons: Iterators - incorrect method signature
    [JCR-4626] - CI build fail because org.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT can't be retrieved

Improvement

    [JCR-4536] - spi2dav: allow disabling cert and host name checks for TLS connections
    [JCR-4583] - remove XML serialization workaround for ancient Java versions
    [JCR-4589] - upgrade to servlet-api 3.10
    [JCR-4591] - basic trailer field support
    [JCR-4609] - Improve logging in case of exception in JcrUtils.getRepository()
    [JCR-4617] - Emit apache-rat-plugin errors on console
    [JCR-4618] - Relax PredefinedNodeTypeTest to not require nt:frozenNode to be referenceable

Task

    [JCR-4567] - Jackrabbit should build and test with Java 15
    [JCR-4568] - Update to jacoco version 0.8.6 (compatible with Java 15)
    [JCR-4569] - Update to maven bundle plugin compatible with Java 15
    [JCR-4572] - Update Jackrabbit trunk to oak 1.30.0
    [JCR-4573] - Update Jetty dependency to 9.2.30.v20200428
    [JCR-4574] - add tests for https (with self-signed cert)
    [JCR-4592] - Update maven-assembly-plugin to 3.3.0
    [JCR-4593] - update war-plugin dependency to 3.3.0
    [JCR-4594] - update pmd-plugin dependency to 3.13.0
    [JCR-4595] - update checkstyle-plugin dependency to 3.1.1
    [JCR-4596] - update build-helper-maven-plugin to version 3.2.0
    [JCR-4597] - Update commons-io dependency to 2.7
    [JCR-4598] - Update easymock dependency to 4.2
    [JCR-4599] - webapp: update htmlunit dependency to 2.41.0
    [JCR-4600] - Update tomcat dependency to 8.5.56
    [JCR-4601] - jackrabbit-jcr-commons: update cglib dependency to 3.3.0
    [JCR-4604] - deprecate Iterators.Predicate
    [JCR-4605] - standalone: fix deprecation warning wrt GnuParser
    [JCR-4612] - Update tomcat dependency to 8.5.57/7.0.105
    [JCR-4613] - Update oak-jackrabbit-api to 1.32.0
    [JCR-4615] - jcr-server: add minimal test coverage for remoting WebDAV servlet
    [JCR-4616] - parent: remove PMC information from POM
    [JCR-4621] - add 'javadoc' profile for Jenkins matrix builds
    [JCR-4622] - add 'rat' profile for Jenkins matrix builds
    [JCR-4623] - webapp: update htmlunit dependency to 2.42.0
    [JCR-4624] - Update mockito dependency to 3.4.4
    [JCR-4629] - Update spotbugs-maven-plugin to 4.0.4
    [JCR-4630] - Update animal-sniffer dependency to 1.19
    [JCR-4631] - update war-plugin dependency to 3.3.1
    [JCR-4632] - Update mockito dependency to 3.5.2
    [JCR-4633] - webapp: update htmlunit dependency to 2.43.0
    [JCR-4636] - Update mockito dependency to 3.5.7
    [JCR-4638] - Update mockito dependency to 3.5.10
    [JCR-4639] - Update antrun plugin dependency to 3.0.0
    [JCR-4640] - Update Jackrabbit trunk to Oak 1.34.0
    [JCR-4641] - Update commons-io dependency to 2.8.0
    [JCR-4642] - update geronimo-j2ee-connector_1.5_spec dependency to 2.0.0
    [JCR-4643] - Update pax-exam version to 4.13.1
    [JCR-4644] - Update tomcat dependency to 8.5.58/7.0.106
    [JCR-4645] - Update mockito dependency to 3.5.11
    [JCR-4646] - Update tomcat dependency to 8.5.59
    [JCR-4647] - update junit dependency to 4.13.1

Sub-task

    [JCR-4166] - support GZIP content coding in requests
    [JCR-4167] - signal support for GZIP content coding as per RFC 7694
    [JCR-4169] - make WebdavServerTests run automatically
    [JCR-4581] - use GZIP encoding in XML responses when client signals support
    [JCR-4582] - support 'deflate' encoding in requests
    [JCR-4585] - jackrabbit-webdav: return Etag with 304 response
    [JCR-4586] - jackrabbit-webdav: must ignore if-modified-since with broken date
    [JCR-4587] - jackrabbit-webdav: include if-unmodified-since in precondition check
    [JCR-4588] - jackrabbit-webdav/server: add parsers for http dates and use them in conditional eval

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.
