private void index()

in src/main/java/org/apache/sling/servlets/resolver/internal/resource/MergingServletResourceProvider.java [92:121]


    private void index(
            ConcurrentHashMap<String, Set<String>> tree,
            ConcurrentHashMap<String, Map.Entry<ServletResourceProvider, ServiceReference<?>>> providers,
            List<Map.Entry<ServletResourceProvider, ServiceReference<?>>> registrations) {
        for (Map.Entry<ServletResourceProvider, ServiceReference<?>> reference : registrations) {
            for (String path : reference.getKey().getServletPaths()) {
                StringBuilder currentBuilder = new StringBuilder();
                for (String part : path.split("/")) {
                    Set<String> childs = tree.computeIfAbsent(
                            currentBuilder.toString(), k -> Collections.synchronizedSet(new LinkedHashSet<>()));
                    currentBuilder.append("/").append(part);
                    String cleanedCurrent = currentBuilder.toString().trim().replace("//", "/");
                    // replace the buffer with the cleaned string
                    currentBuilder.setLength(0);
                    currentBuilder.append(cleanedCurrent);

                    childs.add(currentBuilder.toString());
                }

                Map.Entry<ServletResourceProvider, ServiceReference<?>> old = providers.get(path);
                if (old == null) {
                    providers.put(path, reference);
                } else {
                    if (reference.getValue().compareTo(old.getValue()) > 0) {
                        providers.put(path, reference);
                    }
                }
            }
        }
    }