From e8bc18b84b457a9ea69b4ce5f43bac5a4c5ecb15 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Mon, 25 Jul 2016 17:04:02 +0200 Subject: [PATCH] SONAR-7917 Do not register project dashboard --- .../server/startup/RegisterDashboards.java | 16 ++++---- .../startup/RegisterDashboardsTest.java | 40 ++++++++++++------- .../java/org/sonar/api/web/Dashboard.java | 11 ++--- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterDashboards.java b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterDashboards.java index 1f2c6acfb93..3c3506dfc23 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterDashboards.java +++ b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterDashboards.java @@ -75,15 +75,17 @@ public class RegisterDashboards implements Startable { Profiler profiler = Profiler.create(Loggers.get(getClass())).startInfo("Register dashboards"); List 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(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterDashboardsTest.java b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterDashboardsTest.java index 27556daab23..0a32fbc7032 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterDashboardsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterDashboardsTest.java @@ -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); + } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java index f4825d2e27c..3c1357b89b5 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java @@ -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 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. *

Before version 3.1 no dashboard was global. + *

Since version 6.1, project dashboards are dropped. Project dashboards (global=false) are ignored.

* * @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. - *

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. + *

Before version 3.1 no dashboard was global.

+ *

Since version 6.1, project dashboards are dropped. Project dashboards (global=false) are ignored.

* * @since 3.1 */ -- 2.39.5