Skip to content

Commit 716f251

Browse files
Add BOM-related methods to coursierapi.Fetch
1 parent 77e591d commit 716f251

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

interface/src/main/java/coursierapi/Fetch.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
public final class Fetch {
1010

1111
private final List<Dependency> dependencies;
12+
private final List<Dependency> bomDependencies;
1213
private final List<Repository> repositories;
1314
private Cache cache;
1415
private Boolean mainArtifacts;
@@ -19,6 +20,7 @@ public final class Fetch {
1920

2021
private Fetch() {
2122
dependencies = new ArrayList<>();
23+
bomDependencies = new ArrayList<>();
2224
repositories = new ArrayList<>(Arrays.asList(ApiHelper.defaultRepositories()));
2325
cache = Cache.create();
2426
mainArtifacts = null;
@@ -33,6 +35,7 @@ public boolean equals(Object obj) {
3335
if (obj instanceof Fetch) {
3436
Fetch other = (Fetch) obj;
3537
return this.dependencies.equals(other.dependencies) &&
38+
this.bomDependencies.equals(other.bomDependencies) &&
3639
this.repositories.equals(other.repositories) &&
3740
this.cache.equals(other.cache) &&
3841
Objects.equals(this.mainArtifacts, other.mainArtifacts) &&
@@ -46,7 +49,7 @@ public boolean equals(Object obj) {
4649

4750
@Override
4851
public int hashCode() {
49-
return 37 * (37 * (37 * (37 * (37 * (37 * (37 * (17 + dependencies.hashCode()) + repositories.hashCode()) + cache.hashCode()) + Objects.hashCode(mainArtifacts)) + classifiers.hashCode()) + Objects.hashCode(fetchCache)) + resolutionParams.hashCode()) + Objects.hashCode(artifactTypes);
52+
return 37 * (37 * (37 * (37 * (37 * (37 * (37 * (37 * (17 + dependencies.hashCode()) + bomDependencies.hashCode()) + repositories.hashCode()) + cache.hashCode()) + Objects.hashCode(mainArtifacts)) + classifiers.hashCode()) + Objects.hashCode(fetchCache)) + resolutionParams.hashCode()) + Objects.hashCode(artifactTypes);
5053
}
5154

5255
@Override
@@ -56,6 +59,11 @@ public String toString() {
5659
b.append(dep.toString());
5760
b.append(", ");
5861
}
62+
b.append("], bomDependencies=[");
63+
for (Dependency bomDep : bomDependencies) {
64+
b.append(bomDep.toString());
65+
b.append(", ");
66+
}
5967
b.append("], repositories=[");
6068
for (Repository repo : repositories) {
6169
b.append(repo.toString());
@@ -111,6 +119,17 @@ public Fetch withDependencies(Dependency... dependencies) {
111119
return this;
112120
}
113121

122+
public Fetch addBomDependencies(Dependency... bomDependencies) {
123+
this.bomDependencies.addAll(Arrays.asList(bomDependencies));
124+
return this;
125+
}
126+
127+
public Fetch withBomDependencies(Dependency... bomDependencies) {
128+
this.bomDependencies.clear();
129+
this.bomDependencies.addAll(Arrays.asList(bomDependencies));
130+
return this;
131+
}
132+
114133
public Fetch addRepositories(Repository... repositories) {
115134
this.repositories.addAll(Arrays.asList(repositories));
116135
return this;
@@ -195,6 +214,10 @@ public List<Dependency> getDependencies() {
195214
return Collections.unmodifiableList(dependencies);
196215
}
197216

217+
public List<Dependency> getBomDependencies() {
218+
return Collections.unmodifiableList(bomDependencies);
219+
}
220+
198221
public List<Repository> getRepositories() {
199222
return Collections.unmodifiableList(repositories);
200223
}

interface/src/main/scala/coursier/internal/api/ApiHelper.scala

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,12 @@ object ApiHelper {
294294
.map(dependency)
295295
.toVector
296296

297+
val bomDependencies = fetch
298+
.getBomDependencies
299+
.asScala
300+
.map(dependency)
301+
.toVector
302+
297303
val repositories = fetch
298304
.getRepositories
299305
.asScala
@@ -311,17 +317,22 @@ object ApiHelper {
311317

312318
val params = resolutionParams(fetch.getResolutionParams)
313319

314-
var f = Fetch()
320+
// temporarily creating a Resolve and and Artifacts manually,
321+
// to work around missing BOM-related methods on Fetch
322+
val resolve = Resolve()
315323
.withDependencies(dependencies)
324+
.withBomDependencies(bomDependencies)
316325
.withRepositories(repositories)
317326
.withCache(cache0)
327+
.withResolutionParams(params)
328+
var artifacts = Artifacts()
318329
.withMainArtifacts(fetch.getMainArtifacts)
319330
.withClassifiers(classifiers)
320-
.withFetchCache(Option(fetch.getFetchCacheIKnowWhatImDoing))
321-
.withResolutionParams(params)
322331
if (fetch.getArtifactTypes != null)
323-
f = f.withArtifactTypes(fetch.getArtifactTypes.asScala.toSet[String].map(Type(_)))
324-
f
332+
artifacts = artifacts.withArtifactTypes(fetch.getArtifactTypes.asScala.toSet[String].map(Type(_)))
333+
334+
Fetch(resolve, artifacts, None)
335+
.withFetchCache(Option(fetch.getFetchCacheIKnowWhatImDoing))
325336
}
326337

327338
def fetch(fetch: Fetch[Task]): coursierapi.Fetch = {

0 commit comments

Comments
 (0)