aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2011-12-16 19:39:40 +0100
committerSimon Brandhof <simon.brandhof@gmail.com>2011-12-16 19:39:40 +0100
commit64de319d4bf2003788ed944efa8be014e01b0b48 (patch)
tree144dea7b86f51551f1fb8e5f5cdd5476bd4a0bca /sonar-core
parent898957b3012d1ce6449a1e8427544d9656ac7e51 (diff)
downloadsonarqube-64de319d4bf2003788ed944efa8be014e01b0b48.tar.gz
sonarqube-64de319d4bf2003788ed944efa8be014e01b0b48.zip
Move org.sonar.jpa.dialect to org.sonar.persistence.dialect and refactor DialectRepository
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/jpa/session/DatabaseConnector.java4
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/Database.java4
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java4
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/Derby.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/Derby.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/Dialect.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/Dialect.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/DialectUtils.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/DialectRepository.java)43
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/MsSql.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/MsSql.java)4
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/MySql.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/MySql.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/Oracle.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/Oracle.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/OracleSequenceGenerator.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/OracleSequenceGenerator.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/PostgreSQLSequenceGenerator.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSQLSequenceGenerator.java)4
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/dialect/PostgreSql.java (renamed from sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSql.java)2
-rw-r--r--sonar-core/src/test/java/org/sonar/jpa/dialect/DialectRepositoryTest.java83
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/DatabaseCommands.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java4
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/InMemoryDatabase.java6
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/DerbyTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/DerbyTest.java)5
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/DialectUtilsTest.java47
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/MsSqlTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/MsSqlTest.java)5
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/MySqlTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/MySqlTest.java)5
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/OracleSequenceGeneratorTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/OracleSequenceGeneratorTest.java)2
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/OracleTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/OracleTest.java)2
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/PostgreSQLSequenceGeneratorTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/PostgreSQLSequenceGeneratorTest.java)2
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/dialect/PostgreSqlTest.java (renamed from sonar-core/src/test/java/org/sonar/jpa/dialect/PostgreSqlTest.java)2
25 files changed, 92 insertions, 150 deletions
diff --git a/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java b/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
index 6dbcfd8daa1..e0a5d739d68 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
+++ b/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
@@ -22,9 +22,9 @@ package org.sonar.jpa.session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.utils.Logs;
-import org.sonar.jpa.dialect.Dialect;
import org.sonar.jpa.entity.SchemaMigration;
import org.sonar.persistence.Database;
+import org.sonar.persistence.dialect.Dialect;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
diff --git a/sonar-core/src/main/java/org/sonar/jpa/session/DatabaseConnector.java b/sonar-core/src/main/java/org/sonar/jpa/session/DatabaseConnector.java
index 72abcf6755a..2f793c3e75d 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/session/DatabaseConnector.java
+++ b/sonar-core/src/main/java/org/sonar/jpa/session/DatabaseConnector.java
@@ -19,7 +19,7 @@
*/
package org.sonar.jpa.session;
-import org.sonar.jpa.dialect.Dialect;
+import org.sonar.persistence.dialect.Dialect;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -37,5 +37,5 @@ public interface DatabaseConnector {
EntityManager createEntityManager();
int getDatabaseVersion();
-
+
}
diff --git a/sonar-core/src/main/java/org/sonar/persistence/Database.java b/sonar-core/src/main/java/org/sonar/persistence/Database.java
index 9fd31c7b652..95b9b10b739 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/Database.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/Database.java
@@ -19,17 +19,17 @@
*/
package org.sonar.persistence;
-import org.sonar.jpa.dialect.Dialect;
+import org.sonar.persistence.dialect.Dialect;
import javax.sql.DataSource;
import java.util.Properties;
/**
- *
* @since 2.12
*/
public interface Database {
Database start();
+
Database stop();
/**
diff --git a/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java b/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
index 9f7c6af21c3..f18e404485e 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
@@ -27,8 +27,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.config.Settings;
import org.sonar.api.database.DatabaseProperties;
-import org.sonar.jpa.dialect.*;
import org.sonar.jpa.session.CustomHibernateConnectionProvider;
+import org.sonar.persistence.dialect.*;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -80,7 +80,7 @@ public class DefaultDatabase implements Database {
}
private void initDialect() {
- dialect = DialectRepository.find(properties.getProperty("sonar.jdbc.dialect"), properties.getProperty("sonar.jdbc.url"));
+ dialect = DialectUtils.find(properties.getProperty("sonar.jdbc.dialect"), properties.getProperty("sonar.jdbc.url"));
if (dialect == null) {
throw new IllegalStateException("Can not guess the JDBC dialect. Please check the property sonar.jdbc.url.");
}
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/Derby.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/Derby.java
index cebb9e0a2b1..0377f2a0277 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/Derby.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/Derby.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.apache.commons.lang.StringUtils;
import org.hibernate.dialect.DerbyDialect;
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/Dialect.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/Dialect.java
index a33df55a692..8ba4d9b5e55 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/Dialect.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/Dialect.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
/**
* @since 1.12
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/DialectRepository.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/DialectUtils.java
index 80394a8834a..672dd86a7fc 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/DialectRepository.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/DialectUtils.java
@@ -17,30 +17,24 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterators;
import org.apache.commons.lang.StringUtils;
import org.sonar.api.utils.SonarException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
import java.util.NoSuchElementException;
-/**
- * @since 1.12
- */
-public final class DialectRepository {
+public final class DialectUtils {
- private DialectRepository() {
+ private DialectUtils() {
}
- private static List<Dialect> builtInDialects = getSupportedDialects();
+ private static final Dialect[] DIALECTS = new Dialect[]{new Derby(), new MySql(), new Oracle(), new PostgreSql(), new MsSql()};
public static Dialect find(final String dialectId, final String jdbcConnectionUrl) {
- Dialect match = StringUtils.isNotEmpty(dialectId) ? findById(dialectId) : findByJdbcUrl(jdbcConnectionUrl);
+ Dialect match = StringUtils.isNotBlank(dialectId) ? findById(dialectId) : findByJdbcUrl(jdbcConnectionUrl);
if (match == null) {
throw new SonarException("Unable to determine database dialect to use within sonar with dialect " + dialectId + " jdbc url " + jdbcConnectionUrl);
}
@@ -48,7 +42,7 @@ public final class DialectRepository {
}
private static Dialect findByJdbcUrl(final String jdbcConnectionUrl) {
- Dialect match = findDialect(builtInDialects, new Predicate<Dialect>() {
+ Dialect match = findDialect(new Predicate<Dialect>() {
public boolean apply(Dialect dialect) {
return dialect.matchesJdbcURL(StringUtils.trimToEmpty(jdbcConnectionUrl));
}
@@ -57,37 +51,18 @@ public final class DialectRepository {
}
private static Dialect findById(final String dialectId) {
- Dialect match = findDialect(builtInDialects, new Predicate<Dialect>() {
+ return findDialect(new Predicate<Dialect>() {
public boolean apply(Dialect dialect) {
return dialect.getId().equals(dialectId);
}
});
- // maybe a class name if no match
- match = match == null ? getDialectByClassname(dialectId) : match;
- return match;
}
- private static Dialect findDialect(Collection<Dialect> dialects, Predicate<Dialect> predicate) {
+ private static Dialect findDialect(Predicate<Dialect> predicate) {
try {
- return Iterators.find(dialects.iterator(), predicate);
+ return Iterators.find(Iterators.forArray(DIALECTS), predicate);
} catch (NoSuchElementException ex) {
return null;
}
}
-
- private static Dialect getDialectByClassname(String dialectId) {
- try {
- Class<? extends Dialect> dialectClass = (Class<? extends Dialect>) DialectRepository.class.getClassLoader().loadClass(dialectId);
- return dialectClass.newInstance();
- } catch (ClassNotFoundException e) {
- // dialectId was not a class name :)
- } catch (Exception e) {
- throw new SonarException("Unable to instantiate dialect class", e);
- }
- return null;
- }
-
- private static List<Dialect> getSupportedDialects() {
- return Arrays.asList(new Derby(), new MySql(), new Oracle(), new PostgreSql(), new MsSql());
- }
}
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/MsSql.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/MsSql.java
index 8cafb79a8c3..6a09b80092d 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/MsSql.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/MsSql.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.apache.commons.lang.StringUtils;
import org.hibernate.HibernateException;
@@ -48,7 +48,7 @@ public class MsSql implements Dialect {
public boolean matchesJdbcURL(String jdbcConnectionURL) {
return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:microsoft:sqlserver:")
- || StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:jtds:sqlserver:");
+ || StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:jtds:sqlserver:");
}
public static class MsSqlDialect extends SQLServerDialect {
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/MySql.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/MySql.java
index 4287617cdaa..a35b7f2540c 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/MySql.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/MySql.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.apache.commons.lang.StringUtils;
import org.hibernate.dialect.MySQLDialect;
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/Oracle.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/Oracle.java
index eb92ca54b4a..ae1f5ee69ef 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/Oracle.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/Oracle.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.apache.commons.lang.StringUtils;
import org.hibernate.dialect.Oracle10gDialect;
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/OracleSequenceGenerator.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/OracleSequenceGenerator.java
index 5450f27e6f4..f1a30f368c3 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/OracleSequenceGenerator.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/OracleSequenceGenerator.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.apache.commons.lang.StringUtils;
import org.hibernate.MappingException;
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSQLSequenceGenerator.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/PostgreSQLSequenceGenerator.java
index a04390c2b3e..1c22d307bf8 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSQLSequenceGenerator.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/PostgreSQLSequenceGenerator.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
@@ -41,7 +41,7 @@ public class PostgreSQLSequenceGenerator extends SequenceGenerator {
@Override
public void configure(Type type, Properties params, Dialect dialect)
- throws MappingException {
+ throws MappingException {
String tableName = params.getProperty(PersistentIdentifierGenerator.TABLE);
String columnName = params.getProperty(PersistentIdentifierGenerator.PK);
diff --git a/sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSql.java b/sonar-core/src/main/java/org/sonar/persistence/dialect/PostgreSql.java
index 495dfef2459..67c494fa625 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/dialect/PostgreSql.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/dialect/PostgreSql.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.apache.commons.lang.StringUtils;
import org.hibernate.dialect.PostgreSQLDialect;
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/DialectRepositoryTest.java b/sonar-core/src/test/java/org/sonar/jpa/dialect/DialectRepositoryTest.java
deleted file mode 100644
index 1ee33f89cfb..00000000000
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/DialectRepositoryTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2011 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
- */
-package org.sonar.jpa.dialect;
-
-import org.junit.Test;
-import org.sonar.api.database.DatabaseProperties;
-import org.sonar.api.utils.SonarException;
-
-import static org.junit.Assert.assertEquals;
-
-public class DialectRepositoryTest {
-
- @Test
- public void testFindById() {
- Dialect d = DialectRepository.find(DatabaseProperties.DIALECT_MYSQL, null);
- assertEquals(MySql.class, d.getClass());
- }
-
- @Test
- public void testFindByJdbcUrl() {
- Dialect d = DialectRepository.find(null, "jdbc:mysql:foo:bar");
- assertEquals(MySql.class, d.getClass());
- }
-
- @Test
- public void testFindClassName() {
- Dialect d = DialectRepository.find(TestDialect.class.getName(), null);
- assertEquals(TestDialect.class, d.getClass());
- }
-
- @Test(expected = SonarException.class)
- public void testFindNoMatch() {
- DialectRepository.find("foo", "bar");
- }
-
- public static class TestDialect implements Dialect {
- public boolean matchesJdbcURL(String jdbcConnectionURL) {
- return false;
- }
-
- public String getDefaultDriverClassName() {
- return null;
- }
-
- public String getConnectionInitStatement(String schema) {
- return null;
- }
-
- public String getId() {
- return "testDialect";
- }
-
- public Class<? extends org.hibernate.dialect.Dialect> getHibernateDialectClass() {
- return null;
- }
-
- public String getActiveRecordDialectCode() {
- return "test";
- }
-
- public String getActiveRecordJdbcAdapter() {
- return "jdbc";
- }
- }
-
-}
diff --git a/sonar-core/src/test/java/org/sonar/persistence/DatabaseCommands.java b/sonar-core/src/test/java/org/sonar/persistence/DatabaseCommands.java
index ea30a991ee1..2f841413d8d 100644
--- a/sonar-core/src/test/java/org/sonar/persistence/DatabaseCommands.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/DatabaseCommands.java
@@ -28,7 +28,7 @@ import org.dbunit.ext.mysql.MySqlDataTypeFactory;
import org.dbunit.ext.oracle.Oracle10DataTypeFactory;
import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory;
import org.dbunit.operation.DatabaseOperation;
-import org.sonar.jpa.dialect.*;
+import org.sonar.persistence.dialect.*;
import java.util.Arrays;
import java.util.List;
diff --git a/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java b/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
index 212a749a3db..a1a6cdf1ae3 100644
--- a/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
@@ -23,8 +23,8 @@ import org.apache.commons.dbcp.BasicDataSource;
import org.hamcrest.core.Is;
import org.junit.Test;
import org.sonar.api.config.Settings;
-import org.sonar.jpa.dialect.Oracle;
-import org.sonar.jpa.dialect.PostgreSql;
+import org.sonar.persistence.dialect.Oracle;
+import org.sonar.persistence.dialect.PostgreSql;
import java.sql.SQLException;
import java.util.Properties;
diff --git a/sonar-core/src/test/java/org/sonar/persistence/InMemoryDatabase.java b/sonar-core/src/test/java/org/sonar/persistence/InMemoryDatabase.java
index f499b6a83d9..a705e503c91 100644
--- a/sonar-core/src/test/java/org/sonar/persistence/InMemoryDatabase.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/InMemoryDatabase.java
@@ -22,9 +22,9 @@ package org.sonar.persistence;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.hibernate.cfg.Environment;
-import org.sonar.jpa.dialect.Derby;
-import org.sonar.jpa.dialect.Dialect;
import org.sonar.jpa.session.CustomHibernateConnectionProvider;
+import org.sonar.persistence.dialect.Derby;
+import org.sonar.persistence.dialect.Dialect;
import javax.sql.DataSource;
import java.sql.*;
@@ -95,7 +95,7 @@ public class InMemoryDatabase implements Database {
DatabaseMetaData meta = connection.getMetaData();
Statement statement = connection.createStatement();
- ResultSet res = meta.getTables(null, null, null, new String[] { "TABLE" });
+ ResultSet res = meta.getTables(null, null, null, new String[]{"TABLE"});
while (res.next()) {
String tableName = res.getString("TABLE_NAME");
statement.executeUpdate("TRUNCATE TABLE " + tableName);
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/DerbyTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/DerbyTest.java
index 7da394f4fce..130e68f3886 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/DerbyTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/DerbyTest.java
@@ -17,11 +17,12 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
+
+import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import org.junit.Test;
public class DerbyTest {
@Test
diff --git a/sonar-core/src/test/java/org/sonar/persistence/dialect/DialectUtilsTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/DialectUtilsTest.java
new file mode 100644
index 00000000000..b0a47867c87
--- /dev/null
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/DialectUtilsTest.java
@@ -0,0 +1,47 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.persistence.dialect;
+
+import org.hamcrest.core.Is;
+import org.junit.Test;
+import org.sonar.api.database.DatabaseProperties;
+import org.sonar.api.utils.SonarException;
+
+import static org.junit.Assert.assertThat;
+
+public class DialectUtilsTest {
+
+ @Test
+ public void testFindById() {
+ Dialect d = DialectUtils.find(DatabaseProperties.DIALECT_MYSQL, null);
+ assertThat(d, Is.is(MySql.class));
+ }
+
+ @Test
+ public void testFindByJdbcUrl() {
+ Dialect d = DialectUtils.find(null, "jdbc:mysql:foo:bar");
+ assertThat(d, Is.is(MySql.class));
+ }
+
+ @Test(expected = SonarException.class)
+ public void testFindNoMatch() {
+ DialectUtils.find("foo", "bar");
+ }
+}
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/MsSqlTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/MsSqlTest.java
index 5554eba67da..589d0cd3875 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/MsSqlTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/MsSqlTest.java
@@ -17,11 +17,12 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
+
+import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import org.junit.Test;
public class MsSqlTest {
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/MySqlTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/MySqlTest.java
index a0717686535..d3268392ae4 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/MySqlTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/MySqlTest.java
@@ -17,11 +17,12 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
+
+import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import org.junit.Test;
public class MySqlTest {
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/OracleSequenceGeneratorTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/OracleSequenceGeneratorTest.java
index 05d963f9323..96a144a33e4 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/OracleSequenceGeneratorTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/OracleSequenceGeneratorTest.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.hibernate.id.PersistentIdentifierGenerator;
import org.junit.Test;
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/OracleTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/OracleTest.java
index b7c549d78e5..43ccd7f24a1 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/OracleTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/OracleTest.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.hamcrest.core.Is;
import org.junit.Test;
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/PostgreSQLSequenceGeneratorTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/PostgreSQLSequenceGeneratorTest.java
index b7ed6cee924..8dc84f4336c 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/PostgreSQLSequenceGeneratorTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/PostgreSQLSequenceGeneratorTest.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.hibernate.id.PersistentIdentifierGenerator;
import org.junit.Test;
diff --git a/sonar-core/src/test/java/org/sonar/jpa/dialect/PostgreSqlTest.java b/sonar-core/src/test/java/org/sonar/persistence/dialect/PostgreSqlTest.java
index 2116a7e1ab0..84647a986ff 100644
--- a/sonar-core/src/test/java/org/sonar/jpa/dialect/PostgreSqlTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/dialect/PostgreSqlTest.java
@@ -17,7 +17,7 @@
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
-package org.sonar.jpa.dialect;
+package org.sonar.persistence.dialect;
import org.hamcrest.core.Is;
import org.junit.Test;