blob: 84a68f74c8fb8bc0865398ac56e6aadcfaae56ac [file] [log] [blame]
package org.apache.maven.model.building;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import org.apache.maven.model.Model;
import org.apache.maven.model.Profile;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.WorkspaceModelResolver;
/**
* Collects settings that control building of effective models.
*
* @author Benjamin Bentmann
*/
public class DefaultModelBuildingRequest
implements ModelBuildingRequest
{
private Model rawModel;
private File pomFile;
private ModelSource modelSource;
private int validationLevel = VALIDATION_LEVEL_STRICT;
private boolean processPlugins;
private boolean twoPhaseBuilding;
private boolean locationTracking;
private List<Profile> profiles;
private List<String> activeProfileIds;
private List<String> inactiveProfileIds;
private Properties systemProperties;
private Properties userProperties;
private Date buildStartTime;
private ModelResolver modelResolver;
private ModelBuildingListener modelBuildingListener;
private ModelCache modelCache;
private WorkspaceModelResolver workspaceResolver;
/**
* Creates an empty request.
*/
public DefaultModelBuildingRequest()
{
}
/**
* Creates a shallow copy of the specified request.
*
* @param request The request to copy, must not be {@code null}.
*/
public DefaultModelBuildingRequest( ModelBuildingRequest request )
{
setPomFile( request.getPomFile() );
setModelSource( request.getModelSource() );
setValidationLevel( request.getValidationLevel() );
setProcessPlugins( request.isProcessPlugins() );
setTwoPhaseBuilding( request.isTwoPhaseBuilding() );
setProfiles( request.getProfiles() );
setActiveProfileIds( request.getActiveProfileIds() );
setInactiveProfileIds( request.getInactiveProfileIds() );
setSystemProperties( request.getSystemProperties() );
setUserProperties( request.getUserProperties() );
setBuildStartTime( request.getBuildStartTime() );
setModelResolver( request.getModelResolver() );
setModelBuildingListener( request.getModelBuildingListener() );
setModelCache( request.getModelCache() );
}
@Override
public File getPomFile()
{
return pomFile;
}
@Override
public DefaultModelBuildingRequest setPomFile( File pomFile )
{
this.pomFile = ( pomFile != null ) ? pomFile.getAbsoluteFile() : null;
return this;
}
@Override
public synchronized ModelSource getModelSource()
{
if ( modelSource == null && pomFile != null )
{
modelSource = new FileModelSource( pomFile );
}
return modelSource;
}
@Override
public DefaultModelBuildingRequest setModelSource( ModelSource modelSource )
{
this.modelSource = modelSource;
return this;
}
@Override
public int getValidationLevel()
{
return validationLevel;
}
@Override
public DefaultModelBuildingRequest setValidationLevel( int validationLevel )
{
this.validationLevel = validationLevel;
return this;
}
@Override
public boolean isProcessPlugins()
{
return processPlugins;
}
@Override
public DefaultModelBuildingRequest setProcessPlugins( boolean processPlugins )
{
this.processPlugins = processPlugins;
return this;
}
@Override
public boolean isTwoPhaseBuilding()
{
return twoPhaseBuilding;
}
@Override
public DefaultModelBuildingRequest setTwoPhaseBuilding( boolean twoPhaseBuilding )
{
this.twoPhaseBuilding = twoPhaseBuilding;
return this;
}
@Override
public boolean isLocationTracking()
{
return locationTracking;
}
@Override
public DefaultModelBuildingRequest setLocationTracking( boolean locationTracking )
{
this.locationTracking = locationTracking;
return this;
}
@Override
public List<Profile> getProfiles()
{
if ( profiles == null )
{
profiles = new ArrayList<>();
}
return profiles;
}
@Override
public DefaultModelBuildingRequest setProfiles( List<Profile> profiles )
{
if ( profiles != null )
{
this.profiles = new ArrayList<>( profiles );
}
else
{
this.profiles = null;
}
return this;
}
@Override
public List<String> getActiveProfileIds()
{
if ( activeProfileIds == null )
{
activeProfileIds = new ArrayList<>();
}
return activeProfileIds;
}
@Override
public DefaultModelBuildingRequest setActiveProfileIds( List<String> activeProfileIds )
{
if ( activeProfileIds != null )
{
this.activeProfileIds = new ArrayList<>( activeProfileIds );
}
else
{
this.activeProfileIds = null;
}
return this;
}
@Override
public List<String> getInactiveProfileIds()
{
if ( inactiveProfileIds == null )
{
inactiveProfileIds = new ArrayList<>();
}
return inactiveProfileIds;
}
@Override
public DefaultModelBuildingRequest setInactiveProfileIds( List<String> inactiveProfileIds )
{
if ( inactiveProfileIds != null )
{
this.inactiveProfileIds = new ArrayList<>( inactiveProfileIds );
}
else
{
this.inactiveProfileIds = null;
}
return this;
}
@Override
public Properties getSystemProperties()
{
if ( systemProperties == null )
{
systemProperties = new Properties();
}
return systemProperties;
}
@Override
public DefaultModelBuildingRequest setSystemProperties( Properties systemProperties )
{
if ( systemProperties != null )
{
this.systemProperties = new Properties();
synchronized ( systemProperties )
{ // avoid concurrentmodification if someone else sets/removes an unrelated system property
this.systemProperties.putAll( systemProperties );
}
}
else
{
this.systemProperties = null;
}
return this;
}
@Override
public Properties getUserProperties()
{
if ( userProperties == null )
{
userProperties = new Properties();
}
return userProperties;
}
@Override
public DefaultModelBuildingRequest setUserProperties( Properties userProperties )
{
if ( userProperties != null )
{
this.userProperties = new Properties();
this.userProperties.putAll( userProperties );
}
else
{
this.userProperties = null;
}
return this;
}
@Override
public Date getBuildStartTime()
{
return buildStartTime;
}
@Override
public ModelBuildingRequest setBuildStartTime( Date buildStartTime )
{
this.buildStartTime = buildStartTime;
return this;
}
@Override
public ModelResolver getModelResolver()
{
return this.modelResolver;
}
@Override
public DefaultModelBuildingRequest setModelResolver( ModelResolver modelResolver )
{
this.modelResolver = modelResolver;
return this;
}
@Override
public ModelBuildingListener getModelBuildingListener()
{
return modelBuildingListener;
}
@Override
public ModelBuildingRequest setModelBuildingListener( ModelBuildingListener modelBuildingListener )
{
this.modelBuildingListener = modelBuildingListener;
return this;
}
@Override
public ModelCache getModelCache()
{
return this.modelCache;
}
@Override
public DefaultModelBuildingRequest setModelCache( ModelCache modelCache )
{
this.modelCache = modelCache;
return this;
}
@Override
public Model getRawModel()
{
return rawModel;
}
@Override
public ModelBuildingRequest setRawModel( Model rawModel )
{
this.rawModel = rawModel;
return this;
}
@Override
public WorkspaceModelResolver getWorkspaceModelResolver()
{
return workspaceResolver;
}
@Override
public ModelBuildingRequest setWorkspaceModelResolver( WorkspaceModelResolver workspaceResolver )
{
this.workspaceResolver = workspaceResolver;
return this;
}
}