public Iterator getChildren()

in src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java [70:124]


    public Iterator<Resource> getChildren(final ResourceResolver resolver, final Resource parent) {
        final String parentPath = parent.getPath();
        final ContentFile parentContentFile = getFile(parentPath, null);
        ;

        final List<Iterator<? extends Resource>> childIterators = new ArrayList<>(2);

        // add children from parsed content
        if (parentContentFile != null && parentContentFile.hasContent()) {
            childIterators.add(IteratorUtils.transformedIterator(
                    parentContentFile.getContent().getChildren().keySet().iterator(),
                    new Transformer<String, Resource>() {
                        @Override
                        public Resource transform(final String name) {
                            return new ContentFileResource(resolver, parentContentFile.navigateToRelative(name));
                        }
                    }));
        }

        // add children from filesystem folder
        File parentDir = new File(providerFile, StringUtils.removeStart(parentPath, providerRootPrefix));
        if (fileStatCache.isDirectory(parentDir)) {
            File[] files = parentDir.listFiles();
            if (files != null) {
                Arrays.sort(files, FileNameComparator.INSTANCE);
                childIterators.add(IteratorUtils.transformedIterator(
                        IteratorUtils.arrayIterator(files), new Transformer<File, Resource>() {
                            @Override
                            public Resource transform(final File file) {
                                String path = parentPath + "/" + Escape.fileToResourceName(file.getName());
                                String filenameSuffix = contentFileExtensions.getSuffix(file);
                                if (filenameSuffix != null) {
                                    path = StringUtils.substringBeforeLast(path, filenameSuffix);
                                    ContentFile contentFile = new ContentFile(file, path, null, contentFileCache);
                                    return new ContentFileResource(resolver, contentFile);
                                } else {
                                    return new FileResource(
                                            resolver,
                                            path,
                                            file,
                                            contentFileExtensions,
                                            contentFileCache,
                                            fileStatCache);
                                }
                            }
                        }));
            }
        }

        Iterator<Resource> children = IteratorUtils.chainedIterator(childIterators);
        if (!children.hasNext()) {
            return null;
        }
        return children;
    }