diff --git a/src/main/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfiguration.java b/src/main/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfiguration.java index cfb0789..19bd411 100644 --- a/src/main/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfiguration.java +++ b/src/main/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfiguration.java @@ -51,6 +51,7 @@ public class GitLabPluginConfiguration { private final Configuration configuration; private final System2 system2; private final String baseUrl; + private final String baseWsUrl; public GitLabPluginConfiguration(Configuration configuration, System2 system2) { super(); @@ -62,14 +63,20 @@ public GitLabPluginConfiguration(Configuration configuration, System2 system2) { configuration.hasKey(CoreProperties.SERVER_BASE_URL) ? configuration.get(CoreProperties.SERVER_BASE_URL).orElse(null) : configuration.get("sonar.host.url").orElse(null); + this.baseUrl = sanitizeBaseUrl(tempBaseUrl); + String tempBaseWsUrl = configuration.get("sonar.host.url").orElse(null); + this.baseWsUrl = sanitizeBaseUrl(tempBaseWsUrl); + } + + private static String sanitizeBaseUrl(String tempBaseUrl) { if (tempBaseUrl == null) { tempBaseUrl = "http://localhost:9000"; } if (!tempBaseUrl.endsWith("/")) { tempBaseUrl += "/"; } - this.baseUrl = tempBaseUrl; + return tempBaseUrl; } public String projectId() { @@ -266,10 +273,21 @@ public PasswordAuthentication getPasswordAuthentication() { } } + /** + * The base URL for user-facing links (usually sonar.core.serverBaseURL, when defined in the + * SonarQube global configuration, or sonar.host.url otherwise). + */ public String baseUrl() { return baseUrl; } + /** + * The base URL for calling SonarQube web-services (usually sonar.host.url). + */ + public String baseWsUrl() { + return baseWsUrl; + } + public boolean isMergeRequestDiscussionEnabled() { return configuration.getBoolean(GitLabPlugin.GITLAB_MERGE_REQUEST_DISCUSSION).orElse(false); } diff --git a/src/main/java/com/talanlabs/sonar/plugins/gitlab/SonarFacade.java b/src/main/java/com/talanlabs/sonar/plugins/gitlab/SonarFacade.java index a635dcf..0ab9cf0 100644 --- a/src/main/java/com/talanlabs/sonar/plugins/gitlab/SonarFacade.java +++ b/src/main/java/com/talanlabs/sonar/plugins/gitlab/SonarFacade.java @@ -71,7 +71,7 @@ public class SonarFacade { public SonarFacade(Configuration settings, GitLabPluginConfiguration gitLabPluginConfiguration) { this.gitLabPluginConfiguration = gitLabPluginConfiguration; - HttpConnector httpConnector = HttpConnector.newBuilder().url(gitLabPluginConfiguration.baseUrl()) + HttpConnector httpConnector = HttpConnector.newBuilder().url(gitLabPluginConfiguration.baseWsUrl()) .credentials(settings.get(CoreProperties.LOGIN).orElse(null), settings.get(CoreProperties.PASSWORD).orElse(null)).build(); wsClient = WsClientFactories.getDefault().newClient(httpConnector); diff --git a/src/test/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfigurationTest.java b/src/test/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfigurationTest.java index 4f26774..6d29b32 100644 --- a/src/test/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfigurationTest.java +++ b/src/test/java/com/talanlabs/sonar/plugins/gitlab/GitLabPluginConfigurationTest.java @@ -66,6 +66,15 @@ public void testBaseUrl() { Assertions.assertThat(config.baseUrl()).isEqualTo("http://localhost:9000/"); } + @Test + public void testBaseWsUrl() { + Assertions.assertThat(config.baseWsUrl()).isEqualTo("http://localhost:9000/"); + + settings.setProperty("sonar.host.url", "http://myserver2/"); + config = new GitLabPluginConfiguration(settings.asConfig(), new System2()); + Assertions.assertThat(config.baseWsUrl()).isEqualTo("http://myserver2/"); + } + @Test public void testGlobal() { Assertions.assertThat(config.url()).isEqualTo("https://gitlab.com"); diff --git a/src/test/java/com/talanlabs/sonar/plugins/gitlab/SonarFacadeTest.java b/src/test/java/com/talanlabs/sonar/plugins/gitlab/SonarFacadeTest.java index a98a1f6..1db6edd 100644 --- a/src/test/java/com/talanlabs/sonar/plugins/gitlab/SonarFacadeTest.java +++ b/src/test/java/com/talanlabs/sonar/plugins/gitlab/SonarFacadeTest.java @@ -34,7 +34,6 @@ import org.junit.rules.TemporaryFolder; import org.sonar.api.CoreProperties; import org.sonar.api.batch.rule.Severity; -import org.sonar.api.config.PropertyDefinition; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.internal.MapSettings; import org.sonar.api.resources.Qualifiers; @@ -60,10 +59,9 @@ public class SonarFacadeTest { @Before public void prepare() throws IOException { - settings = new MapSettings(new PropertyDefinitions(PropertyDefinition.builder(CoreProperties.SERVER_BASE_URL).name("Server base URL") - .description("HTTP URL of this SonarQube server, such as http://yourhost.yourdomain/sonar. This value is used i.e. to create links in emails.") - .category(CoreProperties.CATEGORY_GENERAL).defaultValue("http://localhost:9000").build()).addComponents(GitLabPlugin.definitions())); - settings.setProperty(CoreProperties.SERVER_BASE_URL, String.format("http://%s:%d", sonar.getHostName(), sonar.getPort())); + settings = new MapSettings(new PropertyDefinitions(GitLabPlugin.definitions())); + settings.setProperty(CoreProperties.SERVER_BASE_URL, "http://whatever"); + settings.setProperty("sonar.host.url", String.format("http://%s:%d", sonar.getHostName(), sonar.getPort())); settings.setProperty(GitLabPlugin.GITLAB_QUERY_MAX_RETRY, 5); projectDir = temp.newFolder();