001 package org.apache.maven.model.building;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.io.File;
023 import java.util.ArrayList;
024 import java.util.Date;
025 import java.util.List;
026 import java.util.Properties;
027
028 import org.apache.maven.model.Profile;
029 import org.apache.maven.model.resolution.ModelResolver;
030
031 /**
032 * Collects settings that control building of effective models.
033 *
034 * @author Benjamin Bentmann
035 */
036 public class DefaultModelBuildingRequest
037 implements ModelBuildingRequest
038 {
039
040 private File pomFile;
041
042 private ModelSource modelSource;
043
044 private int validationLevel = VALIDATION_LEVEL_STRICT;
045
046 private boolean processPlugins;
047
048 private boolean twoPhaseBuilding;
049
050 private boolean locationTracking;
051
052 private List<Profile> profiles;
053
054 private List<String> activeProfileIds;
055
056 private List<String> inactiveProfileIds;
057
058 private Properties systemProperties;
059
060 private Properties userProperties;
061
062 private Date buildStartTime;
063
064 private ModelResolver modelResolver;
065
066 private ModelBuildingListener modelBuildingListener;
067
068 private ModelCache modelCache;
069
070 /**
071 * Creates an empty request.
072 */
073 public DefaultModelBuildingRequest()
074 {
075 }
076
077 /**
078 * Creates a shallow copy of the specified request.
079 *
080 * @param request The request to copy, must not be {@code null}.
081 */
082 public DefaultModelBuildingRequest( ModelBuildingRequest request )
083 {
084 setPomFile( request.getPomFile() );
085 setModelSource( request.getModelSource() );
086 setValidationLevel( request.getValidationLevel() );
087 setProcessPlugins( request.isProcessPlugins() );
088 setTwoPhaseBuilding( request.isTwoPhaseBuilding() );
089 setProfiles( request.getProfiles() );
090 setActiveProfileIds( request.getActiveProfileIds() );
091 setInactiveProfileIds( request.getInactiveProfileIds() );
092 setSystemProperties( request.getSystemProperties() );
093 setUserProperties( request.getUserProperties() );
094 setBuildStartTime( request.getBuildStartTime() );
095 setModelResolver( request.getModelResolver() );
096 setModelBuildingListener( request.getModelBuildingListener() );
097 setModelCache( request.getModelCache() );
098 }
099
100 public File getPomFile()
101 {
102 return pomFile;
103 }
104
105 public DefaultModelBuildingRequest setPomFile( File pomFile )
106 {
107 this.pomFile = ( pomFile != null ) ? pomFile.getAbsoluteFile() : null;
108
109 return this;
110 }
111
112 public synchronized ModelSource getModelSource()
113 {
114 if ( modelSource == null && pomFile != null )
115 {
116 modelSource = new FileModelSource( pomFile );
117 }
118 return modelSource;
119 }
120
121 public DefaultModelBuildingRequest setModelSource( ModelSource modelSource )
122 {
123 this.modelSource = modelSource;
124
125 return this;
126 }
127
128 public int getValidationLevel()
129 {
130 return validationLevel;
131 }
132
133 public DefaultModelBuildingRequest setValidationLevel( int validationLevel )
134 {
135 this.validationLevel = validationLevel;
136
137 return this;
138 }
139
140 public boolean isProcessPlugins()
141 {
142 return processPlugins;
143 }
144
145 public DefaultModelBuildingRequest setProcessPlugins( boolean processPlugins )
146 {
147 this.processPlugins = processPlugins;
148
149 return this;
150 }
151
152 public boolean isTwoPhaseBuilding()
153 {
154 return twoPhaseBuilding;
155 }
156
157 public DefaultModelBuildingRequest setTwoPhaseBuilding( boolean twoPhaseBuilding )
158 {
159 this.twoPhaseBuilding = twoPhaseBuilding;
160
161 return this;
162 }
163
164 public boolean isLocationTracking()
165 {
166 return locationTracking;
167 }
168
169 public DefaultModelBuildingRequest setLocationTracking( boolean locationTracking )
170 {
171 this.locationTracking = locationTracking;
172
173 return this;
174 }
175
176 public List<Profile> getProfiles()
177 {
178 if ( profiles == null )
179 {
180 profiles = new ArrayList<Profile>();
181 }
182
183 return profiles;
184 }
185
186 public DefaultModelBuildingRequest setProfiles( List<Profile> profiles )
187 {
188 if ( profiles != null )
189 {
190 this.profiles = new ArrayList<Profile>( profiles );
191 }
192 else
193 {
194 this.profiles = null;
195 }
196
197 return this;
198 }
199
200 public List<String> getActiveProfileIds()
201 {
202 if ( activeProfileIds == null )
203 {
204 activeProfileIds = new ArrayList<String>();
205 }
206
207 return activeProfileIds;
208 }
209
210 public DefaultModelBuildingRequest setActiveProfileIds( List<String> activeProfileIds )
211 {
212 if ( activeProfileIds != null )
213 {
214 this.activeProfileIds = new ArrayList<String>( activeProfileIds );
215 }
216 else
217 {
218 this.activeProfileIds = null;
219 }
220
221 return this;
222 }
223
224 public List<String> getInactiveProfileIds()
225 {
226 if ( inactiveProfileIds == null )
227 {
228 inactiveProfileIds = new ArrayList<String>();
229 }
230
231 return inactiveProfileIds;
232 }
233
234 public DefaultModelBuildingRequest setInactiveProfileIds( List<String> inactiveProfileIds )
235 {
236 if ( inactiveProfileIds != null )
237 {
238 this.inactiveProfileIds = new ArrayList<String>( inactiveProfileIds );
239 }
240 else
241 {
242 this.inactiveProfileIds = null;
243 }
244
245 return this;
246 }
247
248 public Properties getSystemProperties()
249 {
250 if ( systemProperties == null )
251 {
252 systemProperties = new Properties();
253 }
254
255 return systemProperties;
256 }
257
258 public DefaultModelBuildingRequest setSystemProperties( Properties systemProperties )
259 {
260 if ( systemProperties != null )
261 {
262 this.systemProperties = new Properties();
263 this.systemProperties.putAll( systemProperties );
264 }
265 else
266 {
267 this.systemProperties = null;
268 }
269
270 return this;
271 }
272
273 public Properties getUserProperties()
274 {
275 if ( userProperties == null )
276 {
277 userProperties = new Properties();
278 }
279
280 return userProperties;
281 }
282
283 public DefaultModelBuildingRequest setUserProperties( Properties userProperties )
284 {
285 if ( userProperties != null )
286 {
287 this.userProperties = new Properties();
288 this.userProperties.putAll( userProperties );
289 }
290 else
291 {
292 this.userProperties = null;
293 }
294
295 return this;
296 }
297
298 public Date getBuildStartTime()
299 {
300 return buildStartTime;
301 }
302
303 public ModelBuildingRequest setBuildStartTime( Date buildStartTime )
304 {
305 this.buildStartTime = buildStartTime;
306
307 return this;
308 }
309
310 public ModelResolver getModelResolver()
311 {
312 return this.modelResolver;
313 }
314
315 public DefaultModelBuildingRequest setModelResolver( ModelResolver modelResolver )
316 {
317 this.modelResolver = modelResolver;
318
319 return this;
320 }
321
322 public ModelBuildingListener getModelBuildingListener()
323 {
324 return modelBuildingListener;
325 }
326
327 public ModelBuildingRequest setModelBuildingListener( ModelBuildingListener modelBuildingListener )
328 {
329 this.modelBuildingListener = modelBuildingListener;
330
331 return this;
332 }
333
334 public ModelCache getModelCache()
335 {
336 return this.modelCache;
337 }
338
339 public DefaultModelBuildingRequest setModelCache( ModelCache modelCache )
340 {
341 this.modelCache = modelCache;
342
343 return this;
344 }
345
346 }