package org.bundlemaker.core.mvn.internal.config;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import org.apache.maven.settings.Profile;
import org.apache.maven.settings.Repository;
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.building.DefaultSettingsBuilderFactory;
import org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
import org.apache.maven.settings.building.SettingsBuilder;
import org.apache.maven.settings.building.SettingsBuildingException;
import org.bundlemaker.core.mvn.MvnCoreActivator;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.sonatype.aether.repository.RemoteRepository;
/**
* <p>
* <ul>
* <li>The Maven install: $M2_HOME/conf/settings.xml</li>
* <li>A user's install: ${user.home}/.m2/settings.xml</li>
* </ul>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class AetherUtils {
/**
* <p>
* </p>
*
* @param settings
* @return
*/
public static List<RemoteRepository> getRemoteRepositories(Settings settings) {
//
List<RemoteRepository> result = new LinkedList<RemoteRepository>();
//
List<String> activeProfiles = settings.getActiveProfiles();
//
for (Profile profile : settings.getProfiles()) {
if (activeProfiles.contains(profile.getId())) {
for (Repository repository : profile.getRepositories()) {
RemoteRepository remoteRepository = AetherUtils.getRemoteRepository(repository);
result.add(remoteRepository);
}
}
}
//
return result;
}
/**
* <p>
* </p>
*
* @param repository
*/
public static RemoteRepository getRemoteRepository(Repository repository) {
RemoteRepository remoteRepository;
remoteRepository = new RemoteRepository();
remoteRepository.setId(repository.getId());
remoteRepository.setUrl(repository.getUrl());
remoteRepository.setContentType(repository.getLayout());
remoteRepository.setPolicy(true, new org.sonatype.aether.repository.RepositoryPolicy(repository
.getSnapshots().isEnabled(), repository.getSnapshots().getUpdatePolicy(), repository.getSnapshots()
.getChecksumPolicy()));
remoteRepository.setPolicy(false, new org.sonatype.aether.repository.RepositoryPolicy(repository
.getReleases().isEnabled(), repository.getReleases().getUpdatePolicy(), repository.getReleases()
.getChecksumPolicy()));
return remoteRepository;
}
// /**
// * <p>
// * </p>
// *
// * @return
// */
// public static File getGlobalSettings()
// {
// String mavenHome = getMavenHome();
// if (mavenHome != null)
// {
// return new File(new File(mavenHome, "conf"), MvnCoreActivator.SETTINGS_XML);
// }
//
// return null;
// }
/**
* <p>
* </p>
*
* @return
*/
public static String getMavenHome()
{
return System.getenv("M2_HOME");
}
// /**
// * <p>
// * </p>
// *
// * @return
// */
// public static File getDefaultUserSettings()
// {
// // user home
// File userHome = new File(System.getProperty("user.home"));
//
// //
// File result = new File(new File(userHome, ".m2"), MvnCoreActivator.SETTINGS_XML);
//
// //
// return result.isFile() ? result : null;
// }
/**
* <p>
* </p>
*
* @param key
* @return
*/
public static File readPreferenceAndConvertToFile(String key, IEclipsePreferences preferences) {
//
Assert.isNotNull(key);
Assert.isNotNull(preferences);
//
if (preferences != null) {
//
String value = preferences.get(key, null);
//
return value != null ? new File(value) : null;
}
//
return null;
}
}