if (bundles.length == 0) {
return;
}
ServiceReference sr = ctx.getServiceReference(RepositoryAdmin.class.getName());
RepositoryAdmin adm = (RepositoryAdmin) ctx.getService(sr);
Resolver resolver = adm.resolver();
for (Object object : bundles) {
Bundle bundle = (Bundle) object;
String symbolicName = bundle.getSymbolicName();
// String version = (String) bundle.getHeaders().get(Constants.BUNDLE_VERSION);
String filter = "(symbolicname=" + symbolicName + ")";
logger.info("Resolving " + filter);
Collection<Resource> resources = filterByVersion(adm.discoverResources(filter));
logger.info("Found {} resources", resources.size());
if (resources.size() > 0) {
try {
bundle.uninstall();
for (Resource resource : resources) {
logger.info("Adding {} to update list", resource.getSymbolicName());
resolver.add(resource);
}
} catch (BundleException e1) {
logger.error("error.uninstall_plugins");
}
}
}
if (resolver.resolve()) {
resolver.deploy(true); // deploy and start (true means "start")
} else {
logger.error(I18N.translate("error.load_list"));
}
updateInstalledList();
updateAvailableList();
updateInstalledDetails();
JOptionPane.showMessageDialog(Main.getGUI(), I18N.translate("plugins_updated"), "PluginManager",
JOptionPane.INFORMATION_MESSAGE);
} else if (e.getSource() == bInstall) {
Object[] resources = availableList.getSelectedValues();
if (resources.length == 0) {
return;
}
ServiceReference sr = ctx.getServiceReference(RepositoryAdmin.class.getName());
if (sr == null) {
logger.error("OBR service not available");
return;
}
RepositoryAdmin adm = (RepositoryAdmin) ctx.getService(sr);
if (adm == null) {
logger.error("OBR service not available");
return;
}
// add resources to the resolver
Resolver resolver = adm.resolver();
for (Object object : resources) {
Resource res = (Resource) object;
resolver.add(res);
}