001package org.apache.maven.settings; 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 022import org.apache.maven.model.ActivationFile; 023import org.apache.maven.settings.merge.MavenSettingsMerger; 024 025import java.util.List; 026 027/** 028 * Several convenience methods to handle settings 029 * 030 * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a> 031 */ 032public final class SettingsUtils 033{ 034 035 private SettingsUtils() 036 { 037 // don't allow construction. 038 } 039 040 /** 041 * @param dominant 042 * @param recessive 043 * @param recessiveSourceLevel 044 */ 045 public static void merge( Settings dominant, Settings recessive, String recessiveSourceLevel ) 046 { 047 new MavenSettingsMerger().merge( dominant, recessive, recessiveSourceLevel ); 048 } 049 050 /** 051 * @param modelProfile 052 * @return a profile 053 */ 054 public static Profile convertToSettingsProfile( org.apache.maven.model.Profile modelProfile ) 055 { 056 Profile profile = new Profile(); 057 058 profile.setId( modelProfile.getId() ); 059 060 org.apache.maven.model.Activation modelActivation = modelProfile.getActivation(); 061 062 if ( modelActivation != null ) 063 { 064 Activation activation = new Activation(); 065 066 activation.setActiveByDefault( modelActivation.isActiveByDefault() ); 067 068 activation.setJdk( modelActivation.getJdk() ); 069 070 org.apache.maven.model.ActivationProperty modelProp = modelActivation.getProperty(); 071 072 if ( modelProp != null ) 073 { 074 ActivationProperty prop = new ActivationProperty(); 075 prop.setName( modelProp.getName() ); 076 prop.setValue( modelProp.getValue() ); 077 activation.setProperty( prop ); 078 } 079 080 org.apache.maven.model.ActivationOS modelOs = modelActivation.getOs(); 081 082 if ( modelOs != null ) 083 { 084 ActivationOS os = new ActivationOS(); 085 086 os.setArch( modelOs.getArch() ); 087 os.setFamily( modelOs.getFamily() ); 088 os.setName( modelOs.getName() ); 089 os.setVersion( modelOs.getVersion() ); 090 091 activation.setOs( os ); 092 } 093 094 ActivationFile modelFile = modelActivation.getFile(); 095 096 if ( modelFile != null ) 097 { 098 org.apache.maven.settings.ActivationFile file = new org.apache.maven.settings.ActivationFile(); 099 100 file.setExists( modelFile.getExists() ); 101 file.setMissing( modelFile.getMissing() ); 102 103 activation.setFile( file ); 104 } 105 106 profile.setActivation( activation ); 107 } 108 109 profile.setProperties( modelProfile.getProperties() ); 110 111 List<org.apache.maven.model.Repository> repos = modelProfile.getRepositories(); 112 if ( repos != null ) 113 { 114 for ( org.apache.maven.model.Repository repo : repos ) 115 { 116 profile.addRepository( convertToSettingsRepository( repo ) ); 117 } 118 } 119 120 List<org.apache.maven.model.Repository> pluginRepos = modelProfile.getPluginRepositories(); 121 if ( pluginRepos != null ) 122 { 123 for ( org.apache.maven.model.Repository pluginRepo : pluginRepos ) 124 { 125 profile.addPluginRepository( convertToSettingsRepository( pluginRepo ) ); 126 } 127 } 128 129 return profile; 130 } 131 132 /** 133 * @param settingsProfile 134 * @return a profile 135 */ 136 public static org.apache.maven.model.Profile convertFromSettingsProfile( Profile settingsProfile ) 137 { 138 org.apache.maven.model.Profile profile = new org.apache.maven.model.Profile(); 139 140 profile.setId( settingsProfile.getId() ); 141 142 profile.setSource( "settings.xml" ); 143 144 Activation settingsActivation = settingsProfile.getActivation(); 145 146 if ( settingsActivation != null ) 147 { 148 org.apache.maven.model.Activation activation = new org.apache.maven.model.Activation(); 149 150 activation.setActiveByDefault( settingsActivation.isActiveByDefault() ); 151 152 activation.setJdk( settingsActivation.getJdk() ); 153 154 ActivationProperty settingsProp = settingsActivation.getProperty(); 155 156 if ( settingsProp != null ) 157 { 158 org.apache.maven.model.ActivationProperty prop = new org.apache.maven.model.ActivationProperty(); 159 160 prop.setName( settingsProp.getName() ); 161 prop.setValue( settingsProp.getValue() ); 162 163 activation.setProperty( prop ); 164 } 165 166 ActivationOS settingsOs = settingsActivation.getOs(); 167 168 if ( settingsOs != null ) 169 { 170 org.apache.maven.model.ActivationOS os = new org.apache.maven.model.ActivationOS(); 171 172 os.setArch( settingsOs.getArch() ); 173 os.setFamily( settingsOs.getFamily() ); 174 os.setName( settingsOs.getName() ); 175 os.setVersion( settingsOs.getVersion() ); 176 177 activation.setOs( os ); 178 } 179 180 org.apache.maven.settings.ActivationFile settingsFile = settingsActivation.getFile(); 181 182 if ( settingsFile != null ) 183 { 184 ActivationFile file = new ActivationFile(); 185 186 file.setExists( settingsFile.getExists() ); 187 file.setMissing( settingsFile.getMissing() ); 188 189 activation.setFile( file ); 190 } 191 192 profile.setActivation( activation ); 193 } 194 195 profile.setProperties( settingsProfile.getProperties() ); 196 197 List<Repository> repos = settingsProfile.getRepositories(); 198 if ( repos != null ) 199 { 200 for ( Repository repo : repos ) 201 { 202 profile.addRepository( convertFromSettingsRepository( repo ) ); 203 } 204 } 205 206 List<Repository> pluginRepos = settingsProfile.getPluginRepositories(); 207 if ( pluginRepos != null ) 208 { 209 for ( Repository pluginRepo : pluginRepos ) 210 { 211 profile.addPluginRepository( convertFromSettingsRepository( pluginRepo ) ); 212 } 213 } 214 215 return profile; 216 } 217 218 /** 219 * @param settingsRepo 220 * @return a repository 221 */ 222 private static org.apache.maven.model.Repository convertFromSettingsRepository( Repository settingsRepo ) 223 { 224 org.apache.maven.model.Repository repo = new org.apache.maven.model.Repository(); 225 226 repo.setId( settingsRepo.getId() ); 227 repo.setLayout( settingsRepo.getLayout() ); 228 repo.setName( settingsRepo.getName() ); 229 repo.setUrl( settingsRepo.getUrl() ); 230 231 if ( settingsRepo.getSnapshots() != null ) 232 { 233 repo.setSnapshots( convertRepositoryPolicy( settingsRepo.getSnapshots() ) ); 234 } 235 if ( settingsRepo.getReleases() != null ) 236 { 237 repo.setReleases( convertRepositoryPolicy( settingsRepo.getReleases() ) ); 238 } 239 240 return repo; 241 } 242 243 /** 244 * @param settingsPolicy 245 * @return a RepositoryPolicy 246 */ 247 private static org.apache.maven.model.RepositoryPolicy convertRepositoryPolicy( RepositoryPolicy settingsPolicy ) 248 { 249 org.apache.maven.model.RepositoryPolicy policy = new org.apache.maven.model.RepositoryPolicy(); 250 policy.setEnabled( settingsPolicy.isEnabled() ); 251 policy.setUpdatePolicy( settingsPolicy.getUpdatePolicy() ); 252 policy.setChecksumPolicy( settingsPolicy.getChecksumPolicy() ); 253 return policy; 254 } 255 256 /** 257 * @param modelRepo 258 * @return a repository 259 */ 260 private static Repository convertToSettingsRepository( org.apache.maven.model.Repository modelRepo ) 261 { 262 Repository repo = new Repository(); 263 264 repo.setId( modelRepo.getId() ); 265 repo.setLayout( modelRepo.getLayout() ); 266 repo.setName( modelRepo.getName() ); 267 repo.setUrl( modelRepo.getUrl() ); 268 269 if ( modelRepo.getSnapshots() != null ) 270 { 271 repo.setSnapshots( convertRepositoryPolicy( modelRepo.getSnapshots() ) ); 272 } 273 if ( modelRepo.getReleases() != null ) 274 { 275 repo.setReleases( convertRepositoryPolicy( modelRepo.getReleases() ) ); 276 } 277 278 return repo; 279 } 280 281 /** 282 * @param modelPolicy 283 * @return a RepositoryPolicy 284 */ 285 private static RepositoryPolicy convertRepositoryPolicy( org.apache.maven.model.RepositoryPolicy modelPolicy ) 286 { 287 RepositoryPolicy policy = new RepositoryPolicy(); 288 policy.setEnabled( modelPolicy.isEnabled() ); 289 policy.setUpdatePolicy( modelPolicy.getUpdatePolicy() ); 290 policy.setChecksumPolicy( modelPolicy.getChecksumPolicy() ); 291 return policy; 292 } 293 294 /** 295 * @param settings could be null 296 * @return a new instance of settings or null if settings was null. 297 */ 298 public static Settings copySettings( Settings settings ) 299 { 300 if ( settings == null ) 301 { 302 return null; 303 } 304 305 Settings clone = new Settings(); 306 clone.setActiveProfiles( settings.getActiveProfiles() ); 307 clone.setInteractiveMode( settings.isInteractiveMode() ); 308 clone.setLocalRepository( settings.getLocalRepository() ); 309 clone.setMirrors( settings.getMirrors() ); 310 clone.setModelEncoding( settings.getModelEncoding() ); 311 clone.setOffline( settings.isOffline() ); 312 clone.setPluginGroups( settings.getPluginGroups() ); 313 clone.setProfiles( settings.getProfiles() ); 314 clone.setProxies( settings.getProxies() ); 315 clone.setServers( settings.getServers() ); 316 clone.setSourceLevel( settings.getSourceLevel() ); 317 clone.setUsePluginRegistry( settings.isUsePluginRegistry() ); 318 319 return clone; 320 } 321}