From: Tom Pantelis Date: Fri, 6 Apr 2018 22:35:29 +0000 (-0400) Subject: Fix yanglib SFT failure X-Git-Tag: release/fluorine~98^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=e238f29bae5c1e13a526e83433a00986ff1eee94;p=netconf.git Fix yanglib SFT failure For some reason the YangLibRestApp doesn't get created which causes BP to timeout b/c it advertises an OSGi service referenced by the BP xml. Instead of using a service I changed it to use a static to bridge between BP and the web app, as is done elsewhere. Change-Id: Ia606514258d2082bf041ac81ab890f53f999ee2c Signed-off-by: Tom Pantelis (cherry picked from commit c734a43d922f4603c0463e6de86c99f0ca317887) --- diff --git a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java index a89233727e..d969f0b40f 100644 --- a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java +++ b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java @@ -58,21 +58,18 @@ public class YangLibProvider implements AutoCloseable, SchemaSourceListener { input -> YangTextSchemaSource.class.isAssignableFrom(input.getRepresentation()); private final DataBroker dataBroker; - private final YangLibServiceImpl yangLibService; private final YanglibConfig yanglibConfig; private SchemaListenerRegistration schemaListenerRegistration; private SharedSchemaRepository schemaRepository; - public YangLibProvider(final YanglibConfig yanglibConfig, final DataBroker dataBroker, - final YangLibServiceImpl yangLibService) { + public YangLibProvider(final YanglibConfig yanglibConfig, final DataBroker dataBroker) { this.yanglibConfig = Preconditions.checkNotNull(yanglibConfig); this.dataBroker = Preconditions.checkNotNull(dataBroker); - this.yangLibService = Preconditions.checkNotNull(yangLibService); } @Override public void close() { - yangLibService.setSchemaRepository(null); + YangLibServiceImpl.setSchemaRepository(null); if (schemaListenerRegistration != null) { schemaListenerRegistration.close(); } @@ -95,7 +92,7 @@ public class YangLibProvider implements AutoCloseable, SchemaSourceListener { schemaRepository.registerSchemaSourceListener(cache); schemaListenerRegistration = schemaRepository.registerSchemaSourceListener(this); - yangLibService.setSchemaRepository(schemaRepository); + YangLibServiceImpl.setSchemaRepository(schemaRepository); LOG.info("Started yang library with sources from {}", cacheFolderFile); } diff --git a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibRestApp.java b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibRestApp.java index cafcd11623..308e9bb7a3 100644 --- a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibRestApp.java +++ b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibRestApp.java @@ -12,17 +12,9 @@ import java.util.Collections; import java.util.Set; import javax.ws.rs.core.Application; import org.opendaylight.yanglib.api.YangLibRestAppService; -import org.osgi.framework.FrameworkUtil; public class YangLibRestApp extends Application implements YangLibRestAppService { - - private final YangLibServiceImpl yangLibService; - - public YangLibRestApp() { - this.yangLibService = new YangLibServiceImpl(); - FrameworkUtil.getBundle(getClass()).getBundleContext().registerService(YangLibRestAppService.class.getName(), - this, null); - } + private final YangLibServiceImpl yangLibService = new YangLibServiceImpl(); @Override public Set getSingletons() { diff --git a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibServiceImpl.java b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibServiceImpl.java index 7b942dd007..949d8f5773 100644 --- a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibServiceImpl.java +++ b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibServiceImpl.java @@ -29,15 +29,15 @@ import org.slf4j.LoggerFactory; public class YangLibServiceImpl implements YangLibService { private static final Logger LOG = LoggerFactory.getLogger(YangLibServiceImpl.class); - private volatile SchemaRepository schemaRepository; + private static volatile SchemaRepository schemaRepository; public YangLibServiceImpl() { } - public void setSchemaRepository(final SchemaRepository schemaRepository) { + public static void setSchemaRepository(final SchemaRepository schemaRepository) { LOG.debug("Setting schema repository {}", schemaRepository); - this.schemaRepository = schemaRepository; + YangLibServiceImpl.schemaRepository = schemaRepository; } @Override diff --git a/netconf/yanglib/src/main/resources/WEB-INF/web.xml b/netconf/yanglib/src/main/resources/WEB-INF/web.xml index ec758fb827..73f005fcfc 100644 --- a/netconf/yanglib/src/main/resources/WEB-INF/web.xml +++ b/netconf/yanglib/src/main/resources/WEB-INF/web.xml @@ -10,10 +10,11 @@ javax.ws.rs.Application org.opendaylight.yanglib.impl.YangLibRestApp + 1 JAXRSYanglib /* - \ No newline at end of file + diff --git a/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml b/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml index 890d72bbdf..d16f601db6 100644 --- a/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml +++ b/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml @@ -14,15 +14,11 @@ binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.yanglib.impl.rev141210.YanglibConfig"/> - - - - diff --git a/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java b/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java index 5372a07260..36db57aa78 100644 --- a/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java +++ b/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java @@ -89,7 +89,7 @@ public class YangLibProviderTest { final YanglibConfig yanglibConfig = new YanglibConfigBuilder().setBindingAddr("www.fake.com") .setBindingPort(300L).setCacheFolder(CACHE_DIR.getAbsolutePath()).build(); - yangLibProvider = new YangLibProvider(yanglibConfig, dataBroker, new YangLibServiceImpl()); + yangLibProvider = new YangLibProvider(yanglibConfig, dataBroker); } @Test diff --git a/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibRestAppTest.java b/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibRestAppTest.java index 62b81599db..c72366d6f8 100644 --- a/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibRestAppTest.java +++ b/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibRestAppTest.java @@ -9,44 +9,17 @@ package org.opendaylight.yanglib.impl; import static junit.framework.TestCase.assertTrue; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; import java.util.Set; import org.junit.Test; -import org.junit.runner.RunWith; -import org.opendaylight.yanglib.api.YangLibRestAppService; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -@RunWith(PowerMockRunner.class) -@PrepareForTest(FrameworkUtil.class) public class YangLibRestAppTest { @Test public void testYangLibRestApp() { - PowerMockito.mockStatic(FrameworkUtil.class); - - final BundleContext bundleContext = mock(BundleContext.class); - final Bundle bundle = mock(Bundle.class); - - given(FrameworkUtil.getBundle(any())).willReturn(bundle); - given(bundle.getBundleContext()).willReturn(bundleContext); - final YangLibRestApp yangLibRestApp = new YangLibRestApp(); final Set singleton = yangLibRestApp.getSingletons(); assertTrue(singleton.contains(yangLibRestApp.getYangLibService())); - - then(bundleContext).should(times(1)) - .registerService(eq(YangLibRestAppService.class.getName()), eq(yangLibRestApp), eq(null)); } }