From 22005d6055584ba7a15b7e35d9653065e9fa5d50 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 2 Apr 2025 08:36:03 -0400 Subject: [PATCH 1/9] PathModularizationCache needs to be public because it's an argument to a public constructor in DefaultDependencyResolverResult --- .../java/org/apache/maven/impl/PathModularizationCache.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java index e04ce136da24..17fa19a7c57e 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java @@ -38,7 +38,7 @@ * same dependency is used for different scope. For example a path used for compilation * is typically also used for tests. */ -class PathModularizationCache { +public class PathModularizationCache { /** * Module information for each JAR file or output directories. * Cached when first requested to avoid decoding the module descriptors multiple times. From 6d5b0bcb26285232ee7675f44b48657a58b859df Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:34:29 -0400 Subject: [PATCH 2/9] Hide PathModularizationCache from public API --- .../maven/impl/DefaultDependencyResolverResult.java | 9 ++++++++- .../org/apache/maven/impl/PathModularizationCache.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java index fa7ace6e0d05..81a6132b53e7 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java @@ -102,12 +102,19 @@ public class DefaultDependencyResolverResult implements DependencyResolverResult * to {@link #addDependency(Node, Dependency, Predicate, Path)}. * * @param request the corresponding request - * @param cache cache of module information about each dependency * @param exceptions the exceptions that occurred while building the dependency graph * @param root the root node of the dependency graph * @param count estimated number of dependencies */ public DefaultDependencyResolverResult( + DependencyResolverRequest request, + List exceptions, + Node root, + int count) { + this(request, null, exceptions, root, count); + } + + DefaultDependencyResolverResult( DependencyResolverRequest request, PathModularizationCache cache, List exceptions, diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java index 17fa19a7c57e..e04ce136da24 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java @@ -38,7 +38,7 @@ * same dependency is used for different scope. For example a path used for compilation * is typically also used for tests. */ -public class PathModularizationCache { +class PathModularizationCache { /** * Module information for each JAR file or output directories. * Cached when first requested to avoid decoding the module descriptors multiple times. From 55c6669263b60897273eff6c292fc21e0ca81327 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:35:10 -0400 Subject: [PATCH 3/9] spotless --- .../apache/maven/impl/DefaultDependencyResolverResult.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java index 81a6132b53e7..22308dfdb177 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java @@ -107,14 +107,11 @@ public class DefaultDependencyResolverResult implements DependencyResolverResult * @param count estimated number of dependencies */ public DefaultDependencyResolverResult( - DependencyResolverRequest request, - List exceptions, - Node root, - int count) { + DependencyResolverRequest request, List exceptions, Node root, int count) { this(request, null, exceptions, root, count); } - DefaultDependencyResolverResult( + DefaultDependencyResolverResult( DependencyResolverRequest request, PathModularizationCache cache, List exceptions, From 3ec473140ee48fcab61b3f84c228c14bb535949b Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:40:30 -0400 Subject: [PATCH 4/9] remove public constructor --- .../apache/maven/impl/DefaultDependencyResolverResult.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java index 22308dfdb177..bee27d30c8a6 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java @@ -102,15 +102,11 @@ public class DefaultDependencyResolverResult implements DependencyResolverResult * to {@link #addDependency(Node, Dependency, Predicate, Path)}. * * @param request the corresponding request + * @param cache cache of module information about each dependency * @param exceptions the exceptions that occurred while building the dependency graph * @param root the root node of the dependency graph * @param count estimated number of dependencies */ - public DefaultDependencyResolverResult( - DependencyResolverRequest request, List exceptions, Node root, int count) { - this(request, null, exceptions, root, count); - } - DefaultDependencyResolverResult( DependencyResolverRequest request, PathModularizationCache cache, From 4150c04d65648438e149275c235e172d745ed9af Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:47:07 -0400 Subject: [PATCH 5/9] back to public constructor --- .../apache/maven/internal/impl/DefaultProjectBuilder.java | 2 +- .../apache/maven/impl/DefaultDependencyResolverResult.java | 6 +++++- .../java/org/apache/maven/impl/PathModularizationCache.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java index b51241642aae..599e7f9fccc6 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java @@ -190,7 +190,7 @@ public Optional getDependencyResolverResult() { return Optional.ofNullable(res.getDependencyResolutionResult()) .map(r -> new DefaultDependencyResolverResult( // TODO: this should not be null - null, null, r.getCollectionErrors(), session.getNode(r.getDependencyGraph()), 0)); + null, r.getCollectionErrors(), session.getNode(r.getDependencyGraph()), 0)); } }; } catch (ProjectBuildingException e) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java index bee27d30c8a6..22308dfdb177 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java @@ -102,11 +102,15 @@ public class DefaultDependencyResolverResult implements DependencyResolverResult * to {@link #addDependency(Node, Dependency, Predicate, Path)}. * * @param request the corresponding request - * @param cache cache of module information about each dependency * @param exceptions the exceptions that occurred while building the dependency graph * @param root the root node of the dependency graph * @param count estimated number of dependencies */ + public DefaultDependencyResolverResult( + DependencyResolverRequest request, List exceptions, Node root, int count) { + this(request, null, exceptions, root, count); + } + DefaultDependencyResolverResult( DependencyResolverRequest request, PathModularizationCache cache, diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java index e04ce136da24..17fa19a7c57e 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java @@ -38,7 +38,7 @@ * same dependency is used for different scope. For example a path used for compilation * is typically also used for tests. */ -class PathModularizationCache { +public class PathModularizationCache { /** * Module information for each JAR file or output directories. * Cached when first requested to avoid decoding the module descriptors multiple times. From fd4dbc4b5041699eca0999f466ec26ca93755211 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:48:12 -0400 Subject: [PATCH 6/9] remove public --- .../java/org/apache/maven/impl/PathModularizationCache.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java index 17fa19a7c57e..e04ce136da24 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/PathModularizationCache.java @@ -38,7 +38,7 @@ * same dependency is used for different scope. For example a path used for compilation * is typically also used for tests. */ -public class PathModularizationCache { +class PathModularizationCache { /** * Module information for each JAR file or output directories. * Cached when first requested to avoid decoding the module descriptors multiple times. From e3ac3891714a4202a3a597d077837eed8fde8a84 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:52:55 -0400 Subject: [PATCH 7/9] remove TODO --- .../org/apache/maven/internal/impl/DefaultProjectBuilder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java index 599e7f9fccc6..62ae3b9db97d 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java @@ -189,7 +189,6 @@ public Severity getSeverity() { public Optional getDependencyResolverResult() { return Optional.ofNullable(res.getDependencyResolutionResult()) .map(r -> new DefaultDependencyResolverResult( - // TODO: this should not be null null, r.getCollectionErrors(), session.getNode(r.getDependencyGraph()), 0)); } }; From 36050c7ae22fa8a5c8fb73c76eee8d9fbca405c0 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 09:56:36 -0400 Subject: [PATCH 8/9] add TODO --- .../org/apache/maven/impl/DefaultDependencyResolverResult.java | 1 + 1 file changed, 1 insertion(+) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java index 22308dfdb177..36ad985bfef5 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java @@ -108,6 +108,7 @@ public class DefaultDependencyResolverResult implements DependencyResolverResult */ public DefaultDependencyResolverResult( DependencyResolverRequest request, List exceptions, Node root, int count) { + // TODO pass a new cache instead of null? this(request, null, exceptions, root, count); } From f12ffd429f65c138d5b28a994108fc6bd06a110d Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sat, 19 Apr 2025 10:05:26 -0400 Subject: [PATCH 9/9] no null caaches --- .../maven/impl/DefaultDependencyResolverResult.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java index 36ad985bfef5..742014a7527a 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolverResult.java @@ -108,8 +108,7 @@ public class DefaultDependencyResolverResult implements DependencyResolverResult */ public DefaultDependencyResolverResult( DependencyResolverRequest request, List exceptions, Node root, int count) { - // TODO pass a new cache instead of null? - this(request, null, exceptions, root, count); + this(request, new PathModularizationCache(), exceptions, root, count); } DefaultDependencyResolverResult( @@ -119,7 +118,11 @@ public DefaultDependencyResolverResult( Node root, int count) { this.request = request; - this.cache = cache; + if (cache == null) { + this.cache = new PathModularizationCache(); + } else { + this.cache = cache; + } this.exceptions = exceptions; this.root = root; nodes = new ArrayList<>(count);