Skip to content

Commit 686a491

Browse files
authored
Cache the resolved dependencies result rather than recomputing it every time (#6295)
1 parent 89850fb commit 686a491

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

rewrite-gradle/src/main/java/org/openrewrite/gradle/marker/GradleDependencyConfiguration.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,10 @@ public List<ResolvedDependency> getDirectResolved() {
110110
* The list of all dependencies resolved for this configuration, including transitive dependencies.
111111
*/
112112
public List<ResolvedDependency> getResolved() {
113-
List<ResolvedDependency> resolved = new ArrayList<>(getDirectResolved());
114-
Map<GroupArtifact, ResolvedDependency> alreadyResolved = new HashMap<>();
115-
resolveTransitiveDependencies(resolved, alreadyResolved);
116-
return new ArrayList<>(alreadyResolved.values());
113+
if (resolutionContext.isResolveRequired()) {
114+
resolutionContext.resolve();
115+
}
116+
return resolutionContext.getResolved();
117117
}
118118

119119
/**
@@ -162,12 +162,11 @@ public GradleDependencyConfiguration markForReResolution(List<MavenRepository> r
162162
return this;
163163
}
164164
private class LazyResolutionContext {
165-
@Getter
166-
private boolean resolveRequired;
167-
@Nullable
168-
private List<MavenRepository> repositories;
169-
@Nullable
170-
private ExecutionContext ctx;
165+
private @Getter boolean resolveRequired;
166+
private @Nullable List<MavenRepository> repositories;
167+
private @Nullable ExecutionContext ctx;
168+
private @Nullable List<ResolvedDependency> resolved;
169+
171170
public void markForReResolution(List<MavenRepository> repositories, ExecutionContext ctx) {
172171
this.repositories = repositories;
173172
this.resolveRequired = true;
@@ -233,11 +232,22 @@ public void resolve() {
233232
}
234233
}
235234
unsafeSetDirectResolved(newResolved);
235+
resolved = null;
236236
}
237237
resolveRequired = false;
238238
repositories = null;
239239
ctx = null;
240240
}
241+
242+
public List<ResolvedDependency> getResolved() {
243+
if (resolved == null) {
244+
List<ResolvedDependency> newResolved = new ArrayList<>(getDirectResolved());
245+
Map<GroupArtifact, ResolvedDependency> alreadyResolved = new HashMap<>();
246+
resolveTransitiveDependencies(newResolved, alreadyResolved);
247+
resolved = new ArrayList<>(alreadyResolved.values());
248+
}
249+
return resolved;
250+
}
241251
}
242252

243253
private static ResolvedDependency newer(ResolvedDependency a, ResolvedDependency b) {

0 commit comments

Comments
 (0)