Bug 8214: Consume AAAService 69/55269/4
authorRyan Goulding <ryandgoulding@gmail.com>
Wed, 19 Apr 2017 18:37:14 +0000 (14:37 -0400)
committerRyan Goulding <ryandgoulding@gmail.com>
Tue, 25 Apr 2017 13:40:49 +0000 (13:40 +0000)
Consume AAAService ensuring the bundles are available from the BundleContext
prior to trying to load the rest of RESTCONF.

Change-Id: If3e081712d475e65799b805ce0cdcd6f946c93f2
Signed-off-by: Ryan Goulding <ryandgoulding@gmail.com>
restconf/sal-rest-connector/pom.xml
restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java

index f90b451ef1b7414af84fc2a22b46f0ddf7cd80ea..80b452f95013f3e0a6852ca0956453043859bc43 100644 (file)
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.aaa</groupId>
+      <artifactId>aaa-shiro-api</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
index 0b80458b639c82b4e618fbe12e2599b7fa08e699..fd026492cfec493032c2feb8176ebbb865dd4040 100644 (file)
@@ -9,12 +9,17 @@
 package org.opendaylight.controller.config.yang.md.sal.rest.connector;
 
 import org.opendaylight.RestconfWrapperProviders;
+import org.opendaylight.aaa.api.AAAService;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
+import org.osgi.framework.BundleContext;
 
 
 public class RestConnectorModule extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModule {
 
     private static RestConnectorRuntimeRegistration runtimeRegistration;
 
+    private BundleContext bundleContext;
+
     public RestConnectorModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
@@ -30,6 +35,11 @@ public class RestConnectorModule extends org.opendaylight.controller.config.yang
 
     @Override
     public java.lang.AutoCloseable createInstance() {
+
+        final WaitingServiceTracker<AAAService> aaaServiceWaitingServiceTracker =
+                WaitingServiceTracker.create(AAAService.class, bundleContext);
+        aaaServiceWaitingServiceTracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
+
         final RestconfWrapperProviders wrapperProviders = new RestconfWrapperProviders(getWebsocketPort());
         wrapperProviders.registerProviders(getDomBrokerDependency());
 
@@ -41,5 +51,9 @@ public class RestConnectorModule extends org.opendaylight.controller.config.yang
 
         return wrapperProviders;
     }
+
+    public void setBundleContext(final BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
 }
 
index fb664628903d017b149831949ba804b555e2c6f1..0933f603923a332c6912673b2ae2a40204a18ad2 100644 (file)
 */
 package org.opendaylight.controller.config.yang.md.sal.rest.connector;
 
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
 public class RestConnectorModuleFactory extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModuleFactory {
 
+    @Override
+    public RestConnectorModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+                                                 BundleContext bundleContext) {
+        final RestConnectorModule restConnectorModule = super.instantiateModule(instanceName,
+                dependencyResolver, bundleContext);
+        restConnectorModule.setBundleContext(bundleContext);
+        return restConnectorModule;
+    }
+
+    @Override
+    public RestConnectorModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+                               RestConnectorModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+        final RestConnectorModule restConnectorModule = super.instantiateModule(instanceName,
+                dependencyResolver, oldModule, oldInstance, bundleContext);
+        restConnectorModule.setBundleContext(bundleContext);
+        return restConnectorModule;
+    }
 }