]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6427 Add root qualifiers in global nav WS 262/head
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Tue, 28 Apr 2015 07:46:33 +0000 (09:46 +0200)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Tue, 28 Apr 2015 07:46:33 +0000 (09:46 +0200)
server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalNavigationAction.java
server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalNavigationActionTest.java
server/sonar-server/src/test/resources/org/sonar/server/ui/ws/GlobalNavigationActionTest/with_qualifiers.json [new file with mode: 0644]

index 96692e7d8571522e4b15de4e2921fd76342885c3..30a795d4ac1d3a3cff01222b64fc5f8bf0762b90 100644 (file)
@@ -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();
+  }
 }
index a556cfcee55c12c17650a073e8aece10f92be694..b7ae528083c06180df2e8a04ea3798daaea8f45f 100644 (file)
@@ -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 (file)
index 0000000..3f3ca07
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "globalDashboards": [],
+  "globalPages": [],
+  "rootQualifiers": ["POL", "PAL"]
+}