Skip to content

Commit 12b3175

Browse files
Add BOM-related methods to coursierapi.Fetch
1 parent 4d4610f commit 12b3175

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

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

Lines changed: 20 additions & 0 deletions
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;
@@ -34,6 +36,7 @@ public boolean equals(Object o) {
3436
if (!(o instanceof Fetch)) return false;
3537
Fetch fetch = (Fetch) o;
3638
return Objects.equals(dependencies, fetch.dependencies) &&
39+
Objects.equals(bomDependencies, fetch.bomDependencies) &&
3740
Objects.equals(repositories, fetch.repositories) &&
3841
Objects.equals(cache, fetch.cache) &&
3942
Objects.equals(mainArtifacts, fetch.mainArtifacts) &&
@@ -47,6 +50,7 @@ public boolean equals(Object o) {
4750
public int hashCode() {
4851
return Objects.hash(
4952
dependencies,
53+
bomDependencies,
5054
repositories,
5155
cache,
5256
mainArtifacts,
@@ -60,6 +64,7 @@ public int hashCode() {
6064
public String toString() {
6165
return "Fetch{" +
6266
"dependencies=" + dependencies +
67+
", bomDependencies=" + bomDependencies +
6368
", repositories=" + repositories +
6469
", cache=" + cache +
6570
", mainArtifacts=" + mainArtifacts +
@@ -86,6 +91,17 @@ public Fetch withDependencies(Dependency... dependencies) {
8691
return this;
8792
}
8893

94+
public Fetch addBomDependencies(Dependency... bomDependencies) {
95+
this.bomDependencies.addAll(Arrays.asList(bomDependencies));
96+
return this;
97+
}
98+
99+
public Fetch withBomDependencies(Dependency... bomDependencies) {
100+
this.bomDependencies.clear();
101+
this.bomDependencies.addAll(Arrays.asList(bomDependencies));
102+
return this;
103+
}
104+
89105
public Fetch addRepositories(Repository... repositories) {
90106
this.repositories.addAll(Arrays.asList(repositories));
91107
return this;
@@ -170,6 +186,10 @@ public List<Dependency> getDependencies() {
170186
return Collections.unmodifiableList(dependencies);
171187
}
172188

189+
public List<Dependency> getBomDependencies() {
190+
return Collections.unmodifiableList(bomDependencies);
191+
}
192+
173193
public List<Repository> getRepositories() {
174194
return Collections.unmodifiableList(repositories);
175195
}

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)