public static Properties getFeatureIDtoRegionsMap()

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;
    }