in log4j-docgen-maven-plugin/src/main/java/org/apache/logging/log4j/docgen/maven/PathMatcherMojo.java [60:102]
void findPaths(final Consumer<Path> pathConsumer) {
// Create path matchers
final String[] effectivePathPatterns = pathPatterns != null ? pathPatterns : new String[0];
final FileSystem fileSystem = FileSystems.getDefault();
final Set<PathMatcher> pathMatchers = Arrays.stream(effectivePathPatterns)
.map(pathPattern -> {
try {
return fileSystem.getPathMatcher(pathPattern);
} catch (final Exception error) {
final String message =
String.format("failed to create matcher using path pattern `%s`", pathPattern);
throw new IllegalArgumentException(message, error);
}
})
.collect(Collectors.toSet());
// Walk the base directory
try (final Stream<Path> paths = Files.walk(baseDirectory.toPath())) {
paths.filter(path -> {
// Skip directories
if (Files.isDirectory(path)) {
return false;
}
// Skip dot files
final boolean dotFile = dotFilesExcluded
&& path.getFileName().toString().startsWith(".");
if (dotFile) {
return false;
}
// Check against path matchers
return pathMatchers.isEmpty()
|| pathMatchers.stream().anyMatch(pathMatcher -> pathMatcher.matches(path));
})
.forEach(pathConsumer);
} catch (final IOException error) {
final String message = String.format("failed walking directory: `%s`", baseDirectory);
throw new UncheckedIOException(message, error);
}
}