![JAR search and dependency download from the Maven repository](/logo.png)
com.effectiveosgi.rt.config.impl.ConfigAdminToHierarchicalConfigInstallerRegistrationTracker Maven / Gradle / Ivy
package com.effectiveosgi.rt.config.impl;
import java.util.Dictionary;
import java.util.Hashtable;
import org.apache.felix.fileinstall.ArtifactInstaller;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.log.LogService;
import org.osgi.util.tracker.ServiceTracker;
class ConfigAdminToHierarchicalConfigInstallerRegistrationTracker extends ServiceTracker {
private final LogService log;
static class Registration {
HierarchicalConfigInstaller configInstaller;
ServiceRegistration artifactInstallerRegistration;
}
ConfigAdminToHierarchicalConfigInstallerRegistrationTracker(BundleContext context, LogService log) {
super(context, ConfigurationAdmin.class, null);
this.log = log;
}
@Override
public Registration addingService(ServiceReference reference) {
ConfigurationAdmin configAdmin = context.getService(reference);
Registration registration = new Registration();
registration.configInstaller = new HierarchicalConfigInstaller(context, configAdmin, log);
registration.configInstaller.open();
Dictionary svcProps = new Hashtable<>();
svcProps.put("type", "hierarchical");
svcProps.put("osgi.command.scope", "config");
svcProps.put("osgi.command.function", new String[] { "install", "update", "uninstall" });
registration.artifactInstallerRegistration = context.registerService(ArtifactInstaller.class, registration.configInstaller, svcProps);
return registration;
}
@Override
public void removedService(ServiceReference reference, Registration registration) {
try {
registration.artifactInstallerRegistration.unregister();
} catch (Exception e) {
log.log(reference, LogService.LOG_ERROR, "Unexpected error during service unregistration", e);
}
registration.configInstaller.close();
context.ungetService(reference);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy