From 42dacab4edbbf548728447ea481e9f1c71216e4d Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Fri, 24 Mar 2023 22:27:14 +0100 Subject: [PATCH] [MENFORCER-476] Rename ResolveUtil to ResolverUtil --- .../dependency/BanTransitiveDependencies.java | 8 ++-- .../rules/dependency/BannedDependencies.java | 4 +- .../dependency/BannedDependenciesBase.java | 8 ++-- .../dependency/DependencyConvergence.java | 8 ++-- .../rules/dependency/RequireReleaseDeps.java | 4 +- .../dependency/RequireUpperBoundDeps.java | 8 ++-- .../{ResolveUtil.java => ResolverUtil.java} | 38 ++++++++++++++++++- .../dependency/BannedDependenciesTest.java | 6 +-- .../dependency/RequireReleaseDepsTest.java | 20 +++++----- .../dependency/RequireUpperBoundDepsTest.java | 4 +- 10 files changed, 71 insertions(+), 37 deletions(-) rename enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/{ResolveUtil.java => ResolverUtil.java} (82%) diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java index 212d3e4d..4bf2b6ef 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java @@ -68,12 +68,12 @@ public final class BanTransitiveDependencies extends AbstractStandardEnforcerRul private final MavenSession session; - private final ResolveUtil resolveUtil; + private final ResolverUtil resolverUtil; @Inject - public BanTransitiveDependencies(MavenSession session, ResolveUtil resolveUtil) { + public BanTransitiveDependencies(MavenSession session, ResolverUtil resolverUtil) { this.session = Objects.requireNonNull(session); - this.resolveUtil = Objects.requireNonNull(resolveUtil); + this.resolverUtil = Objects.requireNonNull(resolverUtil); } /** @@ -147,7 +147,7 @@ public void execute() throws EnforcerRuleException { .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry)) .collect(Collectors.toSet()); - DependencyNode rootNode = resolveUtil.resolveTransitiveDependencies(); + DependencyNode rootNode = resolverUtil.resolveTransitiveDependencies(); StringBuilder generatedMessage = new StringBuilder(); if (searchTree(rootNode, 0, exclusions, directDependencies, generatedMessage)) { throw new EnforcerRuleException(ofNullable(getMessage()).orElse(generatedMessage.toString())); diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java index 77d2e17b..3a03f5e3 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java @@ -34,8 +34,8 @@ public final class BannedDependencies extends BannedDependenciesBase { @Inject - BannedDependencies(MavenSession session, ResolveUtil resolveUtil) { - super(session, resolveUtil); + BannedDependencies(MavenSession session, ResolverUtil resolverUtil) { + super(session, resolverUtil); } @Override diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java index bed32d11..cc8af237 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java @@ -68,11 +68,11 @@ abstract class BannedDependenciesBase extends AbstractStandardEnforcerRule { private final MavenSession session; - private final ResolveUtil resolveUtil; + private final ResolverUtil resolverUtil; - BannedDependenciesBase(MavenSession session, ResolveUtil resolveUtil) { + BannedDependenciesBase(MavenSession session, ResolverUtil resolverUtil) { this.session = Objects.requireNonNull(session); - this.resolveUtil = Objects.requireNonNull(resolveUtil); + this.resolverUtil = Objects.requireNonNull(resolverUtil); } protected MavenSession getSession() { @@ -103,7 +103,7 @@ public void execute() throws EnforcerRuleException { } } else { StringBuilder messageBuilder = new StringBuilder(); - DependencyNode rootNode = resolveUtil.resolveTransitiveDependenciesVerbose(Collections.emptyList()); + DependencyNode rootNode = resolverUtil.resolveTransitiveDependenciesVerbose(Collections.emptyList()); if (!validate(rootNode, 0, messageBuilder)) { String message = ""; if (getMessage() != null) { diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java index 0c36df7f..2cf8482c 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java @@ -55,17 +55,17 @@ public final class DependencyConvergence extends AbstractStandardEnforcerRule { private DependencyVersionMap dependencyVersionMap; - private final ResolveUtil resolveUtil; + private final ResolverUtil resolverUtil; @Inject - public DependencyConvergence(ResolveUtil resolveUtil) { - this.resolveUtil = Objects.requireNonNull(resolveUtil); + public DependencyConvergence(ResolverUtil resolverUtil) { + this.resolverUtil = Objects.requireNonNull(resolverUtil); } @Override public void execute() throws EnforcerRuleException { - DependencyNode node = resolveUtil.resolveTransitiveDependenciesVerbose(excludedScopes); + DependencyNode node = resolverUtil.resolveTransitiveDependenciesVerbose(excludedScopes); dependencyVersionMap = new DependencyVersionMap().setUniqueVersions(uniqueVersions); node.accept(dependencyVersionMap); diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java index 246ae7c9..48d4e33a 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java @@ -51,8 +51,8 @@ public final class RequireReleaseDeps extends BannedDependenciesBase { private boolean failWhenParentIsSnapshot = true; @Inject - public RequireReleaseDeps(MavenSession session, ResolveUtil resolveUtil) { - super(session, resolveUtil); + public RequireReleaseDeps(MavenSession session, ResolverUtil resolverUtil) { + super(session, resolverUtil); } // Override parent to allow optional ignore of this rule. diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java index 04e35f06..8bc9a113 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java @@ -75,11 +75,11 @@ public final class RequireUpperBoundDeps extends AbstractStandardEnforcerRule { private RequireUpperBoundDepsVisitor upperBoundDepsVisitor; - private final ResolveUtil resolveUtil; + private final ResolverUtil resolverUtil; @Inject - public RequireUpperBoundDeps(ResolveUtil resolveUtil) { - this.resolveUtil = Objects.requireNonNull(resolveUtil); + public RequireUpperBoundDeps(ResolverUtil resolverUtil) { + this.resolverUtil = Objects.requireNonNull(resolverUtil); } /** @@ -102,7 +102,7 @@ public void setIncludes(List includes) { @Override public void execute() throws EnforcerRuleException { DependencyNode node = - resolveUtil.resolveTransitiveDependenciesVerbose(Arrays.asList(SCOPE_TEST, SCOPE_PROVIDED)); + resolverUtil.resolveTransitiveDependenciesVerbose(Arrays.asList(SCOPE_TEST, SCOPE_PROVIDED)); upperBoundDepsVisitor = new RequireUpperBoundDepsVisitor() .setUniqueVersions(uniqueVersions) .setIncludes(includes); diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolveUtil.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolverUtil.java similarity index 82% rename from enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolveUtil.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolverUtil.java index bb0179f0..3bbe8674 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolveUtil.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolverUtil.java @@ -39,8 +39,10 @@ import org.eclipse.aether.collection.DependencyCollectionException; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.graph.DependencyVisitor; import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; import org.eclipse.aether.util.graph.transformer.ConflictResolver; +import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor; import static java.util.Optional.ofNullable; import static org.apache.maven.artifact.Artifact.SCOPE_PROVIDED; @@ -50,7 +52,7 @@ * Resolver helper class. */ @Named -class ResolveUtil { +class ResolverUtil { private final RepositorySystem repositorySystem; @@ -60,7 +62,7 @@ class ResolveUtil { * Default constructor */ @Inject - ResolveUtil(RepositorySystem repositorySystem, MavenSession session) { + ResolverUtil(RepositorySystem repositorySystem, MavenSession session) { this.repositorySystem = Objects.requireNonNull(repositorySystem); this.session = Objects.requireNonNull(session); } @@ -136,4 +138,36 @@ private DependencyNode resolveTransitiveDependencies( throw new EnforcerRuleException("Could not build dependency tree " + e.getLocalizedMessage(), e); } } + + /** + * Dump a {@link DependencyNode} as a tree. + * + * @param rootNode node to inspect + * @return dependency tree as String + */ + public CharSequence dumpTree(DependencyNode rootNode) { + StringBuilder result = new StringBuilder(System.lineSeparator()); + + rootNode.accept(new TreeDependencyVisitor(new DependencyVisitor() { + String indent = ""; + + @Override + public boolean visitEnter(org.eclipse.aether.graph.DependencyNode dependencyNode) { + result.append(indent); + result.append("Node: ").append(dependencyNode); + result.append(" data map: ").append(dependencyNode.getData()); + result.append(System.lineSeparator()); + indent += " "; + return true; + } + + @Override + public boolean visitLeave(org.eclipse.aether.graph.DependencyNode dependencyNode) { + indent = indent.substring(0, indent.length() - 2); + return true; + } + })); + + return result; + } } diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java index b5d7c814..7cba41e9 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java @@ -52,7 +52,7 @@ class BannedDependenciesTest { private MavenSession session; @Mock - private ResolveUtil resolveUtil; + private ResolverUtil resolverUtil; @InjectMocks private BannedDependencies rule; @@ -95,7 +95,7 @@ void excludesAndIncludesDoNotUseTransitiveDependencies() throws Exception { @Test void excludesUseTransitiveDependencies() throws Exception { - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(new DependencyNodeBuilder() .withType(DependencyNodeBuilder.Type.POM) .withChildNode(new DependencyNodeBuilder() @@ -128,7 +128,7 @@ void excludesUseTransitiveDependencies() throws Exception { @Test void excludesAndIncludesUseTransitiveDependencies() throws Exception { - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(new DependencyNodeBuilder() .withType(DependencyNodeBuilder.Type.POM) .withChildNode(new DependencyNodeBuilder() diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java index b3377ed3..3e697495 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java @@ -57,7 +57,7 @@ class RequireReleaseDepsTest { private MavenSession session; @Mock - private ResolveUtil resolveUtil; + private ResolverUtil resolverUtil; @InjectMocks private RequireReleaseDeps rule; @@ -76,12 +76,12 @@ void testSearchNonTransitive() throws IOException { assertThatCode(rule::execute).doesNotThrowAnyException(); - verifyNoInteractions(resolveUtil); + verifyNoInteractions(resolverUtil); } @Test void testSearchTransitiveMultipleFailures() throws Exception { - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(getDependencyNodeWithMultipleSnapshots()); rule.setSearchTransitive(true); @@ -96,7 +96,7 @@ void testSearchTransitiveMultipleFailures() throws Exception { @Test void testSearchTransitiveNoFailures() throws Exception { when(session.getCurrentProject()).thenReturn(project); - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(new DependencyNodeBuilder().build()); rule.setSearchTransitive(true); @@ -111,13 +111,13 @@ void testShouldFailOnlyWhenRelease() throws Exception { assertThatCode(rule::execute).doesNotThrowAnyException(); - verifyNoInteractions(resolveUtil); + verifyNoInteractions(resolverUtil); } @Test void testWildcardExcludeTests() throws Exception { when(session.getCurrentProject()).thenReturn(project); - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(getDependencyNodeWithMultipleTestSnapshots()); rule.setExcludes(Collections.singletonList("*:*:*:*:test")); @@ -129,7 +129,7 @@ void testWildcardExcludeTests() throws Exception { @Test void testWildcardExcludeAll() throws Exception { when(session.getCurrentProject()).thenReturn(project); - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(getDependencyNodeWithMultipleTestSnapshots()); rule.setExcludes(Collections.singletonList("*")); @@ -140,7 +140,7 @@ void testWildcardExcludeAll() throws Exception { @Test void testExcludesAndIncludes() throws Exception { - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(getDependencyNodeWithMultipleTestSnapshots()); rule.setExcludes(Collections.singletonList("*")); @@ -167,7 +167,7 @@ void testId() { void testFailWhenParentIsSnapshot() throws Exception { when(session.getCurrentProject()).thenReturn(project); when(project.getParentArtifact()).thenReturn(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(new DependencyNodeBuilder().build()); rule.setFailWhenParentIsSnapshot(true); @@ -181,7 +181,7 @@ void testFailWhenParentIsSnapshot() throws Exception { void parentShouldBeExcluded() throws Exception { when(session.getCurrentProject()).thenReturn(project); when(project.getParentArtifact()).thenReturn(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(new DependencyNodeBuilder().build()); rule.setFailWhenParentIsSnapshot(true); diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java index 07a56df1..a4aa4744 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java @@ -34,7 +34,7 @@ class RequireUpperBoundDepsTest { @Mock - private ResolveUtil resolveUtil; + private ResolverUtil resolverUtil; @InjectMocks private RequireUpperBoundDeps rule; @@ -42,7 +42,7 @@ class RequireUpperBoundDepsTest { @Test void testRule() throws Exception { - when(resolveUtil.resolveTransitiveDependenciesVerbose(anyList())) + when(resolverUtil.resolveTransitiveDependenciesVerbose(anyList())) .thenReturn(new DependencyNodeBuilder() .withType(DependencyNodeBuilder.Type.POM) .withChildNode(new DependencyNodeBuilder()