]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7917 Do not register project dashboard
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Mon, 25 Jul 2016 15:04:02 +0000 (17:04 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 28 Jul 2016 07:14:54 +0000 (09:14 +0200)
server/sonar-server/src/main/java/org/sonar/server/startup/RegisterDashboards.java
server/sonar-server/src/test/java/org/sonar/server/startup/RegisterDashboardsTest.java
sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java

index 1f2c6acfb93f13c8978a4ef74c8ab6daff33adad..3c3506dfc23af8d6cdc38777a7edbb52b50bade3 100644 (file)
@@ -75,15 +75,17 @@ public class RegisterDashboards implements Startable {
     Profiler profiler = Profiler.create(Loggers.get(getClass())).startInfo("Register dashboards");
 
     List<DashboardDto> registeredDashboards = Lists.newArrayList();
-    for (DashboardTemplate template : dashboardTemplates) {
-      if (shouldRegister(template.getName())) {
+    dashboardTemplates.stream()
+      .filter(template -> shouldRegister(template.getName()))
+      .forEach(template -> {
         Dashboard dashboard = template.createDashboard();
-        DashboardDto dto = register(template.getName(), dashboard);
-        if ((dto != null) && (dashboard.isActivated())) {
-          registeredDashboards.add(dto);
+        if (dashboard.isGlobal()) {
+          DashboardDto dto = register(template.getName(), dashboard);
+          if ((dto != null) && dashboard.isActivated() && dashboard.isGlobal()) {
+            registeredDashboards.add(dto);
+          }
         }
-      }
-    }
+      });
 
     activate(registeredDashboards);
     profiler.stopDebug();
index 27556daab23be4377dff6dc66393147445bc8584..0a32fbc7032e47a4fde9f7b9d3f7ca99de602cf8 100644 (file)
@@ -20,6 +20,9 @@
 package org.sonar.server.startup;
 
 import com.google.common.collect.Iterables;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.hamcrest.BaseMatcher;
 import org.junit.Before;
 import org.junit.Test;
@@ -27,18 +30,14 @@ import org.mockito.ArgumentMatcher;
 import org.sonar.api.web.Dashboard;
 import org.sonar.api.web.DashboardLayout;
 import org.sonar.api.web.DashboardTemplate;
-import org.sonar.db.loadedtemplate.LoadedTemplateDao;
-import org.sonar.db.loadedtemplate.LoadedTemplateDto;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
 import org.sonar.db.dashboard.ActiveDashboardDao;
 import org.sonar.db.dashboard.ActiveDashboardDto;
 import org.sonar.db.dashboard.DashboardDao;
 import org.sonar.db.dashboard.DashboardDto;
 import org.sonar.db.dashboard.WidgetDto;
 import org.sonar.db.dashboard.WidgetPropertyDto;
+import org.sonar.db.loadedtemplate.LoadedTemplateDao;
+import org.sonar.db.loadedtemplate.LoadedTemplateDto;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Matchers.any;
@@ -63,13 +62,13 @@ public class RegisterDashboardsTest {
     loadedTemplateDao = mock(LoadedTemplateDao.class);
     fakeDashboardTemplate = mock(DashboardTemplate.class);
 
-    task = new RegisterDashboards(new DashboardTemplate[]{fakeDashboardTemplate}, dashboardDao,
+    task = new RegisterDashboards(new DashboardTemplate[] {fakeDashboardTemplate}, dashboardDao,
       activeDashboardDao, loadedTemplateDao, null);
   }
 
   @Test
   public void testStart() {
-    when(fakeDashboardTemplate.createDashboard()).thenReturn(Dashboard.create());
+    when(fakeDashboardTemplate.createDashboard()).thenReturn(newGlobalDashboard());
 
     task.start();
 
@@ -96,7 +95,7 @@ public class RegisterDashboardsTest {
 
   @Test
   public void should_register_and_activate_dashboard() {
-    when(fakeDashboardTemplate.createDashboard()).thenReturn(Dashboard.create());
+    when(fakeDashboardTemplate.createDashboard()).thenReturn(newGlobalDashboard());
 
     DashboardDto dashboardDto = task.register("Fake", fakeDashboardTemplate.createDashboard());
 
@@ -106,17 +105,27 @@ public class RegisterDashboardsTest {
 
   @Test
   public void should_activate_dashboard() {
-    Dashboard dashboard = Dashboard.create();
-    when(fakeDashboardTemplate.createDashboard()).thenReturn(dashboard);
+    when(fakeDashboardTemplate.createDashboard()).thenReturn(newGlobalDashboard());
 
     task.start();
 
     verify(activeDashboardDao).insert(any(ActiveDashboardDto.class));
   }
 
+  @Test
+  public void should_not_activate_project_dashboards() {
+    Dashboard dashboard = Dashboard.create().setGlobal(false);
+    when(fakeDashboardTemplate.createDashboard()).thenReturn(dashboard);
+
+    task.start();
+
+    verify(activeDashboardDao, never()).insert(any(ActiveDashboardDto.class));
+    verify(loadedTemplateDao, never()).insert(any(LoadedTemplateDto.class));
+  }
+
   @Test
   public void should_disable_activation() {
-    Dashboard dashboard = Dashboard.create();
+    Dashboard dashboard = newGlobalDashboard();
     dashboard.setActivated(false);
     when(fakeDashboardTemplate.createDashboard()).thenReturn(dashboard);
 
@@ -127,8 +136,7 @@ public class RegisterDashboardsTest {
 
   @Test
   public void shouldCreateDtoFromExtension() {
-    Dashboard dashboard = Dashboard.create()
-      .setGlobal(true)
+    Dashboard dashboard = newGlobalDashboard()
       .setLayout(DashboardLayout.TWO_COLUMNS_30_70);
     Dashboard.Widget widget = dashboard.addWidget("fake-widget", 1);
     widget.setProperty("fake-property", "fake_metric");
@@ -183,4 +191,8 @@ public class RegisterDashboardsTest {
       }
     };
   }
+
+  private Dashboard newGlobalDashboard() {
+    return Dashboard.create().setGlobal(true);
+  }
 }
index f4825d2e27cefabc15702919d54730b0ed1f6e16..3c1357b89b5112931d6acff2d8dc1987a3198668 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.api.web;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Maps;
-
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -40,8 +39,8 @@ public final class Dashboard {
   private String description;
   private DashboardLayout layout = DashboardLayout.TWO_COLUMNS;
   private ListMultimap<Integer, Widget> widgetsByColumn = ArrayListMultimap.create();
-  private boolean global = false;
   private boolean activated = true;
+  private boolean global = false;
 
   private Dashboard() {
   }
@@ -118,8 +117,9 @@ public final class Dashboard {
   }
 
   /**
-   * A dashboard is global when it doesn't display information from a projet but rather more general information.
+   * A dashboard is global when it doesn't display information from a project but rather more general information.
    * <p>Before version 3.1 no dashboard was global.
+   * <p>Since version 6.1, project dashboards are dropped. Project dashboards (global=false) are ignored.</p>
    *
    * @since 3.1
    */
@@ -128,8 +128,9 @@ public final class Dashboard {
   }
 
   /**
-   * A dashboard is global when it doesn't display information from a projet but rather more general information.
-   * <p>Before version 3.1 no dashboard was global.
+   * A dashboard is global when it doesn't display information from a project but rather more general information.
+   * <p>Before version 3.1 no dashboard was global.</p>
+   * <p>Since version 6.1, project dashboards are dropped. Project dashboards (global=false) are ignored.</p>
    *
    * @since 3.1
    */