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;
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
writeDashboards(json, dashboards);
writePages(json);
writeLogoProperties(json);
+ writeQualifiers(json);
json.endObject().close();
}
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();
+ }
}
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;
@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();
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() {