From: Jean-Baptiste Lievremont Date: Tue, 28 Apr 2015 07:46:33 +0000 (+0200) Subject: SONAR-6427 Add root qualifiers in global nav WS X-Git-Tag: 5.2-RC1~2105 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=58b2d6ae46ba1d7a25507cb4866be855b07e9366;p=sonarqube.git SONAR-6427 Add root qualifiers in global nav WS --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalNavigationAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalNavigationAction.java index 96692e7d857..30a795d4ac1 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalNavigationAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalNavigationAction.java @@ -20,6 +20,8 @@ package org.sonar.server.ui.ws; import org.sonar.api.config.Settings; +import org.sonar.api.resources.ResourceType; +import org.sonar.api.resources.ResourceTypes; import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService.NewController; @@ -41,11 +43,13 @@ public class GlobalNavigationAction implements NavigationAction { private final ActiveDashboardDao activeDashboardDao; private final Views views; private final Settings settings; + private final ResourceTypes resourceTypes; - public GlobalNavigationAction(ActiveDashboardDao activeDashboardDao, Views views, Settings settings) { + public GlobalNavigationAction(ActiveDashboardDao activeDashboardDao, Views views, Settings settings, ResourceTypes resourceTypes) { this.activeDashboardDao = activeDashboardDao; this.views = views; this.settings = settings; + this.resourceTypes = resourceTypes; } @Override @@ -71,6 +75,7 @@ public class GlobalNavigationAction implements NavigationAction { writeDashboards(json, dashboards); writePages(json); writeLogoProperties(json); + writeQualifiers(json); json.endObject().close(); } @@ -101,4 +106,11 @@ public class GlobalNavigationAction implements NavigationAction { json.prop("logoWidth", settings.getString("sonar.lf.logoWidthPx")); } + private void writeQualifiers(JsonWriter json) { + json.name("rootQualifiers").beginArray(); + for (ResourceType rootType : resourceTypes.getRoots()) { + json.value(rootType.getQualifier()); + } + json.endArray(); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalNavigationActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalNavigationActionTest.java index a556cfcee55..b7ae528083c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalNavigationActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalNavigationActionTest.java @@ -24,6 +24,9 @@ import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; import org.sonar.api.config.Settings; +import org.sonar.api.resources.ResourceType; +import org.sonar.api.resources.ResourceTypeTree; +import org.sonar.api.resources.ResourceTypes; import org.sonar.api.utils.System2; import org.sonar.api.web.Page; import org.sonar.api.web.View; @@ -77,19 +80,42 @@ public class GlobalNavigationActionTest { @Test public void empty_call() throws Exception { - wsTester = new WsTester(new NavigationWs(new GlobalNavigationAction(activeDashboardDao, new Views(), new Settings()))); + wsTester = new WsTester(new NavigationWs(new GlobalNavigationAction(activeDashboardDao, new Views(), new Settings(), new ResourceTypes()))); MockUserSession.set(); wsTester.newGetRequest("api/navigation", "global").execute().assertJson(getClass(), "empty.json"); } + @Test + public void with_root_qualifiers() throws Exception { + ResourceTypes resourceTypes = new ResourceTypes( + new ResourceTypeTree[] { + ResourceTypeTree.builder() + .addType(ResourceType.builder("POL").build()) + .addType(ResourceType.builder("LOP").build()) + .addRelations("POL", "LOP") + .build(), + ResourceTypeTree.builder() + .addType(ResourceType.builder("PAL").build()) + .addType(ResourceType.builder("LAP").build()) + .addRelations("PAL", "LAP") + .build() + }); + wsTester = new WsTester(new NavigationWs(new GlobalNavigationAction(activeDashboardDao, new Views(), new Settings(), resourceTypes))); + + MockUserSession.set(); + + wsTester.newGetRequest("api/navigation", "global").execute().assertJson(getClass(), "with_qualifiers.json"); + } + @Test public void only_logo() throws Exception { wsTester = new WsTester(new NavigationWs(new GlobalNavigationAction(activeDashboardDao, new Views(), new Settings() .setProperty("sonar.lf.logoUrl", "http://some-server.tld/logo.png") - .setProperty("sonar.lf.logoWidthPx", "123")))); + .setProperty("sonar.lf.logoWidthPx", "123"), + new ResourceTypes()))); MockUserSession.set(); @@ -132,7 +158,7 @@ public class GlobalNavigationActionTest { Settings settings = new Settings() .setProperty("sonar.lf.logoUrl", "http://some-server.tld/logo.png") .setProperty("sonar.lf.logoWidthPx", "123"); - wsTester = new WsTester(new NavigationWs(new GlobalNavigationAction(activeDashboardDao, createViews(), settings))); + wsTester = new WsTester(new NavigationWs(new GlobalNavigationAction(activeDashboardDao, createViews(), settings, new ResourceTypes()))); } private void createAndConfigureDashboardForUser() { diff --git a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/GlobalNavigationActionTest/with_qualifiers.json b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/GlobalNavigationActionTest/with_qualifiers.json new file mode 100644 index 00000000000..3f3ca07ceaf --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/GlobalNavigationActionTest/with_qualifiers.json @@ -0,0 +1,5 @@ +{ + "globalDashboards": [], + "globalPages": [], + "rootQualifiers": ["POL", "PAL"] +}