in src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsDuplicates.java [42:67]
protected void execute(ApiRegions apiRegions, AnalyserTaskContext ctx) throws Exception {
for (int i = 0; i < apiRegions.listRegions().size(); i++) {
ApiRegion sourceRegion = apiRegions.listRegions().get(i);
List<ApiRegion> targetRegions = apiRegions.listRegions().subList(i + 1, apiRegions.listRegions().size());
for (ApiRegion targetRegion : targetRegions) {
if (sourceRegion.equals(targetRegion)) {
continue;
}
Set<String> intersection = calculateIntersection(sourceRegion, targetRegion);
if (!intersection.isEmpty()) {
Formatter formatter = new Formatter();
formatter.format("Regions '%s' and '%s' defined in feature '%s' declare both %s package(s):%n",
sourceRegion.getName(), targetRegion.getName(),
ctx.getFeature().getId(),
intersection.size());
intersection.forEach(api -> formatter.format(" * %s%n", api));
ctx.reportError(formatter.toString());
formatter.close();
}
}
}
}