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.nio.file.Path;
24 import java.util.Optional;
25 import org.apache.maven.api.Artifact;
26 import org.apache.maven.api.ArtifactCoordinate;
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
35
36
37
38
39
40 @Experimental
41 @Immutable
42 public interface ProjectBuilderRequest {
43
44 @Nonnull
45 Session getSession();
46
47 @Nonnull
48 Optional<Path> getPath();
49
50 @Nonnull
51 Optional<Source> getSource();
52
53 @Nonnull
54 Optional<Artifact> getArtifact();
55
56 @Nonnull
57 Optional<ArtifactCoordinate> getCoordinate();
58
59 boolean isAllowStubModel();
60
61 boolean isRecursive();
62
63 boolean isProcessPlugins();
64
65 boolean isResolveDependencies();
66
67 @Nonnull
68 static ProjectBuilderRequest build(@Nonnull Session session, @Nonnull Source source) {
69 return builder()
70 .session(nonNull(session, "session cannot be null"))
71 .source(nonNull(source, "source cannot be null"))
72 .build();
73 }
74
75 @Nonnull
76 static ProjectBuilderRequest build(@Nonnull Session session, @Nonnull Path path) {
77 return builder()
78 .session(nonNull(session, "session cannot be null"))
79 .path(nonNull(path, "path cannot be null"))
80 .build();
81 }
82
83 @Nonnull
84 static ProjectBuilderRequest build(@Nonnull Session session, @Nonnull Artifact artifact) {
85 return builder()
86 .session(nonNull(session, "session cannot be null"))
87 .artifact(nonNull(artifact, "artifact cannot be null"))
88 .build();
89 }
90
91 @Nonnull
92 static ProjectBuilderRequest build(@Nonnull Session session, @Nonnull ArtifactCoordinate coordinate) {
93 return builder()
94 .session(nonNull(session, "session cannot be null"))
95 .coordinate(nonNull(coordinate, "coordinate cannot be null"))
96 .build();
97 }
98
99 @Nonnull
100 static ProjectBuilderRequestBuilder builder() {
101 return new ProjectBuilderRequestBuilder();
102 }
103
104 @NotThreadSafe
105 class ProjectBuilderRequestBuilder {
106 Session session;
107 Path path;
108 Source source;
109 Artifact artifact;
110 ArtifactCoordinate coordinate;
111 boolean allowStubModel;
112 boolean recursive;
113 boolean processPlugins = true;
114 boolean resolveDependencies = true;
115
116 ProjectBuilderRequestBuilder() {}
117
118 public ProjectBuilderRequestBuilder session(Session session) {
119 this.session = session;
120 return this;
121 }
122
123 public ProjectBuilderRequestBuilder path(Path path) {
124 this.path = path;
125 return this;
126 }
127
128 public ProjectBuilderRequestBuilder source(Source source) {
129 this.source = source;
130 return this;
131 }
132
133 public ProjectBuilderRequestBuilder artifact(Artifact artifact) {
134 this.artifact = artifact;
135 return this;
136 }
137
138 public ProjectBuilderRequestBuilder coordinate(ArtifactCoordinate coordinate) {
139 this.coordinate = coordinate;
140 return this;
141 }
142
143 public ProjectBuilderRequestBuilder processPlugins(boolean processPlugins) {
144 this.processPlugins = processPlugins;
145 return this;
146 }
147
148 public ProjectBuilderRequestBuilder resolveDependencies(boolean resolveDependencies) {
149 this.resolveDependencies = resolveDependencies;
150 return this;
151 }
152
153 public ProjectBuilderRequest build() {
154 return new DefaultProjectBuilderRequest(
155 session,
156 path,
157 source,
158 artifact,
159 coordinate,
160 allowStubModel,
161 recursive,
162 processPlugins,
163 resolveDependencies);
164 }
165
166 private static class DefaultProjectBuilderRequest extends BaseRequest implements ProjectBuilderRequest {
167 private final Path path;
168 private final Source source;
169 private final Artifact artifact;
170 private final ArtifactCoordinate coordinate;
171 private final boolean allowStubModel;
172 private final boolean recursive;
173 private final boolean processPlugins;
174 private final boolean resolveDependencies;
175
176 @SuppressWarnings("checkstyle:ParameterNumber")
177 DefaultProjectBuilderRequest(
178 @Nonnull Session session,
179 @Nullable Path path,
180 @Nullable Source source,
181 @Nullable Artifact artifact,
182 @Nullable ArtifactCoordinate coordinate,
183 boolean allowStubModel,
184 boolean recursive,
185 boolean processPlugins,
186 boolean resolveDependencies) {
187 super(session);
188 this.path = path;
189 this.source = source;
190 this.artifact = artifact;
191 this.coordinate = coordinate;
192 this.allowStubModel = allowStubModel;
193 this.recursive = recursive;
194 this.processPlugins = processPlugins;
195 this.resolveDependencies = resolveDependencies;
196 }
197
198 @Nonnull
199 @Override
200 public Optional<Path> getPath() {
201 return Optional.ofNullable(path);
202 }
203
204 @Nonnull
205 @Override
206 public Optional<Source> getSource() {
207 return Optional.ofNullable(source);
208 }
209
210 @Nonnull
211 @Override
212 public Optional<Artifact> getArtifact() {
213 return Optional.ofNullable(artifact);
214 }
215
216 @Nonnull
217 @Override
218 public Optional<ArtifactCoordinate> getCoordinate() {
219 return Optional.ofNullable(coordinate);
220 }
221
222 @Override
223 public boolean isAllowStubModel() {
224 return allowStubModel;
225 }
226
227 @Override
228 public boolean isRecursive() {
229 return recursive;
230 }
231
232 @Override
233 public boolean isProcessPlugins() {
234 return processPlugins;
235 }
236
237 @Override
238 public boolean isResolveDependencies() {
239 return resolveDependencies;
240 }
241 }
242 }
243 }