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.
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.
The DiffRequest data object can be configured in order to include/exclude one ore more Feature section(s), available are:
bundlesconfigurationsextensionsframework-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);