]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7037 Improve logging on authentication failure
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 24 Nov 2015 13:16:07 +0000 (14:16 +0100)
committerDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 24 Nov 2015 13:21:20 +0000 (14:21 +0100)
sonar-batch/src/main/java/org/sonar/batch/repository/DefaultProjectRepositoriesLoader.java
sonar-batch/src/test/java/org/sonar/batch/repository/DefaultProjectRepositoriesLoaderTest.java

index 11bf530e8b3167c42217a3ebd15c4d55998f2491..b31741f11157bdd7a3154e748d0dfad5fe42a96c 100644 (file)
@@ -19,8 +19,9 @@
  */
 package org.sonar.batch.repository;
 
-import org.sonar.api.utils.HttpDownloader.HttpException;
+import com.google.common.base.Throwables;
 
+import org.sonar.api.utils.HttpDownloader.HttpException;
 import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.Table;
 
@@ -59,7 +60,7 @@ public class DefaultProjectRepositoriesLoader implements ProjectRepositoriesLoad
         fromCache.setValue(result.isFromCache());
       }
       return processStream(result.get(), projectKey);
-    } catch (IllegalStateException e) {
+    } catch (RuntimeException e) {
       if (shouldThrow(e)) {
         throw e;
       }
@@ -81,9 +82,11 @@ public class DefaultProjectRepositoriesLoader implements ProjectRepositoriesLoad
   }
 
   private static boolean shouldThrow(Exception e) {
-    if (e.getCause() != null && e.getCause() instanceof HttpException) {
-      HttpException http = (HttpException) e.getCause();
-      return http.getResponseCode() != 404;
+    for (Throwable t : Throwables.getCausalChain(e)) {
+      if (t instanceof HttpException) {
+        HttpException http = (HttpException) t;
+        return http.getResponseCode() != 404;
+      }
     }
 
     return false;
index 2641fc2b5361992933a7f072cd02eeb39f7f30d8..b8c9012399ae2b55e751cab44e90cc01bf082d96 100644 (file)
@@ -19,6 +19,8 @@
  */
 package org.sonar.batch.repository;
 
+import org.sonar.api.utils.MessageException;
+
 import com.google.common.io.Resources;
 
 import java.io.ByteArrayInputStream;
@@ -81,6 +83,17 @@ public class DefaultProjectRepositoriesLoaderTest {
     when(wsLoader.loadStream(anyString())).thenThrow(e);
     loader.load(PROJECT_KEY, false, null);
   }
+  
+  @Test
+  public void failFastHttpErrorMessageException() {
+    thrown.expect(MessageException.class);
+    thrown.expectMessage("http error");
+    
+    HttpException http = new HttpException(URI.create("uri"), 403);
+    MessageException e = MessageException.of("http error", http);
+    when(wsLoader.loadStream(anyString())).thenThrow(e);
+    loader.load(PROJECT_KEY, false, null);
+  }
 
   @Test
   public void passIssuesModeParameter() {