public static List<RuleSource> getRuleSources(File rulesDirectory) throws IOException { final List<File> ruleFiles = new ArrayList<>(); new DirectoryWalker<File>() { @Override protected void handleFile(File file, int depth, Collection<File> results) throws IOException { boolean isFile = file.isFile(); boolean isAsciiDocFile = Type.AsciiDoc.matches(file); boolean isXMLFile = Type.XML.matches(file); if (isFile && (isAsciiDocFile || isXMLFile)) { results.add(file); } } public void scan(File directory) throws IOException { super.walk(directory, ruleFiles); } }.scan(rulesDirectory); List<RuleSource> ruleSources = new LinkedList<>(); for (File ruleFile : ruleFiles) { ruleSources.add(new FileRuleSource(ruleFile)); } return ruleSources; }