Bug 8364: Set bundle context when module reloads 83/56583/1
authorAndrej Mak <andrej.mak@pantheon.tech>
Fri, 5 May 2017 09:05:46 +0000 (11:05 +0200)
committerAndrej Mak <andrej.mak@pantheon.tech>
Fri, 5 May 2017 09:16:53 +0000 (09:16 +0000)
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 <andrej.mak@pantheon.tech>
restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java

index 0933f603923a332c6912673b2ae2a40204a18ad2..e721362086ea2bf3487c5b911ff425769a7f0773 100644 (file)
 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;
+    }
 }