SLING-8783 : Create API for api regions
6 files changed
tree: 2f18f130f0655e13d9e0cd8b93d769ae7672ed16
  1. src/
  2. .gitignore
  3. CODE_OF_CONDUCT.md
  4. CONTRIBUTING.md
  5. Jenkinsfile
  6. LICENSE
  7. pom.xml
  8. README.md
README.md

Build Status Test Status License feature

Apache Sling API Regions extension

This component contains extensions relating to the API Regions component. For more information about API Regions see https://github.com/apache/sling-org-apache-sling-feature/blob/master/apicontroller.md

The following extensions are registered via the ServiceLoader mechanism:

org.apache.sling.feature.builder.MergeHandler

Merge handlers are called when features are merged during the aggregation process.

APIRegionMergeHandler - This handler knows how to merge API Regions extensions and adds the org-feature key to the api-regions sections to record what feature this section originally belonged.

org.apache.sling.feature.builder.PostProcessHandler

PostProcessHandlers are called when a feature contains an api-regions section.

BundleMappingHandler - This handler creates a mapping file idbsnver.properties that maps the Artifact ID to a bundle symbolic name and version. A tilde ~ is used in the value of the map to separate BSN and version.

BundleArtifactFeatureHandler - This handler creates 3 mapping files:

  • bundles.properties: maps bundles to the original feature they were in. A bundle could be from more then one feature.
  • features.properties: maps features to regions. A feature can be in more than one region.
  • regions.properties: maps regions to packages. A region can expose more than one package.

The location of the files created by the BundleArtifactFeatureHandler handler is stored in a system property with name sling.feature.apiregions.resource. + filename. So to obtain the file name of the bundles.properties file, make the following call:

System.getProperty("sling.feature.apiregions.resource.bundles.properties")

These properties are read by the https://github.com/apache/sling-org-apache-sling-feature-apiregions component for runtime enforcement of the API Regions.