public static boolean processJarContents()

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;
    }