package org.sonar.core.persistence;
import com.google.common.annotations.VisibleForTesting;
-
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.commons.lang.StringUtils;
import org.slf4j.LoggerFactory;
import org.sonar.api.config.Settings;
import org.sonar.api.database.DatabaseProperties;
-import org.sonar.core.persistence.dialect.Dialect;
-import org.sonar.core.persistence.dialect.DialectUtils;
-import org.sonar.core.persistence.dialect.H2;
-import org.sonar.core.persistence.dialect.Oracle;
-import org.sonar.core.persistence.dialect.PostgreSql;
+import org.sonar.core.persistence.dialect.*;
import org.sonar.jpa.session.CustomHibernateConnectionProvider;
import javax.sql.DataSource;
-
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
private static final Logger LOG = LoggerFactory.getLogger(Database.class);
+ private static final String DEFAULT_URL = "jdbc:h2:tcp://localhost/sonar";
+
private Settings settings;
private BasicDataSource datasource;
private Dialect dialect;
private void initDatasource() throws Exception {// NOSONAR this exception is thrown by BasicDataSourceFactory
// but it's correctly caught by start()
- LOG.info("Create JDBC datasource to url " + properties.getProperty(DatabaseProperties.PROP_URL, DatabaseProperties.PROP_URL_DEFAULT_VALUE));
+ LOG.info("Create JDBC datasource to url " + properties.getProperty(DatabaseProperties.PROP_URL, DEFAULT_URL));
datasource = (BasicDataSource) BasicDataSourceFactory.createDataSource(extractCommonsDbcpProperties(properties));
String initStatement = dialect.getConnectionInitStatement(getSchema());
private static void completeDefaultProperties(Properties props) {
completeDefaultProperty(props, DatabaseProperties.PROP_DRIVER, props.getProperty(DatabaseProperties.PROP_DRIVER_DEPRECATED));
- completeDefaultProperty(props, DatabaseProperties.PROP_URL, DatabaseProperties.PROP_URL_DEFAULT_VALUE);
+ completeDefaultProperty(props, DatabaseProperties.PROP_URL, DEFAULT_URL);
completeDefaultProperty(props, DatabaseProperties.PROP_USER, props.getProperty(DatabaseProperties.PROP_USER_DEPRECATED, DatabaseProperties.PROP_USER_DEFAULT_VALUE));
completeDefaultProperty(props, DatabaseProperties.PROP_PASSWORD, DatabaseProperties.PROP_PASSWORD_DEFAULT_VALUE);
completeDefaultProperty(props, DatabaseProperties.PROP_HIBERNATE_HBM2DLL, "validate");
int MAX_TEXT_SIZE = 16777215;
String PROP_URL = "sonar.jdbc.url";
- String PROP_URL_DEFAULT_VALUE = "jdbc:h2:tcp://localhost/sonar";
String PROP_DRIVER = "sonar.jdbc.driverClassName";
- String PROP_DRIVER_DEFAULT_VALUE = "org.h2.Driver";
String PROP_DRIVER_DEPRECATED = "sonar.jdbc.driver";
String PROP_USER = "sonar.jdbc.username";
String PROP_USER_DEPRECATED = "sonar.jdbc.user";
return new Builder();
}
- public static class Builder {
+ public static final class Builder {
private String login;
private String name;
private String email;
import org.junit.Test;
-import static junit.framework.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.fest.assertions.Assertions.assertThat;
public class DependencyTest {
DependencyDto dep1Clone = new DependencyDto().setFromSnapshotId(10).setToSnapshotId(30);
DependencyDto dep2 = new DependencyDto().setFromSnapshotId(10).setToSnapshotId(31);
- assertFalse(dep1.equals(dep2));
- assertTrue(dep1.equals(dep1));
- assertTrue(dep1.equals(dep1Clone));
+ assertThat(dep1.equals(dep2)).isFalse();
+ assertThat(dep1.equals(dep1)).isTrue();
+ assertThat(dep1.equals(dep1Clone)).isTrue();
- assertEquals(dep1.hashCode(), dep1.hashCode());
- assertEquals(dep1.hashCode(), dep1Clone.hashCode());
- assertEquals(dep1.toString(), dep1.toString());
+ assertThat(dep1.hashCode()).isEqualTo(dep1.hashCode());
+ assertThat(dep1.hashCode()).isEqualTo(dep1Clone.hashCode());
+ assertThat(dep1.toString()).isEqualTo(dep1.toString());
}
@Test(expected = IllegalArgumentException.class)
import com.google.common.annotations.VisibleForTesting;
import org.apache.commons.configuration.Configuration;
import org.sonar.api.CoreProperties;
-import org.sonar.api.ServerComponent;
import org.sonar.api.config.GlobalPropertyChangeHandler;
import org.sonar.api.config.PropertyDefinitions;
import org.sonar.api.config.Settings;
*
* @since 2.12
*/
-public class ServerSettings extends Settings implements ServerComponent {
+public class ServerSettings extends Settings {
public static final String DEPLOY_DIR = "sonar.web.deployDir";
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
-import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.utils.TimeProfiler;
import org.sonar.api.web.Dashboard;
import org.sonar.api.web.DashboardTemplate;
-import org.sonar.core.dashboard.ActiveDashboardDao;
-import org.sonar.core.dashboard.ActiveDashboardDto;
-import org.sonar.core.dashboard.DashboardDao;
-import org.sonar.core.dashboard.DashboardDto;
-import org.sonar.core.dashboard.WidgetDto;
-import org.sonar.core.dashboard.WidgetPropertyDto;
+import org.sonar.core.dashboard.*;
import org.sonar.core.template.LoadedTemplateDao;
import org.sonar.core.template.LoadedTemplateDto;
* @since 2.13
*/
public final class RegisterNewDashboards {
- private static final Logger LOG = LoggerFactory.getLogger(RegisterNewDashboards.class);
static final String DEFAULT_DASHBOARD_NAME = "Dashboard";
private final List<DashboardTemplate> dashboardTemplates;
private final LoadedTemplateDao loadedTemplateDao;
public RegisterNewDashboards(DashboardTemplate[] dashboardTemplatesArray, DashboardDao dashboardDao,
- ActiveDashboardDao activeDashboardDao, LoadedTemplateDao loadedTemplateDao) {
+ ActiveDashboardDao activeDashboardDao, LoadedTemplateDao loadedTemplateDao) {
this.dashboardTemplates = Lists.newArrayList(dashboardTemplatesArray);
this.dashboardDao = dashboardDao;
this.activeDashboardDao = activeDashboardDao;
private void activate(DashboardDto dashboardDto, int index) {
ActiveDashboardDto activeDashboardDto = new ActiveDashboardDto()
- .setDashboardId(dashboardDto.getId())
- .setOrderIndex(index);
+ .setDashboardId(dashboardDto.getId())
+ .setOrderIndex(index);
activeDashboardDao.insert(activeDashboardDto);
LoggerFactory.getLogger(getClass()).info("New dashboard '" + dashboardDto.getName() + "' registered");
Date now = new Date();
DashboardDto dashboardDto = new DashboardDto()
- .setName(name)
- .setDescription(dashboard.getDescription())
- .setColumnLayout(dashboard.getLayout().getCode())
- .setShared(true)
- .setGlobal(dashboard.isGlobal())
- .setCreatedAt(now)
- .setUpdatedAt(now);
+ .setName(name)
+ .setDescription(dashboard.getDescription())
+ .setColumnLayout(dashboard.getLayout().getCode())
+ .setShared(true)
+ .setGlobal(dashboard.isGlobal())
+ .setCreatedAt(now)
+ .setUpdatedAt(now);
for (int columnIndex = 1; columnIndex <= dashboard.getLayout().getColumns(); columnIndex++) {
List<Dashboard.Widget> widgets = dashboard.getWidgetsOfColumn(columnIndex);
for (int rowIndex = 1; rowIndex <= widgets.size(); rowIndex++) {
Dashboard.Widget widget = widgets.get(rowIndex - 1);
WidgetDto widgetDto = new WidgetDto()
- .setKey(widget.getId())
- .setColumnIndex(columnIndex)
- .setRowIndex(rowIndex)
- .setConfigured(true)
- .setCreatedAt(now)
- .setUpdatedAt(now);
+ .setKey(widget.getId())
+ .setColumnIndex(columnIndex)
+ .setRowIndex(rowIndex)
+ .setConfigured(true)
+ .setCreatedAt(now)
+ .setUpdatedAt(now);
dashboardDto.addWidget(widgetDto);
for (Entry<String, String> property : widget.getProperties().entrySet()) {
WidgetPropertyDto propDto = new WidgetPropertyDto()
- .setKey(property.getKey())
- .setValue(property.getValue());
+ .setKey(property.getKey())
+ .setValue(property.getValue());
widgetDto.addWidgetProperty(propDto);
}
}
* @since 3.2
*/
public class SetDefaultProjectPermissions {
+ private static final String SONAR_ADMINISTRATORS = "sonar-administrators";
+ private static final String ANYONE_AND_USERS = "Anyone,sonar-users";
+
private final PersistentSettings persistentSettings;
public SetDefaultProjectPermissions(PersistentSettings persistentSettings) {
if (persistentSettings.getSettings().getKeysStartingWith("sonar.role.").isEmpty()) {
LoggerFactory.getLogger(SetDefaultProjectPermissions.class).info("Setting default project permissions");
Map<String, String> props = Maps.newHashMap();
- props.put("sonar.role.admin.TRK.defaultGroups", "sonar-administrators");
- props.put("sonar.role.user.TRK.defaultGroups", "Anyone,sonar-users");
- props.put("sonar.role.codeviewer.TRK.defaultGroups", "Anyone,sonar-users");
+ props.put("sonar.role.admin.TRK.defaultGroups", SONAR_ADMINISTRATORS);
+ props.put("sonar.role.user.TRK.defaultGroups", ANYONE_AND_USERS);
+ props.put("sonar.role.codeviewer.TRK.defaultGroups", ANYONE_AND_USERS);
// Support old versions of Views plugin
- props.put("sonar.role.admin.VW.defaultGroups", "sonar-administrators");
- props.put("sonar.role.user.VW.defaultGroups", "Anyone,sonar-users");
- props.put("sonar.role.codeviewer.VW.defaultGroups", "Anyone,sonar-users");
- props.put("sonar.role.admin.SVW.defaultGroups", "sonar-administrators");
- props.put("sonar.role.user.SVW.defaultGroups", "Anyone,sonar-users");
- props.put("sonar.role.codeviewer.SVW.defaultGroups", "Anyone,sonar-users");
+ props.put("sonar.role.admin.VW.defaultGroups", SONAR_ADMINISTRATORS);
+ props.put("sonar.role.user.VW.defaultGroups", ANYONE_AND_USERS);
+ props.put("sonar.role.codeviewer.VW.defaultGroups", ANYONE_AND_USERS);
+ props.put("sonar.role.admin.SVW.defaultGroups", SONAR_ADMINISTRATORS);
+ props.put("sonar.role.user.SVW.defaultGroups", ANYONE_AND_USERS);
+ props.put("sonar.role.codeviewer.SVW.defaultGroups", ANYONE_AND_USERS);
persistentSettings.saveProperties(props);
}