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.nio.file.Path;
22 import java.util.List;
23 import java.util.Objects;
24 import java.util.Optional;
25
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
42
43
44 @Experimental
45 @Immutable
46 public interface ProjectBuilderRequest extends Request<Session> {
47
48
49
50
51
52
53
54 @Nonnull
55 Optional<Path> getPath();
56
57
58
59
60
61
62
63
64 @Nonnull
65 Optional<Source> getSource();
66
67
68
69
70
71
72
73 boolean isAllowStubModel();
74
75
76
77
78
79
80
81 boolean isRecursive();
82
83
84
85
86
87
88
89
90 boolean isProcessPlugins();
91
92
93
94
95
96
97
98 @Nullable
99 List<RemoteRepository> getRepositories();
100
101
102
103
104
105
106
107
108
109 @Nonnull
110 static ProjectBuilderRequest build(@Nonnull Session session, @Nonnull Source source) {
111 return builder()
112 .session(requireNonNull(session, "session cannot be null"))
113 .source(requireNonNull(source, "source cannot be null"))
114 .build();
115 }
116
117
118
119
120
121
122
123
124
125 @Nonnull
126 static ProjectBuilderRequest build(@Nonnull Session session, @Nonnull Path path) {
127 return builder()
128 .session(requireNonNull(session, "session cannot be null"))
129 .path(requireNonNull(path, "path cannot be null"))
130 .build();
131 }
132
133
134
135
136
137
138 @Nonnull
139 static ProjectBuilderRequestBuilder builder() {
140 return new ProjectBuilderRequestBuilder();
141 }
142
143
144
145
146
147 @NotThreadSafe
148 class ProjectBuilderRequestBuilder {
149 Session session;
150 RequestTrace trace;
151 Path path;
152 Source source;
153 boolean allowStubModel;
154 boolean recursive;
155 boolean processPlugins = true;
156 List<RemoteRepository> repositories;
157
158 ProjectBuilderRequestBuilder() {}
159
160
161
162
163
164
165
166 public ProjectBuilderRequestBuilder session(Session session) {
167 this.session = session;
168 return this;
169 }
170
171
172
173
174
175
176
177
178 public ProjectBuilderRequestBuilder trace(RequestTrace trace) {
179 this.trace = trace;
180 return this;
181 }
182
183
184
185
186
187
188
189
190 public ProjectBuilderRequestBuilder path(Path path) {
191 this.path = path;
192 return this;
193 }
194
195
196
197
198
199
200
201
202
203 public ProjectBuilderRequestBuilder source(Source source) {
204 this.source = source;
205 return this;
206 }
207
208
209
210
211
212
213
214
215
216 public ProjectBuilderRequestBuilder processPlugins(boolean processPlugins) {
217 this.processPlugins = processPlugins;
218 return this;
219 }
220
221
222
223
224
225
226
227
228 public ProjectBuilderRequestBuilder repositories(List<RemoteRepository> repositories) {
229 this.repositories = repositories;
230 return this;
231 }
232
233
234
235
236
237
238 public ProjectBuilderRequest build() {
239 return new DefaultProjectBuilderRequest(
240 session, trace, path, source, allowStubModel, recursive, processPlugins, repositories);
241 }
242
243 private static class DefaultProjectBuilderRequest extends BaseRequest<Session>
244 implements ProjectBuilderRequest {
245 private final Path path;
246 private final Source source;
247 private final boolean allowStubModel;
248 private final boolean recursive;
249 private final boolean processPlugins;
250 private final List<RemoteRepository> repositories;
251
252 @SuppressWarnings("checkstyle:ParameterNumber")
253 DefaultProjectBuilderRequest(
254 @Nonnull Session session,
255 @Nullable RequestTrace trace,
256 @Nullable Path path,
257 @Nullable Source source,
258 boolean allowStubModel,
259 boolean recursive,
260 boolean processPlugins,
261 @Nullable List<RemoteRepository> repositories) {
262 super(session, trace);
263 this.path = path;
264 this.source = source;
265 this.allowStubModel = allowStubModel;
266 this.recursive = recursive;
267 this.processPlugins = processPlugins;
268 this.repositories = repositories;
269 }
270
271 @Nonnull
272 @Override
273 public Optional<Path> getPath() {
274 return Optional.ofNullable(path);
275 }
276
277 @Nonnull
278 @Override
279 public Optional<Source> getSource() {
280 return Optional.ofNullable(source);
281 }
282
283 @Override
284 public boolean isAllowStubModel() {
285 return allowStubModel;
286 }
287
288 @Override
289 public boolean isRecursive() {
290 return recursive;
291 }
292
293 @Override
294 public boolean isProcessPlugins() {
295 return processPlugins;
296 }
297
298 @Override
299 public List<RemoteRepository> getRepositories() {
300 return repositories;
301 }
302
303 @Override
304 public boolean equals(Object o) {
305 return o instanceof DefaultProjectBuilderRequest that
306 && allowStubModel == that.allowStubModel
307 && recursive == that.recursive
308 && processPlugins == that.processPlugins
309 && Objects.equals(path, that.path)
310 && Objects.equals(source, that.source)
311 && Objects.equals(repositories, that.repositories);
312 }
313
314 @Override
315 public int hashCode() {
316 return Objects.hash(path, source, allowStubModel, recursive, processPlugins, repositories);
317 }
318
319 @Override
320 public String toString() {
321 return "ProjectBuilderRequest[" + "path="
322 + path + ", source="
323 + source + ", allowStubModel="
324 + allowStubModel + ", recursive="
325 + recursive + ", processPlugins="
326 + processPlugins + ", repositories="
327 + repositories + ']';
328 }
329 }
330 }
331 }