private void selectRefsFiles()

in src/main/java/org/apache/sling/feature/maven/mojos/AbstractIncludingFeatureMojo.java [188:227]


    private void selectRefsFiles(final String selection, final List<String> excludes, final Map<String, Feature> result)
            throws MojoExecutionException {
        final DirectoryScanner scanner = new DirectoryScanner();
        scanner.setBasedir(this.project.getBasedir());
        if (!excludes.isEmpty()) {
            scanner.setExcludes(excludes.toArray(new String[excludes.size()]));
        }
        scanner.setIncludes(new String[] {selection});
        scanner.scan();

        if (!selection.contains("*") && scanner.getIncludedFiles().length == 0) {
            throw new MojoExecutionException("RefsInclude " + selection + " not found.");
        }
        // sort result
        final List<String> includedFiles = new ArrayList<>(Arrays.asList(scanner.getIncludedFiles()));
        Collections.sort(includedFiles);
        for (final String path : includedFiles) {
            final File selectedFile = new File(this.project.getBasedir(), path.replace('/', File.separatorChar));
            try {
                final List<String> urls = IOUtils.parseFeatureRefFile(selectedFile);
                for (final String url : urls) {
                    try {
                        final ArtifactId id = ArtifactId.parse(url);
                        if (ProjectHelper.isLocalProjectArtifact(this.project, id)) {
                            throw new MojoExecutionException(
                                    "RefsFile configuration is used to select a local feature: " + id.toMvnId());
                        }
                        final Feature feature = ProjectHelper.getOrResolveFeature(
                                this.project, this.mavenSession, this.artifactHandlerManager, this.repoSystem, id);
                        result.put(id.toMvnUrl(), feature);
                    } catch (final IllegalArgumentException e) {
                        throw new MojoExecutionException("Reference " + url + " in " + selectedFile.getAbsolutePath()
                                + " is not a supported url.");
                    }
                }
            } catch (final IOException e) {
                throw new MojoExecutionException(e.getMessage(), e);
            }
        }
    }