diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2014-09-17 11:26:32 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2014-09-17 13:23:45 +0200 |
commit | 36c0197d53bf8e712a8813a610e1faa7130b6072 (patch) | |
tree | 18b4272c2a92badf2cdf323dae559a9538e8ecea /sonar-batch/src/main/java | |
parent | afaa0ecdd013e75d9ffb67bfceba8335f16ba6c4 (diff) | |
download | sonarqube-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')
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 ""; |