]> source.dussan.org Git - sonarqube.git/commitdiff
Fix quality flaws 655/head
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 26 Nov 2015 08:31:09 +0000 (09:31 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 26 Nov 2015 13:45:59 +0000 (14:45 +0100)
sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java
sonar-batch/src/main/java/org/sonar/batch/report/ReportPublisher.java

index a292451e8182235e72c5fcfd4698d60239706596..ec34bfb7cef2f08cf2f1b9eab4f213b967e85093 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.batch.bootstrap;
 
-import org.sonar.api.utils.MessageException;
 import com.google.common.base.Joiner;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
@@ -42,6 +41,7 @@ import org.apache.commons.lang.StringUtils;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.batch.BatchSide;
 import org.sonar.api.utils.HttpDownloader;
+import org.sonar.api.utils.MessageException;
 import org.sonar.batch.bootstrapper.EnvironmentInformation;
 import org.sonar.core.util.DefaultHttpDownloader;
 
@@ -81,7 +81,7 @@ public class ServerClient {
       InputStream is = load(pathStartingWithSlash, GET, false, connectTimeoutMillis, readTimeoutMillis);
       Files.copy(is, toFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
     } catch (HttpDownloader.HttpException he) {
-      throw handleHttpException(he);
+      throw handleHttpException(he.getUri().toString(), he.getResponseCode(), he.getResponseContent(), he);
     } catch (IOException e) {
       throw new IllegalStateException(String.format("Unable to download '%s' to: %s", pathStartingWithSlash, toFile), e);
     }
@@ -114,26 +114,26 @@ public class ServerClient {
       } else {
         return downloader.newInputSupplier(uri, requestMethod, getLogin(), getPassword(), connectTimeoutMs, readTimeoutMs).getInput();
       }
-    } catch (HttpDownloader.HttpException e) {
+    } catch (HttpDownloader.HttpException he) {
       if (wrapHttpException) {
-        throw handleHttpException(e);
+        throw handleHttpException(he.getUri().toString(), he.getResponseCode(), he.getResponseContent(), he);
       } else {
-        throw e;
+        throw he;
       }
     } catch (IOException e) {
       throw new IllegalStateException(String.format("Unable to request: %s", uri), e);
     }
   }
 
-  public RuntimeException handleHttpException(HttpDownloader.HttpException he) {
-    if (he.getResponseCode() == 401) {
+  public RuntimeException handleHttpException(String url, int responseCode, String responseContent, Exception he) {
+    if (responseCode == 401) {
       return MessageException.of(String.format(getMessageWhenNotAuthorized(), CoreProperties.LOGIN, CoreProperties.PASSWORD), he);
     }
-    if (he.getResponseCode() == 403) {
+    if (responseCode == 403) {
       // SONAR-4397 Details are in response content
-      return MessageException.of(tryParseAsJsonError(he.getResponseContent()), he);
+      return MessageException.of(tryParseAsJsonError(responseContent), he);
     }
-    return MessageException.of(String.format("Fail to execute request [code=%s, url=%s]: %s", he.getResponseCode(), he.getUri(), he.getResponseContent()), he);
+    return MessageException.of(String.format("Fail to execute request [code=%s, url=%s]: %s", responseCode, url, responseContent), he);
   }
 
   private static String tryParseAsJsonError(String responseContent) {
index 17331448b1050bbd4d728f3c3a4ee603b2d73058..36c3324374b8e6be99e14662cbef555c4f7380b4 100644 (file)
  */
 package org.sonar.batch.report;
 
-import org.sonar.api.utils.text.JsonWriter;
-
 import com.github.kevinsawicki.http.HttpRequest;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
-
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -36,10 +33,8 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.Date;
-
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-
 import org.apache.commons.io.FileUtils;
 import org.picocontainer.Startable;
 import org.slf4j.Logger;
@@ -51,11 +46,13 @@ import org.sonar.api.config.Settings;
 import org.sonar.api.platform.Server;
 import org.sonar.api.utils.TempFolder;
 import org.sonar.api.utils.ZipUtils;
+import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.batch.analysis.DefaultAnalysisMode;
 import org.sonar.batch.bootstrap.ServerClient;
 import org.sonar.batch.protocol.output.BatchReportWriter;
 import org.sonar.batch.scan.ImmutableProjectReactor;
 import org.sonar.batch.util.BatchUtils;
+
 import static java.lang.String.format;
 
 @BatchSide
@@ -181,15 +178,7 @@ public class ReportPublisher implements Startable {
     request.basic(serverClient.getLogin(), serverClient.getPassword());
     request.part("report", null, "application/octet-stream", report);
     if (!request.ok()) {
-      int responseCode = request.code();
-      if (responseCode == 401) {
-        throw new IllegalStateException(format(serverClient.getMessageWhenNotAuthorized(), CoreProperties.LOGIN, CoreProperties.PASSWORD));
-      }
-      if (responseCode == 403) {
-        // SONAR-4397 Details are in response content
-        throw new IllegalStateException(request.body());
-      }
-      throw new IllegalStateException(format("Fail to execute request [code=%s, url=%s]: %s", responseCode, url, request.body()));
+      throw serverClient.handleHttpException(url.toString(), request.code(), request.body(), null);
     }
     long stopTime = System.currentTimeMillis();
     LOG.info("Analysis reports sent to server in " + (stopTime - startTime) + "ms");