in src/main/java/org/apache/sling/feature/extension/apiregions/launcher/LauncherProperties.java [108:142]
public static Properties getFeatureIDtoRegionsMap(ApiRegions regions) {
Map<ArtifactId, List<String>> map = new HashMap<>();
for (ApiRegion region : regions.listRegions())
{
for (ArtifactId featureId : region.getFeatureOrigins()) {
map.compute(featureId, (id, regionNames) -> {
if (regionNames == null) {
regionNames = new LinkedList<>();
}
regionNames.add(region.getName());
int insertionIndex = regionNames.size() - 1;
for (ApiRegion parent = region.getParent(); parent != null; parent = parent.getParent()) {
String parentName = parent.getName();
if (!regionNames.contains(parentName)) {
regionNames.add(insertionIndex, parentName);
}
}
return regionNames;
});
}
}
Properties result = new Properties();
for (Map.Entry<ArtifactId, List<String>> entry : map.entrySet()) {
result.setProperty(entry.getKey().toMvnId(), String.join(",", entry.getValue()));
}
result.put(REGION_ORDER, regions.listRegions().stream()
.map(ApiRegion::getName)
.collect(Collectors.joining(",")));
return result;
}