public boolean analyzeJar()

in src/main/java/org/apache/sling/scriptingbundle/plugin/bnd/BundledScriptsScannerPlugin.java [62:117]


    public boolean analyzeJar(Analyzer analyzer) throws Exception {
        logger = new BndLogger(reporter);
        boolean inContentPackage = "content-package".equals(analyzer.get("project.packaging"));
        Path workDirectory = Paths.get(analyzer.get(PROJECT_BUILD_FOLDER), "scriptingbundle-maven-plugin");
        Files.createDirectories(workDirectory);
        Set<PathMatcher> includes = getConfiguredIncludes();
        Set<PathMatcher> excludes = getConfiguredExcludes();
        getConfiguredSourceDirectories().stream().map(sourceDirectory -> {
            Path sourceDirectoryPath = Paths.get(sourceDirectory);
            if (!Files.exists(sourceDirectoryPath)) {
                sourceDirectoryPath = Paths.get(analyzer.get(PROJECT_ROOT_FOLDER), sourceDirectory);
            }
            return sourceDirectoryPath;
        }).filter(sourceDirectoryPath -> Files.exists(sourceDirectoryPath) && Files.isDirectory(sourceDirectoryPath)).forEach(sourceDirectoryPath -> {
            try (Stream<Path> includedFiles = walkPath(sourceDirectoryPath, includes, excludes)) {
                includedFiles.forEach(
                    file -> {
                        try {
                            if (!Files.isDirectory(file)) {
                                Path workingCopy = Paths.get(workDirectory.toString(), sourceDirectoryPath.relativize(file).toString());
                                Files.createDirectories(workingCopy.getParent());
                                Files.copy(file, workingCopy, StandardCopyOption.REPLACE_EXISTING);
                            }
                        } catch (IOException e) {
                            logger.error("Cannot copy file into working directory.", e);
                        }
                    }
                );
            } catch (IOException e) {
                logger.error("Cannot analyse source folders.", e);
            }
        });
        scriptEngineMappings = getConfiguredScriptEngineMappings();
        capabilities = Capabilities
                .fromFileSystemTree(workDirectory, walkPath(workDirectory, includes, excludes), logger,
                getConfiguredSearchPaths(), scriptEngineMappings, getMissingRequirementsOptional(), inContentPackage);
        String providedCapabilitiesDefinition = capabilities.getProvidedCapabilitiesString();
        String requiredCapabilitiesDefinition = capabilities.getRequiredCapabilitiesString();

        String providedCapabilities = analyzer.get(aQute.bnd.osgi.Constants.PROVIDE_CAPABILITY);
        if (StringUtils.isNotEmpty(providedCapabilities)) {
            providedCapabilities += ", " + providedCapabilitiesDefinition;
        } else {
            providedCapabilities = providedCapabilitiesDefinition;
        }
        analyzer.set(aQute.bnd.osgi.Constants.PROVIDE_CAPABILITY, providedCapabilities);

        String requiredCapabilities = analyzer.get(aQute.bnd.osgi.Constants.REQUIRE_CAPABILITY);
        if (StringUtils.isNotEmpty(requiredCapabilities)) {
            requiredCapabilities += ", " + requiredCapabilitiesDefinition;
        } else {
            requiredCapabilities = requiredCapabilitiesDefinition;
        }
        analyzer.set(aQute.bnd.osgi.Constants.REQUIRE_CAPABILITY, requiredCapabilities);
        return false;
    }