From 214883e844be8ca3b91140508170cfed6158e31c Mon Sep 17 00:00:00 2001 From: Andrej Mak Date: Fri, 5 May 2017 11:05:46 +0200 Subject: [PATCH] Bug 8364: Set bundle context when module reloads Fix for bug Bug 8214 handles waiting for AAA, when Restconf is installed for the first time. Override handleChangedClass to do the same thing for reinstall case. Also close old module to release bound ports and started threads. Change-Id: I00f5f330fca39bb63f66517dddd8d1371ae353e8 Signed-off-by: Andrej Mak --- .../connector/RestConnectorModuleFactory.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java b/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java index 0933f60392..e721362086 100644 --- a/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java +++ b/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java @@ -17,13 +17,15 @@ package org.opendaylight.controller.config.yang.md.sal.rest.connector; import org.opendaylight.controller.config.api.DependencyResolver; +import org.opendaylight.controller.config.api.DynamicMBeanWithInstance; import org.osgi.framework.BundleContext; -public class RestConnectorModuleFactory extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModuleFactory { +public class RestConnectorModuleFactory + extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModuleFactory { @Override - public RestConnectorModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, - BundleContext bundleContext) { + public RestConnectorModule instantiateModule(final String instanceName, final DependencyResolver dependencyResolver, + final BundleContext bundleContext) { final RestConnectorModule restConnectorModule = super.instantiateModule(instanceName, dependencyResolver, bundleContext); restConnectorModule.setBundleContext(bundleContext); @@ -31,11 +33,23 @@ public class RestConnectorModuleFactory extends org.opendaylight.controller.conf } @Override - public RestConnectorModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, - RestConnectorModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + public RestConnectorModule instantiateModule(final String instanceName, final DependencyResolver dependencyResolver, + final RestConnectorModule oldModule, final AutoCloseable oldInstance, + final BundleContext bundleContext) { final RestConnectorModule restConnectorModule = super.instantiateModule(instanceName, dependencyResolver, oldModule, oldInstance, bundleContext); restConnectorModule.setBundleContext(bundleContext); return restConnectorModule; } + + @Override + public RestConnectorModule handleChangedClass(final DependencyResolver dependencyResolver, + final DynamicMBeanWithInstance old, final BundleContext bundleContext) + throws Exception { + //close old restconf instance + old.getModule().getInstance().close(); + final RestConnectorModule restconfModule = super.handleChangedClass(dependencyResolver, old, bundleContext); + restconfModule.setBundleContext(bundleContext); + return restconfModule; + } } -- 2.36.6