]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-9575 Allow to replace ProjectRepositoriesProvider core implementation
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 24 Jul 2017 10:08:00 +0000 (12:08 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 7 Aug 2017 09:44:06 +0000 (11:44 +0200)
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/ProjectRepositoriesProvider.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/task/ScanTask.java
sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/ProjectRepositoriesProviderTest.java

index fa52178accd67914e758db2c6744d9e4cb6a34a8..a39aaf7a30dc300206da063e4ff24a393d66e0df 100644 (file)
@@ -32,18 +32,22 @@ public class ProjectRepositoriesProvider extends ProviderAdapter {
   private ProjectRepositories project = null;
 
   public ProjectRepositories provide(ProjectRepositoriesLoader loader, ProjectKey projectKey, DefaultAnalysisMode mode) {
+    return provideInternal(loader, projectKey, mode.isIssues());
+  }
+
+  protected ProjectRepositories provideInternal(ProjectRepositoriesLoader loader, ProjectKey projectKey, boolean isIssueMode) {
     if (project == null) {
       Profiler profiler = Profiler.create(LOG).startInfo(LOG_MSG);
-      project = loader.load(projectKey.get(), mode.isIssues());
-      checkProject(mode);
+      project = loader.load(projectKey.get(), isIssueMode);
+      checkProject(isIssueMode);
       profiler.stopInfo();
     }
 
     return project;
   }
 
-  private void checkProject(DefaultAnalysisMode mode) {
-    if (mode.isIssues()) {
+  private void checkProject(boolean isIssueMode) {
+    if (isIssueMode) {
       if (!project.exists()) {
         LOG.warn("Project doesn't exist on the server. All issues will be marked as 'new'.");
       } else if (project.lastAnalysisDate() == null) {
index 29a2461a70bdb1881edf2af15098b9fec8f14724..4049d49014e5ece07703614a1ae2e15a87054d8d 100644 (file)
@@ -74,7 +74,6 @@ import org.sonar.scanner.repository.DefaultQualityProfileLoader;
 import org.sonar.scanner.repository.DefaultServerIssuesLoader;
 import org.sonar.scanner.repository.ProjectRepositories;
 import org.sonar.scanner.repository.ProjectRepositoriesLoader;
-import org.sonar.scanner.repository.ProjectRepositoriesProvider;
 import org.sonar.scanner.repository.QualityProfileLoader;
 import org.sonar.scanner.repository.QualityProfileProvider;
 import org.sonar.scanner.repository.ServerIssuesLoader;
@@ -136,7 +135,6 @@ public class ProjectScanContainer extends ComponentContainer {
       DefaultIndex.class,
       Storages.class,
       new RulesProvider(),
-      new ProjectRepositoriesProvider(),
 
       // temp
       new AnalysisTempFolderProvider(),
index 3e75a016033e22897c5d7e0bc6d8c9f1ec1c93df..56423077a5198bfce6dbe0e1d14c5b55265eec1b 100644 (file)
@@ -25,6 +25,7 @@ import org.sonar.api.task.TaskDefinition;
 import org.sonar.core.platform.ComponentContainer;
 import org.sonar.scanner.analysis.AnalysisProperties;
 import org.sonar.scanner.analysis.DefaultAnalysisMode;
+import org.sonar.scanner.repository.ProjectRepositoriesProvider;
 import org.sonar.scanner.scan.ProjectScanContainer;
 
 public class ScanTask implements Task {
@@ -47,6 +48,7 @@ public class ScanTask implements Task {
     AnalysisProperties props = new AnalysisProperties(taskProps.properties(), taskProps.property(CoreProperties.ENCRYPTION_SECRET_KEY_PATH));
     ProjectScanContainer scanContainer = new ProjectScanContainer(taskContainer, props);
     scanContainer.add(DefaultAnalysisMode.class);
+    scanContainer.add(new ProjectRepositoriesProvider());
     scanContainer.execute();
   }
 }
index 2db06e5ad6805fef9f60d1ab419bb422e2a9d872..5dddeab9a291e82f6dff9b8a63c6341f0354192e 100644 (file)
@@ -78,7 +78,7 @@ public class ProjectRepositoriesProviderTest {
     assertThat(repo.exists()).isEqualTo(true);
     assertThat(repo.lastAnalysisDate()).isNotNull();
 
-    verify(mode, times(2)).isIssues();
+    verify(mode, times(1)).isIssues();
     verify(projectKey).get();
     verify(loader).load(eq("key"), eq(false));
     verifyNoMoreInteractions(loader, projectKey, mode);