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.Objects;
22
23 import org.apache.maven.api.ArtifactCoordinates;
24 import org.apache.maven.api.Session;
25 import org.apache.maven.api.annotations.Experimental;
26 import org.apache.maven.api.annotations.Immutable;
27 import org.apache.maven.api.annotations.Nonnull;
28 import org.apache.maven.api.annotations.NotThreadSafe;
29
30 import static java.util.Objects.requireNonNull;
31
32
33
34
35
36
37 @Experimental
38 @Immutable
39 public interface ArtifactCoordinatesFactoryRequest extends Request<Session> {
40
41 String getGroupId();
42
43 String getArtifactId();
44
45 String getVersion();
46
47 String getClassifier();
48
49 String getExtension();
50
51 String getType();
52
53 String getCoordinatesString();
54
55 @Nonnull
56 static ArtifactCoordinatesFactoryRequest build(
57 @Nonnull Session session, String groupId, String artifactId, String version, String extension) {
58 return ArtifactCoordinatesFactoryRequest.builder()
59 .session(requireNonNull(session, "session"))
60 .groupId(groupId)
61 .artifactId(artifactId)
62 .version(version)
63 .extension(extension)
64 .build();
65 }
66
67 @Nonnull
68 static ArtifactCoordinatesFactoryRequest build(
69 @Nonnull Session session,
70 String groupId,
71 String artifactId,
72 String version,
73 String classifier,
74 String extension,
75 String type) {
76 return ArtifactCoordinatesFactoryRequest.builder()
77 .session(requireNonNull(session, "session"))
78 .groupId(groupId)
79 .artifactId(artifactId)
80 .version(version)
81 .classifier(classifier)
82 .extension(extension)
83 .type(type)
84 .build();
85 }
86
87 @Nonnull
88 static ArtifactCoordinatesFactoryRequest build(@Nonnull Session session, @Nonnull String coordinateString) {
89 return ArtifactCoordinatesFactoryRequest.builder()
90 .session(requireNonNull(session, "session"))
91 .coordinateString(requireNonNull(coordinateString, "coordinateString"))
92 .build();
93 }
94
95 @Nonnull
96 static ArtifactCoordinatesFactoryRequest build(@Nonnull Session session, @Nonnull ArtifactCoordinates coordinates) {
97 return ArtifactCoordinatesFactoryRequest.builder()
98 .session(requireNonNull(session, "session"))
99 .groupId(requireNonNull(coordinates, "coordinates").getGroupId())
100 .artifactId(coordinates.getArtifactId())
101 .classifier(coordinates.getClassifier())
102 .version(coordinates.getVersionConstraint().asString())
103 .extension(coordinates.getExtension())
104 .build();
105 }
106
107 static ArtifactFactoryRequestBuilder builder() {
108 return new ArtifactFactoryRequestBuilder();
109 }
110
111 @NotThreadSafe
112 class ArtifactFactoryRequestBuilder {
113 private Session session;
114 private RequestTrace trace;
115 private String groupId;
116 private String artifactId;
117 private String version;
118 private String classifier;
119 private String extension;
120 private String type;
121 private String coordinateString;
122
123 ArtifactFactoryRequestBuilder() {}
124
125 public ArtifactFactoryRequestBuilder session(Session session) {
126 this.session = session;
127 return this;
128 }
129
130 public ArtifactFactoryRequestBuilder trace(RequestTrace trace) {
131 this.trace = trace;
132 return this;
133 }
134
135 public ArtifactFactoryRequestBuilder groupId(String groupId) {
136 this.groupId = groupId;
137 return this;
138 }
139
140 public ArtifactFactoryRequestBuilder artifactId(String artifactId) {
141 this.artifactId = artifactId;
142 return this;
143 }
144
145 public ArtifactFactoryRequestBuilder version(String version) {
146 this.version = version;
147 return this;
148 }
149
150 public ArtifactFactoryRequestBuilder classifier(String classifier) {
151 this.classifier = classifier;
152 return this;
153 }
154
155 public ArtifactFactoryRequestBuilder extension(String extension) {
156 this.extension = extension;
157 return this;
158 }
159
160 public ArtifactFactoryRequestBuilder type(String type) {
161 this.type = type;
162 return this;
163 }
164
165 public ArtifactFactoryRequestBuilder coordinateString(String coordinateString) {
166 this.coordinateString = coordinateString;
167 return this;
168 }
169
170 public ArtifactCoordinatesFactoryRequest build() {
171 return new DefaultArtifactFactoryRequestArtifact(
172 session, trace, groupId, artifactId, version, classifier, extension, type, coordinateString);
173 }
174
175 private static class DefaultArtifactFactoryRequestArtifact extends BaseRequest<Session>
176 implements ArtifactCoordinatesFactoryRequest {
177 private final String groupId;
178 private final String artifactId;
179 private final String version;
180 private final String classifier;
181 private final String extension;
182 private final String type;
183 private final String coordinatesString;
184
185 @SuppressWarnings("checkstyle:ParameterNumber")
186 DefaultArtifactFactoryRequestArtifact(
187 @Nonnull Session session,
188 RequestTrace trace,
189 String groupId,
190 String artifactId,
191 String version,
192 String classifier,
193 String extension,
194 String type,
195 String coordinatesString) {
196 super(session, trace);
197 this.groupId = groupId;
198 this.artifactId = artifactId;
199 this.version = version;
200 this.classifier = classifier;
201 this.extension = extension;
202 this.type = type;
203 this.coordinatesString = coordinatesString;
204 }
205
206 @Override
207 public String getGroupId() {
208 return groupId;
209 }
210
211 @Override
212 public String getArtifactId() {
213 return artifactId;
214 }
215
216 @Override
217 public String getVersion() {
218 return version;
219 }
220
221 @Override
222 public String getClassifier() {
223 return classifier;
224 }
225
226 @Override
227 public String getExtension() {
228 return extension;
229 }
230
231 @Override
232 public String getType() {
233 return type;
234 }
235
236 public String getCoordinatesString() {
237 return coordinatesString;
238 }
239
240 @Override
241 public boolean equals(Object o) {
242 return o instanceof DefaultArtifactFactoryRequestArtifact that
243 && Objects.equals(groupId, that.groupId)
244 && Objects.equals(artifactId, that.artifactId)
245 && Objects.equals(version, that.version)
246 && Objects.equals(classifier, that.classifier)
247 && Objects.equals(extension, that.extension)
248 && Objects.equals(type, that.type)
249 && Objects.equals(coordinatesString, that.coordinatesString);
250 }
251
252 @Override
253 public int hashCode() {
254 return Objects.hash(groupId, artifactId, version, classifier, extension, type, coordinatesString);
255 }
256
257 @Override
258 public String toString() {
259 return "ArtifactFactoryRequestArtifact[" + "groupId='"
260 + groupId + '\'' + ", artifactId='"
261 + artifactId + '\'' + ", version='"
262 + version + '\'' + ", classifier='"
263 + classifier + '\'' + ", extension='"
264 + extension + '\'' + ", type='"
265 + type + '\'' + ", coordinatesString='"
266 + coordinatesString + '\'' + ']';
267 }
268 }
269 }
270 }