Apache Sling Feature Model Diff Tool

Clone this repo:
  1. 798df02 SLING-10676 - remove SECURITY.md which is not needed by Bertrand Delacretaz · 8 weeks ago master
  2. 88ccd06 SLING-10676 - add or update SECURITY.md by Bertrand Delacretaz · 8 weeks ago
  3. d331fee SLING-10676 - add or update SECURITY.md by Bertrand Delacretaz · 8 weeks ago
  4. 9c2510c SLING-10676 - add or update SECURITY.md by Bertrand Delacretaz · 8 weeks ago
  5. b3107a2 Adding sonarqube badges as per SLING-9682 by Dan Klco · 1 year, 1 month ago

Apache Sling

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

This tool aims to provide to Apache Sling users an easy-to-use tool which is able to detect differences between different released version of the same Apache Sling Feature Model.

Simple APIs

Given two different versions of the same org.apache.sling.feature.Feature, all we need to do is comparing them

import static org.apache.sling.feature.diff.FeatureDiff.compareFeatures;

import org.apache.sling.feature.Feature
import org.apache.sling.feature.diff.DiffRequest;
import org.apache.sling.feature.diff.DiffRequest;

...

Feature previous = // somehow obtained
Feature current = // somehow obtained

DiffRequest diffRequest = new DiffRequest()
                          .setPrevious(previous)
                          .setCurrent(current)
                          .setResultId("org.apache.sling:org.apache.sling.diff:1.0.0");

Feature featureDiff = compareFeatures(diffRequest);

The resulting featureDiff is a new Feature instance which prototypes from previous and where necessary removals sections are populated and new elements may be added.

###Please note

The FeatureDiff.compareFeatures(Feature, Feature) rejects (aka throws an IllegalArgumentException) Feature inputs that:

  • are null (bien sûr);
  • refer exactly to the same Feature.

Excluding sections

The DiffRequest data object can be configured in order to include/exclude one ore more Feature section(s), available are:

  • bundles
  • configurations
  • extensions
  • framework-properties

Users can simply add via the include/exclude methods the section(s) they are interested:

DiffRequest diffRequest = new DiffRequest()
                          .setPrevious(previous)
                          .setCurrent(current)
                          .addIncludeComparator("bundles")
                          .addIncludeComparator("configurations")
                          .setResultId("org.apache.sling:org.apache.sling.diff:1.0.0");

Feature featureDiff = compareFeatures(diffRequest);