1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.api.services;
20
21 import static org.apache.maven.api.services.BaseRequest.nonNull;
22
23 import java.util.Collection;
24 import org.apache.maven.api.ArtifactCoordinate;
25 import org.apache.maven.api.Session;
26 import org.apache.maven.api.annotations.Experimental;
27 import org.apache.maven.api.annotations.Immutable;
28 import org.apache.maven.api.annotations.Nonnull;
29 import org.apache.maven.api.annotations.NotThreadSafe;
30
31
32
33
34
35
36 @Experimental
37 @Immutable
38 public interface ArtifactResolverRequest {
39 @Nonnull
40 Session getSession();
41
42 @Nonnull
43 Collection<? extends ArtifactCoordinate> getCoordinates();
44
45 @Nonnull
46 static ArtifactResolverRequestBuilder builder() {
47 return new ArtifactResolverRequestBuilder();
48 }
49
50 @Nonnull
51 static ArtifactResolverRequest build(
52 @Nonnull Session session, @Nonnull Collection<? extends ArtifactCoordinate> coordinates) {
53 return builder()
54 .session(nonNull(session, "session cannot be null"))
55 .coordinates(nonNull(coordinates, "coordinates cannot be null"))
56 .build();
57 }
58
59 @NotThreadSafe
60 class ArtifactResolverRequestBuilder {
61 Session session;
62 Collection<? extends ArtifactCoordinate> coordinates;
63
64 ArtifactResolverRequestBuilder() {}
65
66 @Nonnull
67 public ArtifactResolverRequestBuilder session(Session session) {
68 this.session = session;
69 return this;
70 }
71
72 @Nonnull
73 public ArtifactResolverRequestBuilder coordinates(Collection<? extends ArtifactCoordinate> coordinates) {
74 this.coordinates = coordinates;
75 return this;
76 }
77
78 @Nonnull
79 public ArtifactResolverRequest build() {
80 return new DefaultArtifactResolverRequest(session, coordinates);
81 }
82
83 private static class DefaultArtifactResolverRequest extends BaseRequest implements ArtifactResolverRequest {
84 @Nonnull
85 private final Collection<? extends ArtifactCoordinate> coordinates;
86
87 DefaultArtifactResolverRequest(
88 @Nonnull Session session, @Nonnull Collection<? extends ArtifactCoordinate> coordinates) {
89 super(session);
90 this.coordinates = unmodifiable(nonNull(coordinates, "coordinates cannot be null"));
91 }
92
93 @Nonnull
94 @Override
95 public Collection<? extends ArtifactCoordinate> getCoordinates() {
96 return coordinates;
97 }
98 }
99 }
100 }