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 ModelSource getModelSource() 113 { 114 return modelSource; 115 } 116 117 public DefaultModelBuildingRequest setModelSource( ModelSource modelSource ) 118 { 119 this.modelSource = modelSource; 120 121 return this; 122 } 123 124 public int getValidationLevel() 125 { 126 return validationLevel; 127 } 128 129 public DefaultModelBuildingRequest setValidationLevel( int validationLevel ) 130 { 131 this.validationLevel = validationLevel; 132 133 return this; 134 } 135 136 public boolean isProcessPlugins() 137 { 138 return processPlugins; 139 } 140 141 public DefaultModelBuildingRequest setProcessPlugins( boolean processPlugins ) 142 { 143 this.processPlugins = processPlugins; 144 145 return this; 146 } 147 148 public boolean isTwoPhaseBuilding() 149 { 150 return twoPhaseBuilding; 151 } 152 153 public DefaultModelBuildingRequest setTwoPhaseBuilding( boolean twoPhaseBuilding ) 154 { 155 this.twoPhaseBuilding = twoPhaseBuilding; 156 157 return this; 158 } 159 160 public boolean isLocationTracking() 161 { 162 return locationTracking; 163 } 164 165 public DefaultModelBuildingRequest setLocationTracking( boolean locationTracking ) 166 { 167 this.locationTracking = locationTracking; 168 169 return this; 170 } 171 172 public List<Profile> getProfiles() 173 { 174 if ( profiles == null ) 175 { 176 profiles = new ArrayList<Profile>(); 177 } 178 179 return profiles; 180 } 181 182 public DefaultModelBuildingRequest setProfiles( List<Profile> profiles ) 183 { 184 if ( profiles != null ) 185 { 186 this.profiles = new ArrayList<Profile>( profiles ); 187 } 188 else 189 { 190 this.profiles = null; 191 } 192 193 return this; 194 } 195 196 public List<String> getActiveProfileIds() 197 { 198 if ( activeProfileIds == null ) 199 { 200 activeProfileIds = new ArrayList<String>(); 201 } 202 203 return activeProfileIds; 204 } 205 206 public DefaultModelBuildingRequest setActiveProfileIds( List<String> activeProfileIds ) 207 { 208 if ( activeProfileIds != null ) 209 { 210 this.activeProfileIds = new ArrayList<String>( activeProfileIds ); 211 } 212 else 213 { 214 this.activeProfileIds = null; 215 } 216 217 return this; 218 } 219 220 public List<String> getInactiveProfileIds() 221 { 222 if ( inactiveProfileIds == null ) 223 { 224 inactiveProfileIds = new ArrayList<String>(); 225 } 226 227 return inactiveProfileIds; 228 } 229 230 public DefaultModelBuildingRequest setInactiveProfileIds( List<String> inactiveProfileIds ) 231 { 232 if ( inactiveProfileIds != null ) 233 { 234 this.inactiveProfileIds = new ArrayList<String>( inactiveProfileIds ); 235 } 236 else 237 { 238 this.inactiveProfileIds = null; 239 } 240 241 return this; 242 } 243 244 public Properties getSystemProperties() 245 { 246 if ( systemProperties == null ) 247 { 248 systemProperties = new Properties(); 249 } 250 251 return systemProperties; 252 } 253 254 public DefaultModelBuildingRequest setSystemProperties( Properties systemProperties ) 255 { 256 if ( systemProperties != null ) 257 { 258 this.systemProperties = new Properties(); 259 this.systemProperties.putAll( systemProperties ); 260 } 261 else 262 { 263 this.systemProperties = null; 264 } 265 266 return this; 267 } 268 269 public Properties getUserProperties() 270 { 271 if ( userProperties == null ) 272 { 273 userProperties = new Properties(); 274 } 275 276 return userProperties; 277 } 278 279 public DefaultModelBuildingRequest setUserProperties( Properties userProperties ) 280 { 281 if ( userProperties != null ) 282 { 283 this.userProperties = new Properties(); 284 this.userProperties.putAll( userProperties ); 285 } 286 else 287 { 288 this.userProperties = null; 289 } 290 291 return this; 292 } 293 294 public Date getBuildStartTime() 295 { 296 return buildStartTime; 297 } 298 299 public ModelBuildingRequest setBuildStartTime( Date buildStartTime ) 300 { 301 this.buildStartTime = buildStartTime; 302 303 return this; 304 } 305 306 public ModelResolver getModelResolver() 307 { 308 return this.modelResolver; 309 } 310 311 public DefaultModelBuildingRequest setModelResolver( ModelResolver modelResolver ) 312 { 313 this.modelResolver = modelResolver; 314 315 return this; 316 } 317 318 public ModelBuildingListener getModelBuildingListener() 319 { 320 return modelBuildingListener; 321 } 322 323 public ModelBuildingRequest setModelBuildingListener( ModelBuildingListener modelBuildingListener ) 324 { 325 this.modelBuildingListener = modelBuildingListener; 326 327 return this; 328 } 329 330 public ModelCache getModelCache() 331 { 332 return this.modelCache; 333 } 334 335 public DefaultModelBuildingRequest setModelCache( ModelCache modelCache ) 336 { 337 this.modelCache = modelCache; 338 339 return this; 340 } 341 342 }