package bundles; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Dictionary; import java.util.HashMap; public abstract class ABundle { private static final Logger logger = LoggerFactory.getLogger(ABundle.class); private String pid; private Dictionary properties; ABundle(String pid) { this.pid = pid; } public void setProperties(Dictionary properties) { this.properties = properties; } public void configuringBundle(BundleContext ctx, HashMap<String, BundleContext> contextBundles) { if (pid != null && properties != null) { if(contextBundles.containsKey(pid)) { ctx = contextBundles.get(pid); } ServiceReference configurationAdminReference = ctx.getServiceReference(ConfigurationAdmin.class.getName()); if (configurationAdminReference != null) { ConfigurationAdmin configurationAdmin = (ConfigurationAdmin) ctx.getService(configurationAdminReference); try { Configuration config = configurationAdmin.getConfiguration(pid); config.update(properties); } catch (IOException e) { logger.error(e.getMessage(), e); } } } } }