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();
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;
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;
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();
@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());
@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);
@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");
}
};
}
+
+ private Dashboard newGlobalDashboard() {
+ return Dashboard.create().setGlobal(true);
+ }
}
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;
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() {
}
}
/**
- * 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
*/
}
/**
- * 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
*/