private Map collectArtifacts()

in src/main/java/org/apache/sling/installer/factory/model/impl/InstallModelTask.java [288:335]


    private Map<Traceable, String> collectArtifacts(final Model effectiveModel,
            final List<ArtifactDescription> files,
            final File baseDir) {
        final RepositoryAccess repo = new RepositoryAccess();
        final Map<Traceable, String> errors = new HashMap<>();
        for(final Feature f : effectiveModel.getFeatures()) {
            if ( f.isSpecial() ) {
                continue;
            }
            for(final Section section : f.getAdditionalSections()) {
                final ArtifactDescription desc = new ArtifactDescription();
                desc.section = section;
                files.add(desc);
            }
            for(final RunMode mode : f.getRunModes()) {
                if ( mode.isSpecial() ) {
                    continue;
                }
                if ( mode.isActive(this.activeRunModes) ) {
                    for(final ArtifactGroup group : mode.getArtifactGroups()) {
                        for(final Artifact artifact : group) {
                            File file = (baseDir == null ? null : new File(baseDir, artifact.getRepositoryPath().replace('/', File.separatorChar)));
                            if ( file == null || !file.exists() ) {
                                file = repo.get(artifact);
                            }
                            if ( file == null ) {
                                errors.put(artifact, "Artifact " + artifact.toMvnUrl() + " not found.");
                            } else {
                                final ArtifactDescription desc = new ArtifactDescription();
                                desc.artifactFile = file;
                                desc.startLevel = group.getStartLevel();
                                files.add(desc);
                            }
                        }
                    }
                    for(final Configuration cfg : mode.getConfigurations() ) {
                        if ( cfg.isSpecial() ) {
                            continue;
                        }
                        final ArtifactDescription desc = new ArtifactDescription();
                        desc.cfg = cfg;
                        files.add(desc);
                    }
                }
            }
        }
        return errors.isEmpty() ? null : errors;
    }