This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git commit a6c16fcb9d9b57349015b0a66014801bce1c2521 Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Apr 29 17:33:26 2016 +0200 Warn user if dialect declared seems wrong (H2 dialect for a PostgreSQL database) and throws Exception if configuration is missing dialect --- .../persistence/internal/HibernateProvider.java | 38 +++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java index b82fd90..84eb26b 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java @@ -50,6 +50,7 @@ import org.hibernate.service.spi.Stoppable; import org.nuiton.topia.persistence.HibernateAvailableSettings; import org.nuiton.topia.persistence.TopiaConfiguration; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaMisconfigurationException; import org.nuiton.topia.persistence.internal.support.TopiaHibernateEventListener; import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder; import org.nuiton.topia.persistence.support.TopiaServiceSupport; @@ -161,12 +162,41 @@ public class HibernateProvider { } + /** + * Get Hibernate {@link org.hibernate.dialect.Dialect} to use for given {@link TopiaConfiguration}. + * + * Prefer user defined dialect over dialect guessed by ToPIA; + * Warn user if dialect declared seems wrong (H2 dialect for a PostgreSQL database) + * @throws TopiaMisconfigurationException if user must add dialect to its configuration (because it can not be guessed) + */ public static String getHibernateDialect(TopiaConfiguration topiaConfiguration) { - String hibernateDialect = topiaConfiguration.getHibernateExtraConfiguration().get(AvailableSettings.DIALECT); - if (hibernateDialect == null) { - hibernateDialect = guessHibernateDialect(topiaConfiguration.getJdbcConnectionUrl()); + String jdbcConnectionUrl = topiaConfiguration.getJdbcConnectionUrl(); + String guessedDialect = guessHibernateDialect(jdbcConnectionUrl); + String userDefinedDialect = topiaConfiguration.getHibernateExtraConfiguration().get(AvailableSettings.DIALECT); + String dialect; + if (guessedDialect == null) { + if (userDefinedDialect == null) { + String message = String.format( + "unable to guess Hibernate dialect to use for JDBC URL %s please patch ToPIA or configure Hibernate manually using %s", + jdbcConnectionUrl, + HibernateAvailableSettings.DIALECT); + throw new TopiaMisconfigurationException(message, topiaConfiguration); + } else { + dialect = userDefinedDialect; + } + } else { + if (userDefinedDialect == null) { + dialect = guessedDialect; + } else { + dialect = userDefinedDialect; + if (guessedDialect.equals(userDefinedDialect)) { + log.info("configuration defined hibernate dialect " + userDefinedDialect + " but ToPIA could have guessed it (you can remove the configuration directive safely)"); + } else { + log.warn("not sure if " + dialect + " is suitable for " + jdbcConnectionUrl); + } + } } - return hibernateDialect; + return dialect; } public static String guessHibernateDialect(String jdbcConnectionUrl) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.