package dev.jeka.core.api.depmanagement.embedded.ivy; import dev.jeka.core.api.depmanagement.JkVersionedModule; import dev.jeka.core.api.system.JkLog; import org.apache.ivy.core.module.id.ModuleRevisionId; import org.apache.ivy.core.report.ArtifactDownloadReport; import java.nio.file.Path; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * Created by angibaudj on 20-06-17. */ final class IvyArtifactContainer { private final Map<JkVersionedModule, List<Path>> map = new HashMap<>(); static IvyArtifactContainer of(ArtifactDownloadReport[] artifactDownloadReports) { IvyArtifactContainer result = new IvyArtifactContainer(); for (ArtifactDownloadReport report : artifactDownloadReports) { if (report.getLocalFile() == null) { JkLog.warn("File for " + report.getArtifact() + " hasn't been downloaded."); continue; //throw new IllegalStateException("File for " + report.getArtifact() + " hasn't been downloaded."); } result.put(report.getArtifact().getModuleRevisionId(), report.getLocalFile().toPath()); } return result; } private void put(ModuleRevisionId moduleRevisionId, Path file) { JkVersionedModule versionedModule = IvyTranslations.toJkVersionedModule(moduleRevisionId); List<Path> files = map.computeIfAbsent(versionedModule, k -> new LinkedList<>()); files.add(file); } List<Path> getArtifacts(JkVersionedModule versionedModule) { List<Path> result = map.get(versionedModule); if (result == null) { return new LinkedList<>(); } return result; } }