aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-scanner-engine/src/main
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2016-06-09 11:45:01 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2016-06-13 10:39:20 +0200
commit466b48d80a5ae5f0b5fa11f17398b36c932135e8 (patch)
tree16b596f4e58c243630cbe92f5a44a5e5a488dbf8 /sonar-scanner-engine/src/main
parent475108c6cc00851cc76e57e01492a6df30c12a4b (diff)
downloadsonarqube-466b48d80a5ae5f0b5fa11f17398b36c932135e8.tar.gz
sonarqube-466b48d80a5ae5f0b5fa11f17398b36c932135e8.zip
SONAR-7748 Implement API Server.getPublicRootUrl() on scanner side
Diffstat (limited to 'sonar-scanner-engine/src/main')
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/batch/platform/DefaultServer.java19
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/batch/report/ReportPublisher.java24
2 files changed, 19 insertions, 24 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/batch/platform/DefaultServer.java b/sonar-scanner-engine/src/main/java/org/sonar/batch/platform/DefaultServer.java
index b747438a9f5..60ad445afa7 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/batch/platform/DefaultServer.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/batch/platform/DefaultServer.java
@@ -30,17 +30,19 @@ import org.sonar.api.CoreProperties;
import org.sonar.api.batch.BatchSide;
import org.sonar.api.config.Settings;
import org.sonar.api.platform.Server;
-import org.sonar.batch.bootstrap.GlobalProperties;
+import org.sonar.batch.bootstrap.BatchWsClient;
+
+import static org.apache.commons.lang.StringUtils.trimToEmpty;
@BatchSide
public class DefaultServer extends Server {
private Settings settings;
- private GlobalProperties props;
+ private BatchWsClient client;
- public DefaultServer(Settings settings, GlobalProperties props) {
+ public DefaultServer(Settings settings, BatchWsClient client) {
this.settings = settings;
- this.props = props;
+ this.client = client;
}
@Override
@@ -85,7 +87,12 @@ public class DefaultServer extends Server {
@Override
public String getPublicRootUrl() {
- return null;
+ String baseUrl = trimToEmpty(settings.getString(CoreProperties.SERVER_BASE_URL));
+ if (baseUrl.isEmpty()) {
+ // If server base URL was not configured in Sonar server then is is better to take URL configured on batch side
+ baseUrl = client.baseUrl();
+ }
+ return StringUtils.removeEnd(baseUrl, "/");
}
@Override
@@ -100,7 +107,7 @@ public class DefaultServer extends Server {
@Override
public String getURL() {
- return StringUtils.removeEnd(StringUtils.defaultIfBlank(props.property("sonar.host.url"), "http://localhost:9000"), "/");
+ return StringUtils.removeEnd(client.baseUrl(), "/");
}
@Override
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/batch/report/ReportPublisher.java b/sonar-scanner-engine/src/main/java/org/sonar/batch/report/ReportPublisher.java
index 2539aa065ee..b47217b8859 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/batch/report/ReportPublisher.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/batch/report/ReportPublisher.java
@@ -34,10 +34,10 @@ import java.util.Map;
import javax.annotation.Nullable;
import org.apache.commons.io.FileUtils;
import org.picocontainer.Startable;
-import org.sonar.api.CoreProperties;
import org.sonar.api.batch.BatchSide;
import org.sonar.api.batch.bootstrap.ProjectDefinition;
import org.sonar.api.config.Settings;
+import org.sonar.api.platform.Server;
import org.sonar.api.utils.MessageException;
import org.sonar.api.utils.TempFolder;
import org.sonar.api.utils.ZipUtils;
@@ -52,7 +52,6 @@ import org.sonarqube.ws.WsCe;
import org.sonarqube.ws.client.PostRequest;
import org.sonarqube.ws.client.WsResponse;
-import static org.apache.commons.lang.StringUtils.trimToEmpty;
import static org.sonar.core.util.FileUtils.deleteQuietly;
@BatchSide
@@ -71,14 +70,16 @@ public class ReportPublisher implements Startable {
private final DefaultAnalysisMode analysisMode;
private final TempFolder temp;
private final ReportPublisherStep[] publishers;
+ private final Server server;
private File reportDir;
private ScannerReportWriter writer;
- public ReportPublisher(Settings settings, BatchWsClient wsClient, AnalysisContextReportPublisher contextPublisher,
+ public ReportPublisher(Settings settings, BatchWsClient wsClient, Server server, AnalysisContextReportPublisher contextPublisher,
ImmutableProjectReactor projectReactor, DefaultAnalysisMode analysisMode, TempFolder temp, ReportPublisherStep[] publishers) {
this.settings = settings;
this.wsClient = wsClient;
+ this.server = server;
this.contextPublisher = contextPublisher;
this.projectReactor = projectReactor;
this.analysisMode = analysisMode;
@@ -93,7 +94,7 @@ public class ReportPublisher implements Startable {
contextPublisher.init(writer);
if (!analysisMode.isIssues() && !analysisMode.isMediumTest()) {
- String publicUrl = publicUrl();
+ String publicUrl = server.getPublicRootUrl();
if (HttpUrl.parse(publicUrl) == null) {
throw MessageException.of("Failed to parse public URL set in SonarQube server: " + publicUrl);
}
@@ -185,7 +186,7 @@ public class ReportPublisher implements Startable {
if (taskId == null) {
LOG.info("ANALYSIS SUCCESSFUL");
} else {
- String publicUrl = publicUrl();
+ String publicUrl = server.getPublicRootUrl();
HttpUrl httpUrl = HttpUrl.parse(publicUrl);
Map<String, String> metadata = new LinkedHashMap<>();
@@ -230,17 +231,4 @@ public class ReportPublisher implements Startable {
throw new IllegalStateException("Unable to dump " + file, e);
}
}
-
- /**
- * The public URL is optionally configured on server. If not, then the regular URL is returned.
- * See https://jira.sonarsource.com/browse/SONAR-4239
- */
- private String publicUrl() {
- String baseUrl = trimToEmpty(settings.getString(CoreProperties.SERVER_BASE_URL));
- if (baseUrl.isEmpty()) {
- // If server base URL was not configured in Sonar server then is is better to take URL configured on batch side
- baseUrl = wsClient.baseUrl();
- }
- return baseUrl.replaceAll("(/)+$", "");
- }
}