in plugins/org.apache.karaf.eik.ui/src/main/java/org/apache/karaf/eik/ui/features/FeaturesResolverJob.java [97:176]
private IStatus resolveFeatures(final IProgressMonitor monitor) {
monitor.beginTask("Loading Karaf Features", featuresSection.getRepositoryList().size());
try {
for (final String repository : featuresSection.getRepositoryList()) {
if (monitor.isCanceled()) {
return Status.CANCEL_STATUS;
}
try {
// Begin: Refactor this out in to an OPS4j mvn URL configuration
final Properties mvnConfiguration =
KarafCorePluginUtils.loadProperties(karafPlatformModel.getConfigurationDirectory().toFile(), ORG_OPS4J_PAX_URL_MVN_CFG);
final IKarafProject karafProject = (IKarafProject) karafPlatformModel.getAdapter(IKarafProject.class);
final Properties runtimeProperties = karafProject.getRuntimeProperties();
PropertyUtils.interpolateVariables(mvnConfiguration, runtimeProperties);
final String defaultRepos = (String) mvnConfiguration.get("org.ops4j.pax.url.mvn.defaultRepositories");
final String repos = (String) mvnConfiguration.get("org.ops4j.pax.url.mvn.repositories");
// In karaf-3.0.0, default repo may be null.
// First check if it's null an if not then add it to repo list
ArrayList<String> reposList = new ArrayList<String>();
if (defaultRepos != null)
reposList.add(defaultRepos);
if (repos != null)
reposList.add(repos);
final String combinedRepos = KarafCorePluginUtils.join(reposList, ",");
mvnConfiguration.put("org.ops4j.pax.url.mvn.repositories", removeInvalidSuffixes(combinedRepos));
// End: Refactor
final String repositoryName;
final InputStream stream;
if (repository.startsWith(FeaturesLabelProvider.MVN_URL_PREFIX)) {
final MvnURLConnectionFactory urlConnectionFactory = new MvnURLConnectionFactory(mvnConfiguration);
stream = urlConnectionFactory.create(new URL(repository)).getInputStream();
final String[] repositoryComponents = repository.split("/"); //$NON-NLS-1$
repositoryName = repositoryComponents[1] + "-" + repositoryComponents[2]; //$NON-NLS-1$
} else {
stream = new URL(repository).openStream();
repositoryName = repository;
}
final FeaturesRepository newRepo = new XmlFeaturesRepository(repositoryName, stream);
featuresRepositories.add(newRepo);
monitor.worked(1);
} catch (final MalformedURLException e) {
if (monitor.isCanceled()) {
return Status.CANCEL_STATUS;
} else {
return new Status(IStatus.WARNING, KarafUIPluginActivator.PLUGIN_ID, "Unable determine location for Features repository: " + repository, e);
}
} catch (final IOException e) {
if (monitor.isCanceled()) {
return Status.CANCEL_STATUS;
} else {
return new Status(IStatus.WARNING, KarafUIPluginActivator.PLUGIN_ID, "Unable load Features repository: " + repository, e);
}
} catch (final CoreException e) {
if (monitor.isCanceled()) {
return Status.CANCEL_STATUS;
} else {
return new Status(IStatus.ERROR, KarafUIPluginActivator.PLUGIN_ID, "Unable load Features repository: " + repository, e);
}
}
}
return Status.OK_STATUS;
} finally {
monitor.done();
}
}