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 java.util.Collection;
22 import java.util.List;
23 import java.util.Objects;
24
25 import org.apache.maven.api.ArtifactCoordinates;
26 import org.apache.maven.api.RemoteRepository;
27 import org.apache.maven.api.Session;
28 import org.apache.maven.api.annotations.Experimental;
29 import org.apache.maven.api.annotations.Immutable;
30 import org.apache.maven.api.annotations.Nonnull;
31 import org.apache.maven.api.annotations.NotThreadSafe;
32 import org.apache.maven.api.annotations.Nullable;
33
34 import static java.util.Objects.requireNonNull;
35
36
37
38
39
40
41 @Experimental
42 @Immutable
43 public interface ArtifactResolverRequest extends RepositoryAwareRequest {
44
45 @Nonnull
46 Collection<? extends ArtifactCoordinates> getCoordinates();
47
48 @Nonnull
49 static ArtifactResolverRequestBuilder builder() {
50 return new ArtifactResolverRequestBuilder();
51 }
52
53 @Nonnull
54 static ArtifactResolverRequest build(
55 @Nonnull Session session, @Nonnull Collection<? extends ArtifactCoordinates> coordinates) {
56 return builder()
57 .session(requireNonNull(session, "session cannot be null"))
58 .coordinates(requireNonNull(coordinates, "coordinates cannot be null"))
59 .build();
60 }
61
62 @Nonnull
63 static ArtifactResolverRequest build(
64 @Nonnull Session session,
65 @Nonnull Collection<? extends ArtifactCoordinates> coordinates,
66 List<RemoteRepository> repositories) {
67 return builder()
68 .session(requireNonNull(session, "session cannot be null"))
69 .coordinates(requireNonNull(coordinates, "coordinates cannot be null"))
70 .repositories(repositories)
71 .build();
72 }
73
74 @NotThreadSafe
75 class ArtifactResolverRequestBuilder {
76 Session session;
77 RequestTrace trace;
78 Collection<? extends ArtifactCoordinates> coordinates;
79 List<RemoteRepository> repositories;
80
81 ArtifactResolverRequestBuilder() {}
82
83 @Nonnull
84 public ArtifactResolverRequestBuilder session(Session session) {
85 this.session = session;
86 return this;
87 }
88
89 @Nonnull
90 public ArtifactResolverRequestBuilder trace(RequestTrace trace) {
91 this.trace = trace;
92 return this;
93 }
94
95 @Nonnull
96 public ArtifactResolverRequestBuilder coordinates(Collection<? extends ArtifactCoordinates> coordinates) {
97 this.coordinates = coordinates;
98 return this;
99 }
100
101 @Nonnull
102 public ArtifactResolverRequestBuilder repositories(List<RemoteRepository> repositories) {
103 this.repositories = repositories;
104 return this;
105 }
106
107 @Nonnull
108 public ArtifactResolverRequest build() {
109 return new DefaultArtifactResolverRequest(session, trace, coordinates, repositories);
110 }
111
112 private static class DefaultArtifactResolverRequest extends BaseRequest<Session>
113 implements ArtifactResolverRequest {
114 @Nonnull
115 private final Collection<? extends ArtifactCoordinates> coordinates;
116
117 @Nullable
118 private final List<RemoteRepository> repositories;
119
120 DefaultArtifactResolverRequest(
121 @Nonnull Session session,
122 @Nullable RequestTrace trace,
123 @Nonnull Collection<? extends ArtifactCoordinates> coordinates,
124 @Nonnull List<RemoteRepository> repositories) {
125 super(session, trace);
126 this.coordinates = List.copyOf(requireNonNull(coordinates, "coordinates cannot be null"));
127 this.repositories = validate(repositories);
128 }
129
130 @Nonnull
131 @Override
132 public Collection<? extends ArtifactCoordinates> getCoordinates() {
133 return coordinates;
134 }
135
136 @Nullable
137 @Override
138 public List<RemoteRepository> getRepositories() {
139 return repositories;
140 }
141
142 @Override
143 public boolean equals(Object o) {
144 return o instanceof DefaultArtifactResolverRequest that
145 && Objects.equals(coordinates, that.coordinates)
146 && Objects.equals(repositories, that.repositories);
147 }
148
149 @Override
150 public int hashCode() {
151 return Objects.hash(coordinates, repositories);
152 }
153
154 @Override
155 @Nonnull
156 public String toString() {
157 return "ArtifactResolverRequest[" + "coordinates="
158 + coordinates + ", repositories="
159 + repositories + ']';
160 }
161 }
162 }
163 }