Apache Sling Feature Model Diff Tool

Clone this repo:
  1. 1e881f5 Update to latest feature model and parent pom by Carsten Ziegeler · 6 months ago master
  2. 7fcacb2 SLING-11051 - Fixing JavaDoc badge by Dan Klco · 9 months ago
  3. 798df02 SLING-10676 - remove SECURITY.md which is not needed by Bertrand Delacretaz · 1 year, 2 months ago
  4. 88ccd06 SLING-10676 - add or update SECURITY.md by Bertrand Delacretaz · 1 year, 2 months ago
  5. d331fee SLING-10676 - add or update SECURITY.md by Bertrand Delacretaz · 1 year, 2 months 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);