Search in sources :

Example 1 with FileBackedDirectoryFileTree

use of org.gradle.api.internal.file.collections.FileBackedDirectoryFileTree in project gradle by gradle.

the class AbstractFileCollection method getAsFileTrees.

/**
 * Returns this collection as a set of {@link DirectoryFileTree} instance. These are used to map to Ant types.
 */
protected Collection<DirectoryTree> getAsFileTrees() {
    List<DirectoryTree> fileTrees = new ArrayList<>();
    visitStructure(new FileCollectionStructureVisitor() {

        @Override
        public void visitCollection(Source source, Iterable<File> contents) {
            for (File file : contents) {
                if (file.isFile()) {
                    fileTrees.add(new FileBackedDirectoryFileTree(file));
                }
            }
        }

        @Override
        public void visitFileTree(File root, PatternSet patterns, FileTreeInternal fileTree) {
            if (root.isFile()) {
                fileTrees.add(new FileBackedDirectoryFileTree(root));
            } else if (root.isDirectory()) {
                fileTrees.add(new DirectoryTree() {

                    @Override
                    public File getDir() {
                        return root;
                    }

                    @Override
                    public PatternSet getPatterns() {
                        return patterns;
                    }
                });
            }
        }

        @Override
        public void visitGenericFileTree(FileTreeInternal fileTree, FileSystemMirroringFileTree sourceTree) {
            // Visit the contents of the tree to generate the tree
            if (visitAll(sourceTree)) {
                fileTrees.add(sourceTree.getMirror());
            }
        }

        @Override
        public void visitFileTreeBackedByFile(File file, FileTreeInternal fileTree, FileSystemMirroringFileTree sourceTree) {
            visitGenericFileTree(fileTree, sourceTree);
        }
    });
    return fileTrees;
}
Also used : DirectoryTree(org.gradle.api.file.DirectoryTree) ArrayList(java.util.ArrayList) FileBackedDirectoryFileTree(org.gradle.api.internal.file.collections.FileBackedDirectoryFileTree) FileSystemMirroringFileTree(org.gradle.api.internal.file.collections.FileSystemMirroringFileTree) File(java.io.File) PatternSet(org.gradle.api.tasks.util.PatternSet)

Aggregations

File (java.io.File)1 ArrayList (java.util.ArrayList)1 DirectoryTree (org.gradle.api.file.DirectoryTree)1 FileBackedDirectoryFileTree (org.gradle.api.internal.file.collections.FileBackedDirectoryFileTree)1 FileSystemMirroringFileTree (org.gradle.api.internal.file.collections.FileSystemMirroringFileTree)1 PatternSet (org.gradle.api.tasks.util.PatternSet)1