From: Simon Brandhof Date: Wed, 8 Jan 2014 12:30:53 +0000 (+0100) Subject: SONAR-5000 Stop support of the property "sonar.jdbc.schema" X-Git-Tag: 4.2~814 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e0d6348b44943358649361891527e8871e4f2777;p=sonarqube.git SONAR-5000 Stop support of the property "sonar.jdbc.schema" --- diff --git a/sonar-application/src/main/assembly/conf/sonar.properties b/sonar-application/src/main/assembly/conf/sonar.properties index 5360519f93a..9eaa65c47f8 100644 --- a/sonar-application/src/main/assembly/conf/sonar.properties +++ b/sonar-application/src/main/assembly/conf/sonar.properties @@ -50,24 +50,11 @@ sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar #sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE -# Uncomment the following property if the Oracle account has permissions to access multiple schemas, -# for example sonar schemas with different versions. In that case, use the same property during project analysis -# (-Dsonar.jdbc.schema=) -# The schema is case-sensitive. -#sonar.jdbc.schema=sonar - - #----- PostgreSQL 8.x/9.x # Comment the embedded database and uncomment the following property to use PostgreSQL #sonar.jdbc.url=jdbc:postgresql://localhost/sonar -# Uncomment the following property if the PostgreSQL account has permissions to access multiple schemas, -# for example sonar schemas with different versions. In that case, use the same property during project analysis -# (-Dsonar.jdbc.schema=) -#sonar.jdbc.schema=public - - #----- Microsoft SQLServer # The Jtds open source driver is available in extensions/jdbc-driver/mssql. More details on http://jtds.sourceforge.net #sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/PreviewDatabase.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/PreviewDatabase.java index 130b168802d..6b2a5f78f70 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/PreviewDatabase.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/PreviewDatabase.java @@ -123,7 +123,6 @@ public class PreviewDatabase implements BatchComponent { private void replaceSettings(String databasePath) { settings - .removeProperty("sonar.jdbc.schema") .setProperty(DatabaseProperties.PROP_DIALECT, DIALECT) .setProperty(DatabaseProperties.PROP_DRIVER, DRIVER) .setProperty(DatabaseProperties.PROP_USER, USER) diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/Database.java b/sonar-core/src/main/java/org/sonar/core/persistence/Database.java index 9c5940c7d84..e2a9f75d118 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/Database.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/Database.java @@ -42,7 +42,5 @@ public interface Database { */ Dialect getDialect(); - String getSchema(); - Properties getHibernateProperties(); } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DefaultDatabase.java b/sonar-core/src/main/java/org/sonar/core/persistence/DefaultDatabase.java index 14d196ed8a3..414363748b6 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DefaultDatabase.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DefaultDatabase.java @@ -57,7 +57,6 @@ public class DefaultDatabase implements Database { private static final String SONAR_JDBC_DIALECT = "sonar.jdbc.dialect"; private static final String SONAR_JDBC_URL = "sonar.jdbc.url"; private static final String SONAR_JDBC_DRIVER_CLASS_NAME = "sonar.jdbc.driverClassName"; - private static final String SONAR_JDBC_SCHEMA = "sonar.jdbc.schema"; private static final String VALIDATE = "validate"; private Settings settings; @@ -93,7 +92,6 @@ public class DefaultDatabase implements Database { void initSettings() { initProperties(); initDialect(); - initSchema(); } private void initProperties() { @@ -121,26 +119,11 @@ public class DefaultDatabase implements Database { } } - private void initSchema() { - String deprecatedSchema = null; - if (PostgreSql.ID.equals(dialect.getId())) { - // this property has been deprecated in version 2.13 - deprecatedSchema = getSchemaPropertyValue(properties, "sonar.jdbc.postgreSearchPath"); - - } else if (Oracle.ID.equals(dialect.getId())) { - // this property has been deprecated in version 2.13 - deprecatedSchema = getSchemaPropertyValue(properties, "sonar.hibernate.default_schema"); - } - if (StringUtils.isNotBlank(deprecatedSchema)) { - properties.setProperty(SONAR_JDBC_SCHEMA, deprecatedSchema); - } - } - private void initDatasource() throws Exception {// NOSONAR this exception is thrown by BasicDataSourceFactory // but it's correctly caught by start() LOG.info("Create JDBC datasource for " + properties.getProperty(DatabaseProperties.PROP_URL, DEFAULT_URL)); datasource = (BasicDataSource) BasicDataSourceFactory.createDataSource(extractCommonsDbcpProperties(properties)); - datasource.setConnectionInitSqls(dialect.getConnectionInitStatements(getSchema())); + datasource.setConnectionInitSqls(dialect.getConnectionInitStatements()); datasource.setValidationQuery(dialect.getValidationQuery()); } @@ -171,10 +154,6 @@ public class DefaultDatabase implements Database { return dialect; } - public final String getSchema() { - return properties.getProperty(SONAR_JDBC_SCHEMA); - } - public Properties getHibernateProperties() { Properties props = new Properties(); @@ -187,10 +166,6 @@ public class DefaultDatabase implements Database { props.put("hibernate.hbm2ddl.auto", VALIDATE); props.put(Environment.CONNECTION_PROVIDER, CustomHibernateConnectionProvider.class.getName()); - String schema = getSchema(); - if (StringUtils.isNotBlank(schema)) { - props.put("hibernate.default_schema", schema); - } return props; } @@ -230,14 +205,6 @@ public class DefaultDatabase implements Database { return result; } - private static String getSchemaPropertyValue(Properties props, String deprecatedKey) { - String value = props.getProperty(SONAR_JDBC_SCHEMA); - if (StringUtils.isBlank(value) && deprecatedKey != null) { - value = props.getProperty(deprecatedKey); - } - return StringUtils.isNotBlank(value) ? value : null; - } - private static void completeDefaultProperties(Properties props) { completeDefaultProperty(props, DatabaseProperties.PROP_DRIVER, props.getProperty(DatabaseProperties.PROP_DRIVER_DEPRECATED)); completeDefaultProperty(props, DatabaseProperties.PROP_URL, DEFAULT_URL); diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/AbstractDialect.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/AbstractDialect.java index 69286c145d1..2b4d78b80b1 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/AbstractDialect.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/AbstractDialect.java @@ -67,7 +67,7 @@ abstract class AbstractDialect implements Dialect { return validationQuery; } - public List getConnectionInitStatements(String schema) { + public List getConnectionInitStatements() { return Collections.emptyList(); } } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java index 9a236a9ee94..b8b79da406b 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java @@ -54,7 +54,7 @@ public interface Dialect { */ String getDefaultDriverClassName(); - List getConnectionInitStatements(String schema); + List getConnectionInitStatements(); /** * @since 2.14 diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java index 1a7231206d4..5612d906821 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java @@ -59,13 +59,4 @@ public class Oracle extends AbstractDialect { return OracleSequenceGenerator.class; } } - - @Override - public List getConnectionInitStatements(String schema) { - List statements = Lists.newArrayList(); - if (StringUtils.isNotBlank(schema)) { - statements.add("ALTER SESSION SET CURRENT_SCHEMA = \"" + schema + "\""); - } - return statements; - } } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java index b152793c0be..3e768adefe4 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java @@ -19,7 +19,7 @@ */ package org.sonar.core.persistence.dialect; -import com.google.common.collect.Lists; +import com.google.common.collect.ImmutableList; import org.apache.commons.lang.StringUtils; import org.hibernate.dialect.PostgreSQLDialect; @@ -32,6 +32,7 @@ import java.util.List; public class PostgreSql extends AbstractDialect { public static final String ID = "postgresql"; + static final List INIT_STATEMENTS = ImmutableList.of("SET standard_conforming_strings=on", "SET backslash_quote=off"); public PostgreSql() { super(ID, "postgre", "org.postgresql.Driver", "true", "false", "SELECT 1"); @@ -58,11 +59,7 @@ public class PostgreSql extends AbstractDialect { } @Override - public List getConnectionInitStatements(String schema) { - List statements = Lists.newArrayList("SET standard_conforming_strings=on", "SET backslash_quote=off"); - if (StringUtils.isNotBlank(schema)) { - statements.add("SET SEARCH_PATH TO " + schema); - } - return statements; + public List getConnectionInitStatements() { + return INIT_STATEMENTS; } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/DefaultDatabaseTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/DefaultDatabaseTest.java index adebefcb517..4a3866264f5 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/DefaultDatabaseTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/DefaultDatabaseTest.java @@ -107,63 +107,6 @@ public class DefaultDatabaseTest { assertThat(((BasicDataSource) db.getDataSource()).getMaxActive()).isEqualTo(1); } - @Test - public void shouldInitSchema() { - Settings settings = new Settings(); - settings.setProperty("sonar.jdbc.schema", "my_schema"); - - DefaultDatabase database = new DefaultDatabase(settings); - database.initSettings(); - - assertThat(database.getSchema()).isEqualTo("my_schema"); - } - - @Test - public void shouldInitPostgresqlSchemaWithDeprecatedProperty() { - Settings settings = new Settings(); - settings.setProperty("sonar.jdbc.dialect", PostgreSql.ID); - settings.setProperty("sonar.jdbc.postgreSearchPath", "my_schema"); - - DefaultDatabase database = new DefaultDatabase(settings); - database.initSettings(); - - assertThat(database.getSchema()).isEqualTo("my_schema"); - } - - @Test - public void shouldNotInitPostgresqlSchemaByDefault() { - Settings settings = new Settings(); - settings.setProperty("sonar.jdbc.dialect", PostgreSql.ID); - - DefaultDatabase database = new DefaultDatabase(settings); - database.initSettings(); - - assertThat(database.getSchema()).isNull(); - } - - @Test - public void shouldInitOracleSchemaWithDeprecatedProperty() { - Settings settings = new Settings(); - settings.setProperty("sonar.jdbc.dialect", Oracle.ID); - settings.setProperty("sonar.hibernate.default_schema", "my_schema"); - - DefaultDatabase database = new DefaultDatabase(settings); - database.initSettings(); - - assertThat(database.getSchema()).isEqualTo("my_schema"); - } - - @Test - public void shouldNotInitOracleSchemaByDefault() { - Settings settings = new Settings(); - settings.setProperty("sonar.jdbc.dialect", Oracle.ID); - - DefaultDatabase database = new DefaultDatabase(settings); - database.initSettings(); - - assertThat(database.getSchema()).isNull(); - } - @Test public void shouldGuessDialectFromUrl() { Settings settings = new Settings(); @@ -190,13 +133,11 @@ public class DefaultDatabaseTest { public void shouldSetHibernateProperties() { Settings settings = new Settings(); settings.setProperty("sonar.jdbc.url", "jdbc:postgresql://localhost/sonar"); - settings.setProperty("sonar.hibernate.default_schema", "foo"); DefaultDatabase database = new DefaultDatabase(settings); database.initSettings(); Properties hibernateProps = database.getHibernateProperties(); assertThat(hibernateProps.getProperty("hibernate.hbm2ddl.auto")).isEqualTo("validate"); - assertThat(hibernateProps.getProperty("hibernate.default_schema")).isEqualTo("foo"); } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/H2Database.java b/sonar-core/src/test/java/org/sonar/core/persistence/H2Database.java index 31c6619aea7..774249bbe1f 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/H2Database.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/H2Database.java @@ -113,10 +113,6 @@ public class H2Database implements Database { return new H2(); } - public String getSchema() { - return null; - } - public Properties getHibernateProperties() { Properties properties = new Properties(); properties.put("hibernate.hbm2ddl.auto", "validate"); diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java index 66e5dcce5fc..7b28d495de4 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java @@ -21,8 +21,6 @@ package org.sonar.core.persistence.dialect; import org.junit.Test; -import java.util.List; - import static org.fest.assertions.Assertions.assertThat; public class OracleTest { @@ -35,21 +33,6 @@ public class OracleTest { assertThat(oracle.matchesJdbcURL("jdbc:hsql:foo")).isFalse(); } - /** - * Avoid conflicts with other schemas - */ - @Test - public void shouldChangeOracleSchema() { - List initStatements = oracle.getConnectionInitStatements("my_schema"); - - assertThat(initStatements).containsExactly("ALTER SESSION SET CURRENT_SCHEMA = \"my_schema\""); - } - - @Test - public void shouldNotChangeOracleSchemaByDefault() { - assertThat(oracle.getConnectionInitStatements(null)).isEmpty(); - } - @Test public void testBooleanSqlValues() { assertThat(oracle.getTrueSqlValue()).isEqualTo("1"); diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java index 0f08f6819ce..9b6075481d7 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java @@ -19,11 +19,8 @@ */ package org.sonar.core.persistence.dialect; -import org.fest.assertions.Condition; import org.junit.Test; -import java.util.List; - import static org.fest.assertions.Assertions.assertThat; public class PostgreSqlTest { @@ -37,18 +34,10 @@ public class PostgreSqlTest { } @Test - public void should_avoid_conflict_with_other_schemas() { - List initStatements = postgreSql.getConnectionInitStatements("my_schema"); - - assertThat(initStatements).contains("SET SEARCH_PATH TO my_schema"); + public void should_set_connection_properties() { + assertThat(postgreSql.getConnectionInitStatements()).isEqualTo(PostgreSql.INIT_STATEMENTS); } - @Test - public void shouldNotChangePostgreSearchPathByDefault() { - for (String statement : postgreSql.getConnectionInitStatements(null)) { - assertThat(statement).doesNotMatch("SET SEARCH_PATH .*"); - } - } @Test public void testBooleanSqlValues() { diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/database/DatabaseProperties.java b/sonar-plugin-api/src/main/java/org/sonar/api/database/DatabaseProperties.java index cfe7315336c..05adcabfaea 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/database/DatabaseProperties.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/database/DatabaseProperties.java @@ -34,6 +34,11 @@ public interface DatabaseProperties { String PROP_HIBERNATE_HBM2DLL = "sonar.jdbc.hibernate.hbm2ddl"; String PROP_HIBERNATE_GENERATE_STATISTICS = "sonar.jdbc.hibernate.generate_statistics"; String PROP_DIALECT = "sonar.jdbc.dialect"; + + /** + * @deprecated in 4.2. Not supported anymore. See http://jira.codehaus.org/browse/SONAR-5000. + */ + @Deprecated String PROP_HIBERNATE_DEFAULT_SCHEMA = "sonar.hibernate.default_schema"; String PROP_EMBEDDED_DATA_DIR = "sonar.embeddedDatabase.dataDir"; diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/server.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/server.rb index 0596f8c289d..a1acde9f0ce 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/models/server.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/models/server.rb @@ -68,7 +68,6 @@ class Server add_property(sonar_info, 'Database Driver') {"#{jdbc_metadata.getDriverName()} #{jdbc_metadata.getDriverVersion()}"} add_property(sonar_info, 'Database Driver Class') {sonar_property('sonar.jdbc.driverClassName')} add_property(sonar_info, 'Database Dialect (Hibernate)') {"#{Java::OrgSonarServerUi::JRubyFacade.getInstance().getDatabase().getDialect().getId()} (#{Java::OrgSonarServerUi::JRubyFacade.getInstance().getDatabase().getDialect().getHibernateDialectClass().getName()})"} - add_property(sonar_info, 'Hibernate Default Schema') {sonar_property('sonar.hibernate.default_schema')} add_property(sonar_info, 'External User Authentication') {realm_name} add_property(sonar_info, 'Automatic User Creation') {sonar_property(org.sonar.api.CoreProperties.CORE_AUTHENTICATOR_CREATE_USERS)} add_property(sonar_info, 'Allow Users to Sign Up') {sonar_property(org.sonar.api.CoreProperties.CORE_ALLOW_USERS_TO_SIGNUP_PROPERTY)} diff --git a/sonar-server/src/main/webapp/WEB-INF/config/database.yml b/sonar-server/src/main/webapp/WEB-INF/config/database.yml index 46c51b5a9dc..58aaf0c4553 100644 --- a/sonar-server/src/main/webapp/WEB-INF/config/database.yml +++ b/sonar-server/src/main/webapp/WEB-INF/config/database.yml @@ -3,12 +3,6 @@ base: &base dialect: <%= ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getDatabase().getDialect().getActiveRecordDialectCode() %> pool: <%= ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getConfigurationValue('sonar.jdbc.maxActive') || 10 %> - # postgreSQL - schema_search_path: <%= ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getDatabase().getSchema() %> - - # Oracle - schema: <%= ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getDatabase().getSchema() %> - development: <<: *base @@ -19,4 +13,4 @@ test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 - timeout: 5000 \ No newline at end of file + timeout: 5000