]> source.dussan.org Git - sonarqube.git/commitdiff
Fix loading of db dialect in ruby on rails
authorsimonbrandhof <simon.brandhof@gmail.com>
Mon, 18 Apr 2011 12:40:13 +0000 (14:40 +0200)
committersimonbrandhof <simon.brandhof@gmail.com>
Mon, 18 Apr 2011 12:40:13 +0000 (14:40 +0200)
sonar-application/src/main/assembly/conf/sonar.properties
sonar-core/src/main/java/org/sonar/jpa/dialect/Derby.java
sonar-core/src/main/java/org/sonar/jpa/dialect/Dialect.java
sonar-core/src/main/java/org/sonar/jpa/dialect/HsqlDb.java
sonar-core/src/main/java/org/sonar/jpa/dialect/MsSql.java
sonar-core/src/main/java/org/sonar/jpa/dialect/MySql.java
sonar-core/src/main/java/org/sonar/jpa/dialect/Oracle.java
sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSql.java
sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
sonar-server/src/main/webapp/WEB-INF/config/environment.rb

index 23823ae59ec220a91ae4387b4ccbdb700e27ef72..d03383e00208f5ad9311da3388c67ba908e0db53 100644 (file)
@@ -102,12 +102,11 @@ sonar.jdbc.timeBetweenEvictionRunsMillis:  30000
 #----- JDBC Datasource bounded to JNDI
 # When sonar webapp is deployed into a JEE server, the JDBC datasource can be configured into the JEE server and registered into JNDI.
 # In such a case Sonar uses this datasource to connect to database.
-# If you activate this feature, then the properties starting with "sonar.jdbc." can be commented, EXCEPT "sonar.jdbc.driverClassName".
+# If you activate this feature, then the properties starting with "sonar.jdbc." can be commented, except "sonar.jdbc.dialect".
 # The JDBC driver must still be deployed into the directory /extensions/jdbc-driver.
 #sonar.jdbc.jndiName:                       jdbc/sonar
 
-# If you don't use the default JDBC drivers, as listed above, then you have to explicitly set the dialect to use.
-# Values are : mysql, derby, oracle, postgresql
+# Values are : mysql, mssql, derby, oracle, postgresql
 #sonar.jdbc.dialect=
 
 
index 7f17ac50a67703b7fedb5bd2a010acbfd88a4d34..b0c0ec5614de1c402369bf1e1a78a25f4779d611 100644 (file)
@@ -35,6 +35,10 @@ public class Derby implements Dialect {
     return "derby";
   }
 
+  public String getActiveRecordDialectCode() {
+    return "derby";
+  }
+
   public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
     return DerbyWithDecimalDialect.class;
   }
index b2537a36096c3993845fcaa19df9d4a9fd14b1e5..0f860ae4e324da72b9ff8885bda7620304686e0e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
+ * Copyright (C) 2009 SonarSource SA
  * mailto:contact AT sonarsource DOT com
  *
  * Sonar is free software; you can redistribute it and/or
