X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2Fosgi%2FConfigManagerActivator.java;h=57aa74cccc58f8b25f604a8f451d521764543107;hb=28fc795bb908acd6134d6b19146ba819e311237e;hp=1ee6cca7e22f86b1eb634b3c94c71ee503cd1a84;hpb=213aae87ecaccb43f3d909e0455db43511ace381;p=controller.git diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ConfigManagerActivator.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ConfigManagerActivator.java index 1ee6cca7e2..57aa74cccc 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ConfigManagerActivator.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ConfigManagerActivator.java @@ -9,11 +9,14 @@ package org.opendaylight.controller.config.manager.impl.osgi; import java.lang.management.ManagementFactory; +import javax.management.InstanceAlreadyExistsException; import javax.management.MBeanServer; 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.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService; +import org.opendaylight.yangtools.yang.data.impl.codec.CodecRegistry; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; @@ -30,11 +33,28 @@ public class ConfigManagerActivator implements BundleActivator { private ConfigRegistryJMXRegistrator configRegistryJMXRegistrator; private ServiceRegistration configRegistryServiceRegistration; + private ServiceTracker tracker; + @Override public void start(BundleContext context) throws Exception { + BindingIndependentMappingServiceTracker mappingServiceTracker = new BindingIndependentMappingServiceTracker( + context, this); + tracker = new ServiceTracker( + context, BindingIndependentMappingService.class, mappingServiceTracker); + + logger.debug("Waiting for codec registry"); + + tracker.open(); + } + + void initConfigManager(BundleContext context, CodecRegistry codecRegistry) { BundleContextBackedModuleFactoriesResolver bundleContextBackedModuleFactoriesResolver = new BundleContextBackedModuleFactoriesResolver(context); MBeanServer configMBeanServer = ManagementFactory.getPlatformMBeanServer(); + + + // TODO push codecRegistry/IdentityCodec to dependencyResolver + configRegistry = new ConfigRegistryImpl( bundleContextBackedModuleFactoriesResolver, configMBeanServer); @@ -43,19 +63,28 @@ public class ConfigManagerActivator implements BundleActivator { // register config registry to jmx configRegistryJMXRegistrator = new ConfigRegistryJMXRegistrator(configMBeanServer); - configRegistryJMXRegistrator.registerToJMX(configRegistry); + try { + configRegistryJMXRegistrator.registerToJMX(configRegistry); + } catch (InstanceAlreadyExistsException e) { + throw new RuntimeException("Config Registry was already registered to JMX", e); + } // track bundles containing factories - extenderBundleTracker = new ExtenderBundleTracker(context); + BlankTransactionServiceTracker blankTransactionServiceTracker = new BlankTransactionServiceTracker(configRegistry); + extenderBundleTracker = new ExtenderBundleTracker(context, blankTransactionServiceTracker); extenderBundleTracker.open(); - BlankTransactionServiceTracker customizer = new BlankTransactionServiceTracker(configRegistry); - ServiceTracker serviceTracker = new ServiceTracker(context, ModuleFactory.class, customizer); + ServiceTracker serviceTracker = new ServiceTracker(context, ModuleFactory.class, blankTransactionServiceTracker); serviceTracker.open(); } @Override public void stop(BundleContext context) throws Exception { + try { + tracker.close(); + } catch (Exception e) { + logger.warn("Exception while closing tracker", e); + } try { configRegistry.close(); } catch (Exception e) {