public static Map resolveSitemapRoots()

in src/main/java/org/apache/sling/sitemap/SitemapUtil.java [166:196]


    public static Map<Resource, String> resolveSitemapRoots(@NotNull Resource topLevelSitemapRoot,
        @NotNull String sitemapSelector) {
        if (!isTopLevelSitemapRoot(topLevelSitemapRoot)) {
            // selectors are always relative to a top level sitemap root
            return Collections.emptyMap();
        }
        if (sitemapSelector.equals(SITEMAP_SELECTOR)) {
            return Collections.singletonMap(topLevelSitemapRoot, SitemapService.DEFAULT_SITEMAP_NAME);
        }

        List<String> parts = Arrays.asList(sitemapSelector.split("-"));
        List<String> relevantParts;

        if (parts.size() == 2 && parts.get(0).equals(SITEMAP_SELECTOR) && isInteger(parts.get(1))) {
            // default name with file index
            return Collections.singletonMap(topLevelSitemapRoot, SitemapService.DEFAULT_SITEMAP_NAME);
        } else if (parts.size() > 1 && parts.get(parts.size() - 1).equals(SITEMAP_SELECTOR)) {
            // no file index part
            relevantParts = parts.subList(0, parts.size() - 1);
        } else if (parts.size() > 2 && parts.get(parts.size() - 2).equals(SITEMAP_SELECTOR)
            && isInteger(parts.get(parts.size() - 1))) {
            // with file index part
            relevantParts = parts.subList(0, parts.size() - 2);
        } else {
            return Collections.emptyMap();
        }

        Map<Resource, String> roots = new LinkedHashMap<>();
        resolveSitemapRoots(topLevelSitemapRoot, relevantParts, roots);
        return roots;
    }