in plugins/org.apache.karaf.eik.ui/src/main/java/org/apache/karaf/eik/ui/KarafConfigurationTab.java [308:395]
public void initializeFrom(final ILaunchConfiguration configuration) {
FileInputStream fin = null;
try {
localConsole.setSelection(
configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_START_LOCAL_CONSOLE, true));
remoteConsole.setSelection(
configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_START_REMOTE_CONSOLE, false));
enableFeaturesManagement.setSelection(
configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_FEATURES_MANAGEMENT, true));
initializeKarafPlatformModel();
final String storedBootFeatures = configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_BOOT_FEATURES, "");
final String[] features = storedBootFeatures.split(",");
for (final String feature : features) {
// TODO: Not really efficient
if (!feature.isEmpty() && !bootFeaturesList.contains(feature)) {
bootFeaturesList.add(feature);
}
}
// TODO: This should be factored out and it should be easy to get a List of FeaturesRepository
final IFolder featuresFolder = karafProject.getFolder("features");
if (featuresFolder.exists()) {
final List<FeaturesRepository> featuresRepositories = new ArrayList<FeaturesRepository>();
final IResource[] resources = featuresFolder.members();
for (final IResource resource : resources) {
if (resource.getFileExtension().equalsIgnoreCase("xml")) {
fin = new FileInputStream(resource.getRawLocation().toFile());
final XmlFeaturesRepository xmlFeatureRepository = new XmlFeaturesRepository(resource.getName(), fin);
featuresRepositories.add(xmlFeatureRepository);
fin.close();
}
}
Collections.sort(featuresRepositories, new Comparator<FeaturesRepository>() {
@Override
public int compare(final FeaturesRepository o1, final FeaturesRepository o2) {
return o1.getName().compareTo(o2.getName());
}
});
final FeatureResolverImpl fr = new FeatureResolverImpl(featuresRepositories);
final List<Object> checkedFeatures = new ArrayList<Object>();
for (final String s : bootFeaturesList) {
final Feature f = fr.findFeature(s);
if (f == null) {
// TODO: Set some sort of warning
continue;
}
final Features featuresContainer = (Features) f.getParent();
final FeaturesRepository featuresRepository = featuresContainer.getParent();
checkedFeatures.add(new AvailableFeature(f, featuresRepository));
}
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
if (!getControl().isDisposed()) {
bootFeaturesViewer.setInput(bootFeaturesList);
bootFeaturesViewer.refresh();
availableFeaturesViewer.setInput(featuresRepositories);
availableFeaturesViewer.setCheckedElements(checkedFeatures.toArray());
}
};
});
}
} catch (final IOException e) {
KarafUIPluginActivator.getLogger().error("Uable to load file", e);
} catch (final CoreException e) {
KarafUIPluginActivator.getLogger().error("Unable to initialize launch configuration tab", e);
return;
} finally {
if (fin != null) {
try {
fin.close();
} catch (final IOException e) {
// Nothing to do here
}
}
}
}