private void writeAdditionalDetails()

in src/main/java/org/apache/nifi/NarMojo.java [784:825]


    private void writeAdditionalDetails(final File file, final Set<String> extensionNames, final File additionalDetailsDir) throws IOException, MojoExecutionException {
        final JarFile jarFile = new JarFile(file);

        for (final Enumeration<JarEntry> jarEnumeration = jarFile.entries(); jarEnumeration.hasMoreElements();) {
            final JarEntry jarEntry = jarEnumeration.nextElement();

            final String entryName = jarEntry.getName();
            if (!entryName.startsWith("docs/")) {
                continue;
            }

            final int nextSlashIndex = entryName.indexOf("/", 5);
            if (nextSlashIndex < 0) {
                continue;
            }

            final String componentName = entryName.substring(5, nextSlashIndex);
            if (!extensionNames.contains(componentName)) {
                continue;
            }

            if (jarEntry.isDirectory()) {
                continue;
            }

            if (entryName.length() < nextSlashIndex + 1) {
                continue;
            }

            getLog().debug("Found file " + entryName + " in " + file + " that consists of documentation for " + componentName);
            final File componentDirectory = new File(additionalDetailsDir, componentName);
            final String remainingPath = entryName.substring(nextSlashIndex + 1);
            final File destinationFile = new File(componentDirectory, remainingPath);

            createDirectory(destinationFile.getParentFile());

            try (final InputStream in = jarFile.getInputStream(jarEntry);
                 final OutputStream out = new FileOutputStream(destinationFile)) {
                copy(in, out);
            }
        }
    }