aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch/src/main/java
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2014-09-17 11:26:32 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2014-09-17 13:23:45 +0200
commit36c0197d53bf8e712a8813a610e1faa7130b6072 (patch)
tree18b4272c2a92badf2cdf323dae559a9538e8ecea /sonar-batch/src/main/java
parentafaa0ecdd013e75d9ffb67bfceba8335f16ba6c4 (diff)
downloadsonarqube-36c0197d53bf8e712a8813a610e1faa7130b6072.tar.gz
sonarqube-36c0197d53bf8e712a8813a610e1faa7130b6072.zip
SONAR-5629 Call /batch/upload_report at the end of an analysis
Diffstat (limited to 'sonar-batch/src/main/java')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java2
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java25
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/phases/UpdateStatusJob.java20
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/qualitygate/QualityGateProvider.java9
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan/LastSnapshots.java2
5 files changed, 36 insertions, 22 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java
index 99f5f028978..46720c4e224 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java
@@ -143,7 +143,7 @@ public class JdbcDriverHolder {
String indexContent = serverClient.request(url);
// File is empty when H2 is used
if (Strings.isNullOrEmpty(indexContent)) {
- return new String[]{};
+ return new String[] {};
}
return indexContent.split("\\|");
} catch (Exception e) {
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java
index d43ef8e0e71..86130986d1f 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java
@@ -46,6 +46,7 @@ import java.net.URI;
*/
public class ServerClient implements BatchComponent {
+ private static final String GET = "GET";
private BootstrapProperties props;
private HttpDownloader.BaseHttpDownloader downloader;
@@ -64,7 +65,7 @@ public class ServerClient implements BatchComponent {
public void download(String pathStartingWithSlash, File toFile, @Nullable Integer readTimeoutMillis) {
try {
- InputSupplier<InputStream> inputSupplier = doRequest(pathStartingWithSlash, readTimeoutMillis);
+ InputSupplier<InputStream> inputSupplier = doRequest(pathStartingWithSlash, GET, readTimeoutMillis);
Files.copy(inputSupplier, toFile);
} catch (HttpDownloader.HttpException he) {
throw handleHttpException(he);
@@ -74,15 +75,23 @@ public class ServerClient implements BatchComponent {
}
public String request(String pathStartingWithSlash) {
- return request(pathStartingWithSlash, true);
+ return request(pathStartingWithSlash, GET, true);
+ }
+
+ public String request(String pathStartingWithSlash, String requestMethod) {
+ return request(pathStartingWithSlash, requestMethod, true);
}
public String request(String pathStartingWithSlash, boolean wrapHttpException) {
- return request(pathStartingWithSlash, wrapHttpException, null);
+ return request(pathStartingWithSlash, GET, wrapHttpException, null);
+ }
+
+ public String request(String pathStartingWithSlash, String requestMethod, boolean wrapHttpException) {
+ return request(pathStartingWithSlash, requestMethod, wrapHttpException, null);
}
- public String request(String pathStartingWithSlash, boolean wrapHttpException, @Nullable Integer timeoutMillis) {
- InputSupplier<InputStream> inputSupplier = doRequest(pathStartingWithSlash, timeoutMillis);
+ public String request(String pathStartingWithSlash, String requestMethod, boolean wrapHttpException, @Nullable Integer timeoutMillis) {
+ InputSupplier<InputStream> inputSupplier = doRequest(pathStartingWithSlash, requestMethod, timeoutMillis);
try {
return IOUtils.toString(inputSupplier.getInput(), "UTF-8");
} catch (HttpDownloader.HttpException e) {
@@ -92,7 +101,7 @@ public class ServerClient implements BatchComponent {
}
}
- private InputSupplier<InputStream> doRequest(String pathStartingWithSlash, @Nullable Integer timeoutMillis) {
+ private InputSupplier<InputStream> doRequest(String pathStartingWithSlash, String requestMethod, @Nullable Integer timeoutMillis) {
Preconditions.checkArgument(pathStartingWithSlash.startsWith("/"), "Path must start with slash /");
String path = StringEscapeUtils.escapeHtml(pathStartingWithSlash);
@@ -100,9 +109,9 @@ public class ServerClient implements BatchComponent {
try {
InputSupplier<InputStream> inputSupplier;
if (Strings.isNullOrEmpty(getLogin())) {
- inputSupplier = downloader.newInputSupplier(uri, timeoutMillis);
+ inputSupplier = downloader.newInputSupplier(uri, requestMethod, timeoutMillis);
} else {
- inputSupplier = downloader.newInputSupplier(uri, getLogin(), getPassword(), timeoutMillis);
+ inputSupplier = downloader.newInputSupplier(uri, requestMethod, getLogin(), getPassword(), timeoutMillis);
}
return inputSupplier;
} catch (Exception e) {
diff --git a/sonar-batch/src/main/java/org/sonar/batch/phases/UpdateStatusJob.java b/sonar-batch/src/main/java/org/sonar/batch/phases/UpdateStatusJob.java
index d3faf902b48..fabac1e31d0 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/phases/UpdateStatusJob.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/phases/UpdateStatusJob.java
@@ -29,7 +29,6 @@ import org.sonar.api.database.DatabaseSession;
import org.sonar.api.database.model.Snapshot;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.Scopes;
-import org.sonar.api.utils.SonarException;
import org.sonar.batch.bootstrap.AnalysisMode;
import org.sonar.batch.bootstrap.ServerClient;
import org.sonar.batch.index.ResourcePersister;
@@ -65,21 +64,28 @@ public class UpdateStatusJob implements BatchComponent {
public void execute() {
disablePreviousSnapshot();
enableCurrentSnapshot();
- evictPreviewDB();
+ uploadReport();
}
@VisibleForTesting
- void evictPreviewDB() {
+ void uploadReport() {
if (analysisMode.isPreview()) {
- // If this is a preview analysis then we should not evict remote preview database
+ // If this is a preview analysis then we should not upload reports
return;
}
String url = "/batch_bootstrap/evict?project=" + project.getId();
try {
- LOG.debug("Evict preview database");
- server.request(url);
+ LOG.debug("Upload report");
+ server.request(url, "POST");
} catch (Exception e) {
- throw new SonarException("Unable to evict preview database: " + url, e);
+ throw new IllegalStateException("Unable to evict preview database: " + url, e);
+ }
+ url = "/batch/upload_report?project=" + project.getEffectiveKey();
+ try {
+ LOG.debug("Publish results");
+ server.request(url, "POST");
+ } catch (Exception e) {
+ throw new IllegalStateException("Unable to publish results: " + url, e);
}
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/qualitygate/QualityGateProvider.java b/sonar-batch/src/main/java/org/sonar/batch/qualitygate/QualityGateProvider.java
index 7294e4e668b..5333c767ee1 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/qualitygate/QualityGateProvider.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/qualitygate/QualityGateProvider.java
@@ -36,7 +36,6 @@ import java.net.HttpURLConnection;
public class QualityGateProvider extends ProviderAdapter {
-
private static final Logger LOG = LoggerFactory.getLogger(QualityGateProvider.class);
private static final String PROPERTY_QUALITY_GATE = "sonar.qualitygate";
@@ -86,9 +85,9 @@ public class QualityGateProvider extends ProviderAdapter {
String jsonText = null;
try {
long qGateId = Long.valueOf(qualityGateSetting);
- jsonText = client.request(SHOW_URL + "?id="+qGateId, false);
- } catch(NumberFormatException configIsNameInsteadOfId) {
- jsonText = client.request(SHOW_URL + "?name="+qualityGateSetting, false);
+ jsonText = client.request(SHOW_URL + "?id=" + qGateId, false);
+ } catch (NumberFormatException configIsNameInsteadOfId) {
+ jsonText = client.request(SHOW_URL + "?name=" + qualityGateSetting, false);
}
JsonParser parser = new JsonParser();
@@ -97,7 +96,7 @@ public class QualityGateProvider extends ProviderAdapter {
QualityGate configuredGate = new QualityGate(root.get("name").getAsString());
if (root.has(ATTRIBUTE_CONDITIONS)) {
- for (JsonElement condition: root.get(ATTRIBUTE_CONDITIONS).getAsJsonArray()) {
+ for (JsonElement condition : root.get(ATTRIBUTE_CONDITIONS).getAsJsonArray()) {
JsonObject conditionObject = condition.getAsJsonObject();
configuredGate.add(new ResolvedCondition(conditionObject, metricFinder.findByKey(conditionObject.get("metric").getAsString())));
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/LastSnapshots.java b/sonar-batch/src/main/java/org/sonar/batch/scan/LastSnapshots.java
index f3917d40f20..3f2b0225940 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan/LastSnapshots.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan/LastSnapshots.java
@@ -64,7 +64,7 @@ public class LastSnapshots implements BatchComponent {
private String loadSourceFromWs(Resource resource) {
TimeProfiler profiler = new TimeProfiler(LOG).start("Load previous source code of: " + resource.getEffectiveKey()).setLevelToDebug();
try {
- return server.request("/api/sources?resource=" + resource.getEffectiveKey() + "&format=txt", false, analysisMode.getPreviewReadTimeoutSec() * 1000);
+ return server.request("/api/sources?resource=" + resource.getEffectiveKey() + "&format=txt", "GET", false, analysisMode.getPreviewReadTimeoutSec() * 1000);
} catch (HttpDownloader.HttpException he) {
if (he.getResponseCode() == 404) {
return "";