public Iterator listChildren()

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


    public Iterator<Resource> listChildren(
            @SuppressWarnings("rawtypes") final ResolveContext ctx, final Resource parent) {
        Map<String, Resource> result = new LinkedHashMap<>();

        final ResourceProvider<?> parentProvider = ctx.getParentResourceProvider();
        if (parentProvider != null) {
            for (Iterator<Resource> iter = parentProvider.listChildren(ctx.getParentResolveContext(), parent);
                    iter != null && iter.hasNext(); ) {
                Resource resource = iter.next();
                result.put(resource.getPath(), resource);
            }
        }
        Set<String> paths = tree.get().get(parent.getPath());

        if (paths != null) {
            for (String path : paths.toArray(new String[0])) {
                Map.Entry<ServletResourceProvider, ServiceReference<?>> provider =
                        providers.get().get(path);

                if (provider != null) {
                    Resource resource = provider.getKey().getResource(ctx, path, null, parent);
                    if (resource != null) {
                        Resource wrapped = result.put(path, resource);
                        if (resource instanceof ServletResource) {
                            ((ServletResource) resource).setWrappedResource(wrapped);
                        }
                    }
                } else {
                    result.computeIfAbsent(
                            path,
                            key -> new SyntheticResource(
                                    ctx.getResourceResolver(), key, ResourceProvider.RESOURCE_TYPE_SYNTHETIC));
                }
            }
        }
        return result.values().iterator();
    }