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