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