@@ -34,6 +34,11 @@ public interface Dialect {
    */
   Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass();
 
+  /**
+   * @return the activerecord dialect to be used
+   */
+  String getActiveRecordDialectCode();
+
   /**
    * Used to autodetect a dialect for a given driver URL
    *
index e5ffebe4477bef9bcc6c6f1596fe12db8fa3498d..b6bb3a68392cd6f5b34727ed4153346ef2ac43df 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
+ * Copyright (C) 2009 SonarSource SA
  * mailto:contact AT sonarsource DOT com
  *
  * Sonar is free software; you can redistribute it and/or
@@ -31,6 +31,10 @@ public class HsqlDb implements Dialect {
     return "hsqldb";
   }
 
+  public String getActiveRecordDialectCode() {
+    return "hsqldb";
+  }
+
   public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
     return HSQLDialect.class;
   }
index 764e8a5732451b0795f155af808a5d7e00b796e3..f59c2ee42401eea8b3f2d99459317bb056a98ba9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
+ * Copyright (C) 2009 SonarSource SA
  * mailto:contact AT sonarsource DOT com
  *
  * Sonar is free software; you can redistribute it and/or
@@ -32,6 +32,10 @@ public class MsSql implements Dialect {
     return "mssql";
   }
 
+  public String getActiveRecordDialectCode() {
+    return "sqlserver";
+  }
+
   public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
     return MsSqlDialect.class;
   }
index e062e61aa4f74231968386cfe36a84a377d68070..180dec0b1ee48cd5510fe28be6b48fed6e7c991e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
+ * Copyright (C) 2009 SonarSource SA
  * mailto:contact AT sonarsource DOT com
  *
  * Sonar is free software; you can redistribute it and/or
@@ -34,6 +34,10 @@ public class MySql implements Dialect {
     return "mysql";
   }
 
+  public String getActiveRecordDialectCode() {
+    return "mysql";
+  }
+
   public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
     return MySqlWithDecimalDialect.class;
   }
index 221848bb0a7cb3a3b19c92b23b913c61738d8716..ebec6753619249e12346c118c1e503a53c846fba 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
+ * Copyright (C) 2009 SonarSource SA
  * mailto:contact AT sonarsource DOT com
  *
  * Sonar is free software; you can redistribute it and/or
@@ -34,6 +34,10 @@ public class Oracle implements Dialect {
     return "oracle";
   }
 
+  public String getActiveRecordDialectCode() {
+    return "oracle";
+  }
+
   public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
     return Oracle10gWithDecimalDialect.class;
   }
index 65f3436ca33ceea4c419d719ba38f02430231720..7d7318e51ebf31889ca7a1140dc40d6bcc9c7376 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
+ * Copyright (C) 2009 SonarSource SA
  * mailto:contact AT sonarsource DOT com
  *
  * Sonar is free software; you can redistribute it and/or
@@ -33,6 +33,10 @@ public class PostgreSql implements Dialect {
     return "postgresql";
   }
 
+  public String getActiveRecordDialectCode() {
+    return "postgre";
+  }
+
   public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
     return PostgreSQLWithDecimalDialect.class;
   }
index 3ba4cbc5d47e41ac5a0c4e2e8f9dc278708d1147..ba3e77928fa86a53d8bd7c50cfeb99a7a291f114 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.jpa.session;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.lang.StringUtils;
+import org.hibernate.cfg.Environment;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.database.DatabaseProperties;
@@ -154,7 +155,7 @@ public abstract class AbstractDatabaseConnector implements DatabaseConnector {
       props.put("hibernate.connection.isolation", Integer.toString(transactionIsolation));
     }
     props.put("hibernate.hbm2ddl.auto", getConfiguration().getString(DatabaseProperties.PROP_HIBERNATE_HBM2DLL, "validate"));
-    props.put("hibernate.dialect", getDialectClass());
+    props.put(Environment.DIALECT, getDialectClass());
 
     props.put("hibernate.generate_statistics", getConfiguration().getBoolean(DatabaseProperties.PROP_HIBERNATE_GENERATE_STATISTICS, false));
     props.put("hibernate.show_sql", Boolean.valueOf(LOG_SQL.isInfoEnabled()).toString());
index 721bd127307cf1a8d12ac865980728b654f09d6c..2ce9d7254ca884974cdc1ada7b9582ba964b4d6a 100644 (file)
@@ -62,11 +62,11 @@ module ActiveRecord
         @config[:connection_alive_sql] ||= ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getConfigurationValue('sonar.jdbc.validationQuery')
 
         @jndi_connection = true # used in JndiConnectionPoolCallbacks to close this initial connection
-        
+
         @connection_factory = JdbcConnectionFactory.impl do
           ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getConnection()
         end
-        @config[:driver] = ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getConfigurationValue('sonar.jdbc.driverClassName')
+        @config[:dialect] = ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getDialect().getActiveRecordDialectCode()
 
         connection # force the connection to load
         set_native_database_types
@@ -81,7 +81,7 @@ end
 
 class ActiveRecord::Migration
   def self.alter_to_big_primary_key(tablename)
-    dialect = ActiveRecord::Base.configurations[ ENV['RAILS_ENV'] ]["dialect"]
+    dialect = ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getDialect().getActiveRecordDialectCode()
     case dialect
     when "postgre"
       execute "ALTER TABLE #{tablename} ALTER COLUMN id TYPE bigint"