From 3ba7b51fa0d0add0917be06d44c037ca5a969c4f Mon Sep 17 00:00:00 2001 From: Ryan Goulding Date: Wed, 19 Apr 2017 14:37:14 -0400 Subject: [PATCH] Bug 8214: Consume AAAService 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 --- restconf/sal-rest-connector/pom.xml | 4 ++++ .../rest/connector/RestConnectorModule.java | 14 +++++++++++++ .../connector/RestConnectorModuleFactory.java | 20 +++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/restconf/sal-rest-connector/pom.xml b/restconf/sal-rest-connector/pom.xml index 3dfb2da248..0d5a8c9cbe 100644 --- a/restconf/sal-rest-connector/pom.xml +++ b/restconf/sal-rest-connector/pom.xml @@ -172,6 +172,10 @@ org.hamcrest hamcrest-core + + org.opendaylight.aaa + aaa-shiro-api + diff --git a/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java b/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java index 0b80458b63..fd026492cf 100644 --- a/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java +++ b/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java @@ -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 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; + } } 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 fb66462890..0933f60392 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 @@ -16,6 +16,26 @@ */ 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; + } } -- 2.36.6