private Map consolidateGenerators()

in src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImpl.java [95:122]


    private Map<String, SitemapGenerator> consolidateGenerators(Resource sitemapRoot,
            Function<SitemapGenerator, Function<Resource, Set<String>>> namesProvider) {
        Map<String, SitemapGenerator> consolidatedGenerators = new HashMap<>();

        for (SitemapGenerator generator : this.generators) {
            Set<String> providedNames = namesProvider.apply(generator).apply(sitemapRoot);
            Set<String> names = new HashSet<>(providedNames);

            if (names.removeAll(consolidatedGenerators.keySet()) && LOG.isDebugEnabled()) {
                String alreadyGenerated = String.join(",", consolidatedGenerators.keySet());
                String provided = String.join(",", providedNames);
                LOG.debug("Removed duplicated names. Already generated: '{}', provided by {}: '{}'",
                        alreadyGenerated, generator.getClass().getName(), provided);
            }

            if (names.isEmpty()) {
                LOG.debug("Skipping {} as it did not provide any names for '{}'", generator.getClass().getName(),
                        sitemapRoot.getPath());
                continue;
            }

            for (String name : names) {
                consolidatedGenerators.put(name, generator);
            }
        }

        return consolidatedGenerators;
    }