import org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl;
import org.opendaylight.controller.config.manager.impl.jmx.ConfigRegistryJMXRegistrator;
+import org.opendaylight.controller.config.spi.ModuleFactory;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private ExtenderBundleTracker extenderBundleTracker;
private ConfigRegistryImpl configRegistry;
private ConfigRegistryJMXRegistrator configRegistryJMXRegistrator;
+ private ServiceRegistration configRegistryServiceRegistration;
@Override
public void start(BundleContext context) throws Exception {
- extenderBundleTracker = new ExtenderBundleTracker(context);
- extenderBundleTracker.open();
- BundleContextBackedModuleFactoriesResolver bundleContextBackedModuleFactoriesResolver = new BundleContextBackedModuleFactoriesResolver(
- context);
-
- MBeanServer configMBeanServer = ManagementFactory
- .getPlatformMBeanServer();
+ BundleContextBackedModuleFactoriesResolver bundleContextBackedModuleFactoriesResolver =
+ new BundleContextBackedModuleFactoriesResolver(context);
+ MBeanServer configMBeanServer = ManagementFactory.getPlatformMBeanServer();
configRegistry = new ConfigRegistryImpl(
- bundleContextBackedModuleFactoriesResolver, context,
- configMBeanServer);
- // register config registry to jmx
+ bundleContextBackedModuleFactoriesResolver, configMBeanServer);
- configRegistryJMXRegistrator = new ConfigRegistryJMXRegistrator(
- configMBeanServer);
+ // register config registry to OSGi
+ configRegistryServiceRegistration = context.registerService(ConfigRegistryImpl.class, configRegistry, null);
+
+ // register config registry to jmx
+ configRegistryJMXRegistrator = new ConfigRegistryJMXRegistrator(configMBeanServer);
configRegistryJMXRegistrator.registerToJMX(configRegistry);
+
+ // track bundles containing factories
+ extenderBundleTracker = new ExtenderBundleTracker(context);
+ extenderBundleTracker.open();
+
+ BlankTransactionServiceTracker customizer = new BlankTransactionServiceTracker(configRegistry);
+ ServiceTracker<?, ?> serviceTracker = new ServiceTracker(context, ModuleFactory.class, customizer);
+ serviceTracker.open();
}
@Override
"Exception while closing config registry jmx registrator",
e);
}
+ try {
+ configRegistryServiceRegistration.unregister();
+ } catch (Exception e) {
+ logger.warn("Exception while unregistering config registry", e);
+ }
}
}