--- /dev/null
+/*
+ * Copyright © 2019 Red Hat, Inc. and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.odlparent;
+
+import java.util.Objects;
+import org.eclipse.aether.artifact.Artifact;
+
+/**
+ * Group, artifact, classifier, extension.
+ */
+final class Gace {
+ private final String groupId;
+ private final String artifactId;
+ private final String classifier;
+ private final String extension;
+
+ Gace(Artifact artifact) {
+ groupId = artifact.getGroupId();
+ artifactId = artifact.getArtifactId();
+ classifier = artifact.getClassifier();
+ extension = artifact.getExtension();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof Gace)) {
+ return false;
+ }
+ Gace gace = (Gace) obj;
+ return Objects.equals(groupId, gace.groupId)
+ && Objects.equals(artifactId, gace.artifactId)
+ && Objects.equals(classifier, gace.classifier)
+ && Objects.equals(extension, gace.extension);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(groupId, artifactId, classifier, extension);
+ }
+
+ @Override
+ public String toString() {
+ return groupId + ":" + artifactId + ":" + classifier + ":" + extension;
+ }
+}
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.karaf.features.internal.model.Features;
Set<Artifact> artifacts = aetherUtil.resolveArtifacts(FeatureUtil.featuresToCoords(features));
artifacts.addAll(featureArtifacts);
+ Map<Gace, String> gaceVersions = new HashMap<>();
for (Artifact artifact : artifacts) {
LOG.debug("Artifact to be installed: {}", artifact.toString());
+ Gace gace = new Gace(artifact);
+ String duplicate = gaceVersions.putIfAbsent(gace, artifact.getVersion());
+ if (duplicate != null && !duplicate.equals(artifact.getVersion())) {
+ LOG.warn("Duplicate versions for {}, {} and {}", gace, duplicate, artifact.getVersion());
+ }
}
if (localRepo != null) {
aetherUtil.installArtifacts(artifacts);