Просмотр исходного кода

SONAR-10718 add field "edition" to WS api/navigation/global

tags/7.5
Simon Brandhof 6 лет назад
Родитель
Сommit
c75946789b

+ 6
- 1
server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java Просмотреть файл

@@ -21,6 +21,7 @@ package org.sonar.server.ui.ws;

import com.google.common.collect.ImmutableSet;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.sonar.api.Startable;
@@ -33,6 +34,7 @@ import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService.NewController;
import org.sonar.api.utils.text.JsonWriter;
import org.sonar.api.web.page.Page;
import org.sonar.core.platform.EditionProvider;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.dialect.H2;
@@ -72,10 +74,11 @@ public class GlobalAction implements NavigationWsAction, Startable {
private final DefaultOrganizationProvider defaultOrganizationProvider;
private final BranchFeatureProxy branchFeature;
private final UserSession userSession;
private final EditionProvider editionProvider;

public GlobalAction(PageRepository pageRepository, Configuration config, ResourceTypes resourceTypes, Server server,
WebServer webServer, DbClient dbClient, OrganizationFlags organizationFlags,
DefaultOrganizationProvider defaultOrganizationProvider, BranchFeatureProxy branchFeature, UserSession userSession) {
DefaultOrganizationProvider defaultOrganizationProvider, BranchFeatureProxy branchFeature, UserSession userSession, EditionProvider editionProvider) {
this.pageRepository = pageRepository;
this.config = config;
this.resourceTypes = resourceTypes;
@@ -86,6 +89,7 @@ public class GlobalAction implements NavigationWsAction, Startable {
this.defaultOrganizationProvider = defaultOrganizationProvider;
this.branchFeature = branchFeature;
this.userSession = userSession;
this.editionProvider = editionProvider;
this.systemSettingValuesByKey = new HashMap<>();
}

@@ -122,6 +126,7 @@ public class GlobalAction implements NavigationWsAction, Startable {
writeDatabaseProduction(json);
writeOrganizationSupport(json);
writeBranchSupport(json);
editionProvider.get().ifPresent(e -> json.prop("edition", e.name().toLowerCase(Locale.ENGLISH)));
json.prop("standalone", webServer.isStandalone());
json.endObject();
}

+ 2
- 1
server/sonar-server/src/main/resources/org/sonar/server/ui/ws/global-example.json Просмотреть файл

@@ -29,5 +29,6 @@
"branchesEnabled": false,
"defaultOrganization": "key_foo",
"canAdmin": false,
"standalone": true
"standalone": true,
"edition": "community"
}

+ 24
- 3
server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java Просмотреть файл

@@ -19,6 +19,7 @@
*/
package org.sonar.server.ui.ws;

import java.util.Optional;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.internal.MapSettings;
@@ -28,13 +29,14 @@ import org.sonar.api.resources.ResourceTypeTree;
import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.web.page.Page;
import org.sonar.api.web.page.PageDefinition;
import org.sonar.core.extension.CoreExtensionRepository;
import org.sonar.core.platform.EditionProvider;
import org.sonar.core.platform.PluginInfo;
import org.sonar.core.platform.PluginRepository;
import org.sonar.db.DbClient;
import org.sonar.db.dialect.H2;
import org.sonar.db.dialect.MySql;
import org.sonar.server.branch.BranchFeatureRule;
import org.sonar.core.extension.CoreExtensionRepository;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.organization.TestOrganizationFlags;
@@ -61,10 +63,10 @@ public class GlobalActionTest {
private Server server = mock(Server.class);
private WebServer webServer = mock(WebServer.class);
private DbClient dbClient = mock(DbClient.class, RETURNS_DEEP_STUBS);

private TestOrganizationFlags organizationFlags = TestOrganizationFlags.standalone();
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.fromUuid("foo");
private BranchFeatureRule branchFeature = new BranchFeatureRule();
private EditionProvider editionProvider = mock(EditionProvider.class);

private WsActionTester ws;

@@ -269,11 +271,30 @@ public class GlobalActionTest {
when(server.getVersion()).thenReturn("6.2");
when(dbClient.getDatabase().getDialect()).thenReturn(new MySql());
when(webServer.isStandalone()).thenReturn(true);
when(editionProvider.get()).thenReturn(Optional.of(EditionProvider.Edition.COMMUNITY));

String result = call();
assertJson(result).isSimilarTo(ws.getDef().responseExampleAsString());
}

@Test
public void edition_is_not_returned_if_not_defined() {
init();
when(editionProvider.get()).thenReturn(Optional.empty());

String json = call();
assertThat(json).doesNotContain("edition");
}

@Test
public void edition_is_returned_if_defined() {
init();
when(editionProvider.get()).thenReturn(Optional.of(EditionProvider.Edition.DEVELOPER));

String json = call();
assertJson(json).isSimilarTo("{\"edition\":\"developer\"}");
}

private void init() {
init(new org.sonar.api.web.page.Page[] {}, new ResourceTypeTree[] {});
}
@@ -293,7 +314,7 @@ public class GlobalActionTest {
}});
pageRepository.start();
GlobalAction wsAction = new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server,
webServer, dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession);
webServer, dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession, editionProvider);
ws = new WsActionTester(wsAction);
wsAction.start();
}

Загрузка…
Отмена
Сохранить