]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5000 Stop support of the property "sonar.jdbc.schema"
authorSimon Brandhof <simon.brandhof@gmail.com>
Wed, 8 Jan 2014 12:30:53 +0000 (13:30 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Wed, 8 Jan 2014 12:31:40 +0000 (13:31 +0100)
15 files changed:
sonar-application/src/main/assembly/conf/sonar.properties
sonar-batch/src/main/java/org/sonar/batch/bootstrap/PreviewDatabase.java
sonar-core/src/main/java/org/sonar/core/persistence/Database.java
sonar-core/src/main/java/org/sonar/core/persistence/DefaultDatabase.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/AbstractDialect.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java
sonar-core/src/test/java/org/sonar/core/persistence/DefaultDatabaseTest.java
sonar-core/src/test/java/org/sonar/core/persistence/H2Database.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java
sonar-plugin-api/src/main/java/org/sonar/api/database/DatabaseProperties.java
sonar-server/src/main/webapp/WEB-INF/app/models/server.rb
sonar-server/src/main/webapp/WEB-INF/config/database.yml

index 5360519f93afd00bd42288c8bc086441f217e439..9eaa65c47f8b276c9da308c7647acfaec1c6b0f5 100644 (file)
@@ -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=<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=<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
index 130b168802d72db6612a88e08cdbec87236a2667..6b2a5f78f70cf935c7b3707db2ff21dc7eb3f444 100644 (file)
@@ -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)
index 9c5940c7d8440fe47d60f34c04d2143308916cf0..e2a9f75d118f68014dcda67f49109ba62847e3c2 100644 (file)
@@ -42,7 +42,5 @@ public interface Database {
    */
   Dialect getDialect();
 
-  String getSchema();
-
   Properties getHibernateProperties();
 }
index 14d196ed8a3e3d49a1fe99f4aa59d4f4008fd72e..414363748b6a0beffcac3f147fa3dab6d451a4e9 100644 (file)
@@ -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);
index 69286c145d17103d268b6fb24dc7281bc49fa148..2b4d78b80b15d7075e2c4e3940a0cf3d5a410f6a 100644 (file)
@@ -67,7 +67,7 @@ abstract class AbstractDialect implements Dialect {
     return validationQuery;
   }
 
-  public List<String> getConnectionInitStatements(String schema) {
+  public List<String> getConnectionInitStatements() {
     return Collections.emptyList();
   }
 }
index 9a236a9ee94724b26937b44b99f65ff796288753..b8b79da406b3fc898035019978dcb1e79f1d9903 100644 (file)
@@ -54,7 +54,7 @@ public interface Dialect {
    */
   String getDefaultDriverClassName();
 
-  List<String> getConnectionInitStatements(String schema);
+  List<String> getConnectionInitStatements();
 
   /**
    * @since 2.14
index 1a7231206d454e15abd72f7cae777e817cd49a53..5612d906821c033f8220e997583b6088d5a2faad 100644 (file)
@@ -59,13 +59,4 @@ public class Oracle extends AbstractDialect {
       return OracleSequenceGenerator.class;
     }
   }
-
-  @Override
-  public List<String> getConnectionInitStatements(String schema) {
-    List<String> statements = Lists.newArrayList();
-    if (StringUtils.isNotBlank(schema)) {
-      statements.add("ALTER SESSION SET CURRENT_SCHEMA = \"" + schema + "\"");
-    }
-    return statements;
-  }
 }
index b152793c0bea628b45c5f3b23ed3447652554227..3e768adefe4f1144aab09c26eef8f69c3ede7016 100644 (file)
@@ -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<String> 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<String> getConnectionInitStatements(String schema) {
-    List<String> 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<String> getConnectionInitStatements() {
+    return INIT_STATEMENTS;
   }
 }
index adebefcb517b0f43e31fd280dcd761319515cda4..4a3866264f52cde93a4aa2565a1d85dd4c8cf03c 100644 (file)
@@ -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");
   }
 }
index 31c6619aea7049ffa5ddc8254f2d07f2415d22ac..774249bbe1f06e8dfc12a2e7c89e504f72bb69c5 100644 (file)
@@ -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");
index 66e5dcce5fc11be9597b8d08b440128752e8ecfe..7b28d495de4545f800ee71268a58d2b72ff49d5b 100644 (file)
@@ -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<String> 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");
index 0f08f6819ce1a2df6debcc73e6df8680f29d9f44..9b6075481d7e00fc8a5e8182203eee5a23852636 100644 (file)
  */
 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<String> 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() {
index cfe7315336c4683e33fefeb3d5a37e0e091d02ae..05adcabfaeadc93cfd84d50e7ba0b9784f3ad9d2 100644 (file)
@@ -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";
 
index 0596f8c289dcd68ecb5a2c7a306aca517393ee22..a1acde9f0ce915d1c42dfc7a50c4742c8cd5e5a8 100644 (file)
@@ -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)}
index 46c51b5a9dcc1189eb1e6c42c3c504bf83cd2f4b..58aaf0c45535de728f3801044459809e51654c34 100644 (file)
@@ -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