Apache Sling JCR Base Bundle

Clone this repo:
  1. 66be360 [maven-release-plugin] prepare for next development iteration by Robert Munteanu · 7 months ago master
  2. 4877092 [maven-release-plugin] prepare release org.apache.sling.jcr.base-3.1.6 by Robert Munteanu · 7 months ago org.apache.sling.jcr.base-3.1.6
  3. 7e484c6 Remove outdated comment - can't override final methods. by Robert Munteanu · 7 months ago
  4. 26eaf8e SLING-9722 - AbstractSlingRepositoryManager.stop throws NullPointerExceptions if invoked multiple times by Robert Munteanu · 7 months ago
  5. 6ac1e5c Adding sonarqube badges as per SLING-9682 by Dan Klco · 8 months ago

Apache Sling

Build Status Test Status Coverage Sonarcloud Status JavaDoc Maven Central jcr License

Apache Sling JCR Base Bundle

This module is part of the Apache Sling project.

The JCR base bundle provides JCR utility classes and support for repository mounts.

Repository Mount

Apache Sling provides support for pluggable resource providers. While this allows for a very flexible and efficient integration of custom data providers into Sling, this integration is done on Sling's resource API level. Legacy code which may rely on being able to adapt a resource into a JCR node and continue with JCR API will not work with such a resource provider.

To support legacy code, this bundle provides an SPI interface org.apache.sling.jcr.base.spi.RepositoryMount which extends JackrabbitRepository (and through this javax.jcr.Repository). A service registered as RepositoryMount registers itself with the service registration property RepositoryMount.MOUNT_POINTS_KEY which is a String+ property containing the paths in the JCR tree where the mount takes over the control of the JCR nodes. The RepositoryMount can registered at a single path or multiple.

As RepositoryMount extends JackrabbitRepository the implementation of a mount needs to implement the whole JCR API. This is a lot of work compared to a ResourceProvider, therefore a RepositoryMount should only be used if legacy code using JCR API needs to be supported.