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