This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push: new f264c47e [MRESOLVER-493] Support premanaged of optional, exclusions and properties by DependencyGraphDumper f264c47e is described below commit f264c47e0f3eb829d33543d9be724706459eac29 Author: Slawomir Jaranowski <s.jaranow...@gmail.com> AuthorDate: Wed Feb 7 00:11:10 2024 +0100 [MRESOLVER-493] Support premanaged of optional, exclusions and properties by DependencyGraphDumper --- .../util/graph/visitor/DependencyGraphDumper.java | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/DependencyGraphDumper.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/DependencyGraphDumper.java index f54d6ba3..3ffa4486 100644 --- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/DependencyGraphDumper.java +++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/DependencyGraphDumper.java @@ -19,14 +19,18 @@ package org.eclipse.aether.util.graph.visitor; import java.util.ArrayDeque; +import java.util.Collection; import java.util.Deque; import java.util.Iterator; +import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.graph.DependencyVisitor; +import org.eclipse.aether.graph.Exclusion; import org.eclipse.aether.util.artifact.ArtifactIdUtils; import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; import org.eclipse.aether.util.graph.transformer.ConflictResolver; @@ -111,6 +115,28 @@ public class DependencyGraphDumper implements DependencyVisitor { if (premanaged != null && d != null && !premanaged.equals(d.getScope())) { buffer.append(" (scope managed from ").append(premanaged).append(")"); } + + Boolean premanagedOptional = DependencyManagerUtils.getPremanagedOptional(node); + if (premanagedOptional != null && d != null && !premanagedOptional.equals(d.getOptional())) { + buffer.append(" (optionality managed from ") + .append(premanagedOptional) + .append(")"); + } + + Collection<Exclusion> premanagedExclusions = DependencyManagerUtils.getPremanagedExclusions(node); + if (premanagedExclusions != null && d != null && !equals(premanagedExclusions, d.getExclusions())) { + buffer.append(" (exclusions managed from ") + .append(premanagedExclusions) + .append(")"); + } + + Map<String, String> premanagedProperties = DependencyManagerUtils.getPremanagedProperties(node); + if (premanagedProperties != null && !equals(premanagedProperties, a.getProperties())) { + buffer.append(" (properties managed from ") + .append(premanagedProperties) + .append(")"); + } + DependencyNode winner = (DependencyNode) node.getData().get(ConflictResolver.NODE_DATA_WINNER); if (winner != null) { if (ArtifactIdUtils.equalsId(a, winner.getArtifact())) { @@ -128,4 +154,15 @@ public class DependencyGraphDumper implements DependencyVisitor { } return buffer.toString(); } + + private boolean equals(Collection<Exclusion> c1, Collection<Exclusion> c2) { + return c1 != null && c2 != null && c1.size() == c2.size() && c1.containsAll(c2); + } + + private boolean equals(Map<String, String> m1, Map<String, String> m2) { + return m1 != null + && m2 != null + && m1.size() == m2.size() + && m1.entrySet().stream().allMatch(entry -> Objects.equals(m2.get(entry.getKey()), entry.getValue())); + } }