Java tutorial
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; } }