in src/main/java/org/apache/netbeans/nbpackage/FileUtils.java [283:320]
public static boolean processJarContents(Path jarFile, String pattern, JarProcessor processor)
throws IOException {
URI jarURI = URI.create("jar:" + jarFile.toUri());
boolean updated = false;
try (var jarFS = FileSystems.newFileSystem(jarURI, Map.of())) {
PathMatcher matcher = jarFS.getPathMatcher("glob:" + pattern);
List<Path> filesToProcess;
try (var jarStream = Files.walk(jarFS.getPath("/"))) {
filesToProcess = jarStream
.filter(file -> Files.isRegularFile(file))
.filter(matcher::matches)
.collect(Collectors.toList());
}
if (filesToProcess.isEmpty()) {
return false;
}
Path tmpDir = Files.createTempDirectory("nbpackage-jar-");
try {
for (Path file : filesToProcess) {
Path tmp = null;
try {
tmp = Files.copy(file, tmpDir.resolve(file.getFileName().toString()));
boolean processed = processor.processFile(tmp, file.toString());
if (processed) {
Files.copy(tmp, file, StandardCopyOption.REPLACE_EXISTING);
updated = true;
}
} finally {
Files.deleteIfExists(tmp);
}
}
} finally {
Files.delete(tmpDir);
}
}
return updated;
}