branch feature/2892 updated (9d93f47 -> 098f5b7)
This is an automated email from the git hooks/post-receive script. New change to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git from 9d93f47 refs #2892 Fix TopiaConnectionProviderTest new f7ee5db Configuration is now Serializable new 5c6e6d8 Implements guessHibernateDialect new d67aa11 Allow user to instantiate TopiaIdFactory new 098f5b7 Enable connection pooling by default The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 098f5b76bb99b3a1b28ecb156d2e0fc500d369c5 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 16:14:31 2015 +0100 Enable connection pooling by default commit d67aa114f2b1b63f32e3dcd517b32b82df318871 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 12:26:37 2015 +0100 Allow user to instantiate TopiaIdFactory commit 5c6e6d8189b54d2a5dd50597b94ac6d9ba0d5f47 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 12:00:44 2015 +0100 Implements guessHibernateDialect commit f7ee5db839f0e8a6ce6872590d9a926dfee1d0c8 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 21 16:07:10 2015 +0100 Configuration is now Serializable Summary of changes: pom.xml | 7 ++ .../persistence/util/TopiaEntityHelperTest.java | 4 +- .../persistence/internal/TopiaIdFactoryTest.java | 2 +- topia-persistence/pom.xml | 5 + .../topia/persistence/BeanTopiaConfiguration.java | 65 ++++++------- .../persistence/HibernateAvailableSettings.java | 6 ++ .../topia/persistence/TopiaConfiguration.java | 10 +- .../persistence/TopiaConfigurationBuilder.java | 83 ++++------------ .../nuiton/topia/persistence/TopiaIdFactory.java | 9 +- .../internal/AbstractTopiaApplicationContext.java | 25 +---- .../internal/DefaultTopiaIdFactory.java | 104 +-------------------- ... FullyQualifiedNamePlusUuidTopiaIdFactory.java} | 9 +- .../persistence/internal/HibernateProvider.java | 45 ++++++--- .../persistence/internal/LegacyTopiaIdFactory.java | 2 + .../persistence/internal/ShortTopiaIdFactory.java | 23 ++--- .../topia/persistence/jdbc/JdbcConfiguration.java | 3 +- ...lyQualifiedNamePlusUuidTopiaIdFactoryTest.java} | 10 +- .../persistence/TopiaConfigurationBuilderTest.java | 4 - 18 files changed, 137 insertions(+), 279 deletions(-) copy topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/{DefaultTopiaIdFactory.java => FullyQualifiedNamePlusUuidTopiaIdFactory.java} (93%) rename topia-persistence/src/test/java/org/nuiton/topia/persistence/{DefaultTopiaIdFactoryTest.java => FullyQualifiedNamePlusUuidTopiaIdFactoryTest.java} (90%) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit f7ee5db839f0e8a6ce6872590d9a926dfee1d0c8 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 21 16:07:10 2015 +0100 Configuration is now Serializable --- .../main/java/org/nuiton/topia/persistence/jdbc/JdbcConfiguration.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcConfiguration.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcConfiguration.java index 4e84feb..a057ddd 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcConfiguration.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcConfiguration.java @@ -1,11 +1,12 @@ package org.nuiton.topia.persistence.jdbc; +import java.io.Serializable; import java.sql.Driver; /** * @since 3.0 */ -public interface JdbcConfiguration { +public interface JdbcConfiguration extends Serializable { String getJdbcConnectionUrl(); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit 5c6e6d8189b54d2a5dd50597b94ac6d9ba0d5f47 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 12:00:44 2015 +0100 Implements guessHibernateDialect --- .../persistence/internal/HibernateProvider.java | 29 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 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 05170d9..6a8d4b2 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 @@ -31,7 +31,11 @@ import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.Configuration; +import org.hibernate.dialect.DB2Dialect; +import org.hibernate.dialect.DerbyDialect; import org.hibernate.dialect.H2Dialect; +import org.hibernate.dialect.HSQLDialect; +import org.hibernate.dialect.MySQL5Dialect; import org.hibernate.dialect.Oracle10gDialect; import org.hibernate.dialect.PostgreSQL9Dialect; import org.hibernate.dialect.SQLServer2012Dialect; @@ -46,6 +50,7 @@ import org.hibernate.service.spi.Stoppable; import org.nuiton.topia.persistence.TopiaConfiguration; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.internal.support.TopiaHibernateEventListener; +import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder; import org.nuiton.topia.persistence.support.TopiaServiceSupport; import org.nuiton.topia.persistence.util.TopiaUtil; @@ -153,14 +158,28 @@ public class HibernateProvider { public static String guessHibernateDialect(String jdbcConnectionUrl, String jdbcDriverClassName) { String guessedHibernateDialect = null; - if (jdbcConnectionUrl.startsWith("jdbc:postgresql:") || jdbcDriverClassName.equals("org.postgresql.Driver")) { - guessedHibernateDialect = PostgreSQL9Dialect.class.getName(); - } else if (jdbcConnectionUrl.startsWith("jdbc:h2:") || jdbcDriverClassName.equals("org.h2.Driver")) { + if (JdbcConfigurationBuilder.isDb2Url(jdbcConnectionUrl)) { + guessedHibernateDialect = DB2Dialect.class.getName(); + } else if (JdbcConfigurationBuilder.isDerbyUrl(jdbcConnectionUrl)) { + guessedHibernateDialect = DerbyDialect.class.getName(); + } else if (JdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl)) { guessedHibernateDialect = H2Dialect.class.getName(); - } else if (jdbcConnectionUrl.startsWith("jdbc:oracle:") || jdbcDriverClassName.equals("oracle.jdbc.driver.OracleDriver")) { + } else if (JdbcConfigurationBuilder.isHsqlDbUrl(jdbcConnectionUrl)) { + guessedHibernateDialect = HSQLDialect.class.getName(); + } else if (JdbcConfigurationBuilder.isMysqlUrl(jdbcConnectionUrl) + || JdbcConfigurationBuilder.isMariaDbUrl(jdbcConnectionUrl) + || JdbcConfigurationBuilder.isGoogleAppEngineUrl(jdbcConnectionUrl)) { + guessedHibernateDialect = MySQL5Dialect.class.getName(); + } else if (JdbcConfigurationBuilder.isOracleUrl(jdbcConnectionUrl)) { guessedHibernateDialect = Oracle10gDialect.class.getName(); - } else if (jdbcConnectionUrl.startsWith("jdbc:jtds:sqlserver:") || jdbcDriverClassName.equals("net.sourceforge.jtds.jdbc.Driver")) { + } else if (JdbcConfigurationBuilder.isPostgreSqlUrl(jdbcConnectionUrl)) { + guessedHibernateDialect = PostgreSQL9Dialect.class.getName(); + } else if (JdbcConfigurationBuilder.isJtdsUrl(jdbcConnectionUrl) + || JdbcConfigurationBuilder.isSqlServerUrl(jdbcConnectionUrl)) { guessedHibernateDialect = SQLServer2012Dialect.class.getName(); + } else if (JdbcConfigurationBuilder.isSqliteUrl(jdbcConnectionUrl) + || JdbcConfigurationBuilder.isSqlDroidUrl(jdbcConnectionUrl)) { + guessedHibernateDialect = null; } else { if (log.isWarnEnabled()) { log.warn("unable to guess Hibernate dialect for JDBC URL " + jdbcConnectionUrl + " and JDBC driver " + jdbcDriverClassName + ". Please, submit a patch!"); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit d67aa114f2b1b63f32e3dcd517b32b82df318871 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 12:26:37 2015 +0100 Allow user to instantiate TopiaIdFactory --- .../persistence/util/TopiaEntityHelperTest.java | 4 +- .../persistence/internal/TopiaIdFactoryTest.java | 2 +- .../topia/persistence/BeanTopiaConfiguration.java | 34 ++++++- .../topia/persistence/TopiaConfiguration.java | 4 +- .../persistence/TopiaConfigurationBuilder.java | 2 +- .../nuiton/topia/persistence/TopiaIdFactory.java | 9 +- .../internal/AbstractTopiaApplicationContext.java | 25 +---- .../internal/DefaultTopiaIdFactory.java | 104 +-------------------- ... FullyQualifiedNamePlusUuidTopiaIdFactory.java} | 9 +- .../persistence/internal/LegacyTopiaIdFactory.java | 2 + .../persistence/internal/ShortTopiaIdFactory.java | 23 ++--- ...lyQualifiedNamePlusUuidTopiaIdFactoryTest.java} | 10 +- 12 files changed, 69 insertions(+), 159 deletions(-) diff --git a/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/util/TopiaEntityHelperTest.java b/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/util/TopiaEntityHelperTest.java index 5e8a32c..6bfc657 100644 --- a/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/util/TopiaEntityHelperTest.java +++ b/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/util/TopiaEntityHelperTest.java @@ -30,7 +30,7 @@ import org.junit.BeforeClass; import org.junit.Test; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.it.legacy.TopiaItLegacyEntityEnum; -import org.nuiton.topia.persistence.internal.DefaultTopiaIdFactory; +import org.nuiton.topia.persistence.internal.FullyQualifiedNamePlusUuidTopiaIdFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; import org.nuiton.topia.persistence.TopiaIdFactory; @@ -59,7 +59,7 @@ import static org.junit.Assert.assertTrue; /** @author Tony Chemit - chemit@codelutin.com */ public class TopiaEntityHelperTest { - protected static TopiaIdFactory topiaIdFactory = new DefaultTopiaIdFactory(); + protected static TopiaIdFactory topiaIdFactory = new FullyQualifiedNamePlusUuidTopiaIdFactory(); protected static TopiaEntityEnum[] contracts; diff --git a/topia-it/src/test/java/org/nuiton/topia/persistence/internal/TopiaIdFactoryTest.java b/topia-it/src/test/java/org/nuiton/topia/persistence/internal/TopiaIdFactoryTest.java index 68ee19e..9b2d4aa 100644 --- a/topia-it/src/test/java/org/nuiton/topia/persistence/internal/TopiaIdFactoryTest.java +++ b/topia-it/src/test/java/org/nuiton/topia/persistence/internal/TopiaIdFactoryTest.java @@ -47,7 +47,7 @@ public class TopiaIdFactoryTest { @Test public void testDefaultTopiaIdFactory() { - TopiaIdFactory topiaIdFactory = new DefaultTopiaIdFactory(); + TopiaIdFactory topiaIdFactory = new FullyQualifiedNamePlusUuidTopiaIdFactory(); testTopiaIdFactory(topiaIdFactory); } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java index dd5050e..2c5a446 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java @@ -1,5 +1,6 @@ package org.nuiton.topia.persistence; +import org.nuiton.topia.persistence.internal.FullyQualifiedNamePlusUuidTopiaIdFactory; import org.nuiton.topia.persistence.jdbc.BeanJdbcConfiguration; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; @@ -8,8 +9,6 @@ import java.util.Map; public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements TopiaConfiguration { - protected String topiaIdFactoryClassName; - protected String schemaName; protected Map<String, String> hibernateExtraConfiguration = @@ -29,6 +28,8 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top protected Integer connectionPoolMaxSize; + protected TopiaIdFactory topiaIdFactory = new FullyQualifiedNamePlusUuidTopiaIdFactory(); + public BeanTopiaConfiguration() { } @@ -40,12 +41,35 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top } @Override - public String getTopiaIdFactoryClassName() { - return topiaIdFactoryClassName; + public TopiaIdFactory getTopiaIdFactory() { + return topiaIdFactory; + } + + public void setTopiaIdFactory(TopiaIdFactory topiaIdFactory) { + this.topiaIdFactory = topiaIdFactory; } public void setTopiaIdFactoryClassName(String topiaIdFactoryClassName) { - this.topiaIdFactoryClassName = topiaIdFactoryClassName; + try { + Class<?> topiaIdFactoryClass = Class.forName(topiaIdFactoryClassName); + if (TopiaIdFactory.class.isAssignableFrom(jdbcDriverClass)) { + setTopiaIdFactoryClass((Class<? extends TopiaIdFactory>) topiaIdFactoryClass); + } else { + throw new IllegalArgumentException(topiaIdFactoryClassName + " seems not to be a TopiaIdFactory: it does not implement " + TopiaIdFactory.class.getName()); + } + } catch (ClassNotFoundException e) { + throw new TopiaMisconfigurationException(topiaIdFactoryClassName + " cannot be found", this); + } + } + + public void setTopiaIdFactoryClass(Class<? extends TopiaIdFactory> topiaIdFactoryClass) { + try { + setTopiaIdFactory(topiaIdFactoryClass.newInstance()); + } catch (InstantiationException e) { + throw new TopiaMisconfigurationException(topiaIdFactoryClass + " is not instantiable", this); + } catch (IllegalAccessException e) { + throw new TopiaMisconfigurationException(topiaIdFactoryClass + " is not instantiable", this); + } } @Override diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java index fb1f48a..a61f2f5 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java @@ -23,11 +23,9 @@ public interface TopiaConfiguration extends JdbcConfiguration { /** * Configuration directive to change topia Ids generation strategy. * - * Expected value is an FQN to a class which implements {@link org.nuiton.topia.persistence.TopiaIdFactory} - * * @since 3.0 */ - String getTopiaIdFactoryClassName(); + TopiaIdFactory getTopiaIdFactory(); String getSchemaName(); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java index 97398ed..674b63f 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java @@ -224,7 +224,7 @@ public class TopiaConfigurationBuilder { } // others - map.put(CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME, topiaConfiguration.getTopiaIdFactoryClassName()); + map.put(CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME, topiaConfiguration.getTopiaIdFactory().getClass().getName()); if (topiaConfiguration.getSchemaName() != null) { map.put(CONFIG_DEFAULT_SCHEMA, topiaConfiguration.getSchemaName()); } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java index f2a95b8..b601a85 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaIdFactory.java @@ -24,6 +24,8 @@ package org.nuiton.topia.persistence; * #L% */ +import java.io.Serializable; + /** * This contract represents a topiaId generation strategy. * <p/> @@ -35,12 +37,15 @@ package org.nuiton.topia.persistence; * * You can change the implementation used by ToPIA by changing configuration. * - * @see TopiaConfiguration#getTopiaIdFactoryClassName() + * {@link java.io.Serializable} must be implemented because + * {@link org.nuiton.topia.persistence.TopiaConfiguration} may hold some references. + * + * @see org.nuiton.topia.persistence.TopiaConfiguration#getTopiaIdFactory() * @author bleny <leny@codelutin.com/> * @author tchemit <chemit@codelutin.com/> * @since 3.0 */ -public interface TopiaIdFactory { +public interface TopiaIdFactory extends Serializable { /** * Generates a new topiaId for the given entity type and the given entity. diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java index 78d199d..6fcdecc 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java @@ -26,7 +26,6 @@ package org.nuiton.topia.persistence.internal; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; @@ -238,29 +237,7 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence } protected TopiaIdFactory getTopiaIdFactory() { - if (topiaIdFactory == null) { - String topiaIdFactoryClassName = getConfiguration().getTopiaIdFactoryClassName(); - if (StringUtils.isEmpty(topiaIdFactoryClassName)) { - topiaIdFactory = new DefaultTopiaIdFactory(); - } else { - try { - Class topiaIdFactoryClass = Class.forName(topiaIdFactoryClassName); - Preconditions.checkState(TopiaIdFactory.class.isAssignableFrom(topiaIdFactoryClass), - topiaIdFactoryClassName + " is not a valid class name. The class must implements " - + TopiaIdFactory.class.getSimpleName()); - - topiaIdFactory = (TopiaIdFactory) topiaIdFactoryClass.newInstance(); - } catch (ClassNotFoundException e) { - throw new TopiaException("Unable to create user specified TopiaIdFactory", e); - } catch (InstantiationException e) { - throw new TopiaException("Unable to create user specified TopiaIdFactory", e); - } catch (IllegalAccessException e) { - throw new TopiaException("Unable to create user specified TopiaIdFactory", e); - } - } - - } - return topiaIdFactory; + return getConfiguration().getTopiaIdFactory(); } public TopiaHibernateSessionRegistry getSessionRegistry() { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java index 59ea58e..d4bd955 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java @@ -1,109 +1,11 @@ package org.nuiton.topia.persistence.internal; -/* - * #%L - * ToPIA :: Persistence - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program 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. - * - * This program 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaException; -import org.nuiton.topia.persistence.TopiaIdFactory; - -import java.util.UUID; - -import com.google.common.base.Preconditions; - /** - * Default implementation of {@link TopiaIdFactory}. Generates a FQN followed by a random UUID. - * - * @author Brendan Le Ny <leny@codelutin.com> * @since 3.0 + * @deprecated use {@link org.nuiton.topia.persistence.internal.FullyQualifiedNamePlusUuidTopiaIdFactory} */ -public class DefaultTopiaIdFactory implements TopiaIdFactory { - - private static final Log log = LogFactory.getLog(DefaultTopiaIdFactory.class); - - @Override - public <E extends TopiaEntity> String newTopiaId(Class<E> entityClass, TopiaEntity topiaEntity) { - String randomPart = UUID.randomUUID().toString(); - String result = newTopiaId(entityClass, randomPart); - return result; - } - - @Override - public <E extends TopiaEntity> String newTopiaId(Class<E> entityClass, String randomPart) { - if (!entityClass.isInterface()) { - throw new IllegalArgumentException( - "Only interface is permit to create id: " + entityClass); - } - String className = entityClass.getName(); - Preconditions.checkArgument(!className.contains(getSeparator()), "Your entity class name must not contains the separator"); - String result = className + getSeparator() + randomPart; - return result; - } - - @Override - public <E extends TopiaEntity> Class<E> getClassName(String topiaId) { - String className = StringUtils.substringBefore(topiaId, getSeparator()); - try { - Class<E> entityClass = (Class<E>) Class.forName(className); - return entityClass; - } catch (ClassNotFoundException e) { - throw new TopiaException("can't find class for topiaId = '" + topiaId + "'", e); - } - } - - @Override - public String getSeparator() { - return "_"; - } - - @Override - public String getRandomPart(String topiaId) { - return StringUtils.substringAfter(topiaId, getSeparator()); - } +public class DefaultTopiaIdFactory extends FullyQualifiedNamePlusUuidTopiaIdFactory { - @Override - public boolean isTopiaId(String str) { - boolean isTopiaId = false; - if (str != null) { - String[] split = str.split(getSeparator()); - if (split.length == 2) { - String className = split[0]; - try { - Class.forName(className); - isTopiaId = StringUtils.isNotBlank(split[1]); - } catch (ClassNotFoundException eee) { - // nothing to do, just return false - if (log.isDebugEnabled()) { - log.debug(eee); - } - } - } - } - return isTopiaId; - } + private static final long serialVersionUID = 1; } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/FullyQualifiedNamePlusUuidTopiaIdFactory.java similarity index 93% copy from topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java copy to topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/FullyQualifiedNamePlusUuidTopiaIdFactory.java index 59ea58e..7857efe 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/DefaultTopiaIdFactory.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/FullyQualifiedNamePlusUuidTopiaIdFactory.java @@ -24,6 +24,7 @@ package org.nuiton.topia.persistence.internal; * #L% */ +import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -33,17 +34,17 @@ import org.nuiton.topia.persistence.TopiaIdFactory; import java.util.UUID; -import com.google.common.base.Preconditions; - /** * Default implementation of {@link TopiaIdFactory}. Generates a FQN followed by a random UUID. * * @author Brendan Le Ny <leny@codelutin.com> * @since 3.0 */ -public class DefaultTopiaIdFactory implements TopiaIdFactory { +public class FullyQualifiedNamePlusUuidTopiaIdFactory implements TopiaIdFactory { + + private static final long serialVersionUID = 1; - private static final Log log = LogFactory.getLog(DefaultTopiaIdFactory.class); + private static final Log log = LogFactory.getLog(FullyQualifiedNamePlusUuidTopiaIdFactory.class); @Override public <E extends TopiaEntity> String newTopiaId(Class<E> entityClass, TopiaEntity topiaEntity) { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/LegacyTopiaIdFactory.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/LegacyTopiaIdFactory.java index e831398..b84bd42 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/LegacyTopiaIdFactory.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/LegacyTopiaIdFactory.java @@ -40,6 +40,8 @@ import org.nuiton.topia.persistence.TopiaNotFoundException; */ public class LegacyTopiaIdFactory implements TopiaIdFactory { + private static final long serialVersionUID = 1; + private static final Log log = LogFactory.getLog(LegacyTopiaIdFactory.class); @Override diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/ShortTopiaIdFactory.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/ShortTopiaIdFactory.java index 0f0a607..4748f5a 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/ShortTopiaIdFactory.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/ShortTopiaIdFactory.java @@ -22,10 +22,12 @@ package org.nuiton.topia.persistence.internal; * #L% */ -import java.util.Map; -import java.util.Set; -import java.util.UUID; - +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.common.io.BaseEncoding; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -33,15 +35,12 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaIdFactory; -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.common.io.BaseEncoding; +import java.util.Map; +import java.util.Set; +import java.util.UUID; /** - * Does the same than {@link DefaultTopiaIdFactory} but produces shorter topiaId. The class-name part uses only simple + * Does the same than {@link FullyQualifiedNamePlusUuidTopiaIdFactory} but produces shorter topiaId. The class-name part uses only simple * class names, and the random part is base64 encoded. * <p/> * Note: This TopiaIdFactory requires that you do not have several entities with the same simple class name. @@ -50,6 +49,8 @@ import com.google.common.io.BaseEncoding; */ public class ShortTopiaIdFactory implements TopiaIdFactory { + private static final long serialVersionUID = 1; + private static final Log log = LogFactory.getLog(ShortTopiaIdFactory.class); protected static final Map<String, Class<? extends TopiaEntity>> ENTITY_CLASSES = Maps.newConcurrentMap(); diff --git a/topia-persistence/src/test/java/org/nuiton/topia/persistence/DefaultTopiaIdFactoryTest.java b/topia-persistence/src/test/java/org/nuiton/topia/persistence/FullyQualifiedNamePlusUuidTopiaIdFactoryTest.java similarity index 90% rename from topia-persistence/src/test/java/org/nuiton/topia/persistence/DefaultTopiaIdFactoryTest.java rename to topia-persistence/src/test/java/org/nuiton/topia/persistence/FullyQualifiedNamePlusUuidTopiaIdFactoryTest.java index cd69a35..a27a8eb 100644 --- a/topia-persistence/src/test/java/org/nuiton/topia/persistence/DefaultTopiaIdFactoryTest.java +++ b/topia-persistence/src/test/java/org/nuiton/topia/persistence/FullyQualifiedNamePlusUuidTopiaIdFactoryTest.java @@ -27,12 +27,12 @@ package org.nuiton.topia.persistence; import org.junit.Assert; import org.junit.Test; import org.nuiton.topia.persistence.internal.AbstractTopiaEntity; -import org.nuiton.topia.persistence.internal.DefaultTopiaIdFactory; +import org.nuiton.topia.persistence.internal.FullyQualifiedNamePlusUuidTopiaIdFactory; /** * @author Sylvain Bavencoff <bavencoff@codelutin.com> */ -public class DefaultTopiaIdFactoryTest { +public class FullyQualifiedNamePlusUuidTopiaIdFactoryTest { interface EntityA extends TopiaEntity {} @@ -54,10 +54,10 @@ public class DefaultTopiaIdFactoryTest { } } - protected DefaultTopiaIdFactory topiaFactory; + protected FullyQualifiedNamePlusUuidTopiaIdFactory topiaFactory; - public DefaultTopiaIdFactoryTest() { - topiaFactory = new DefaultTopiaIdFactory(); + public FullyQualifiedNamePlusUuidTopiaIdFactoryTest() { + topiaFactory = new FullyQualifiedNamePlusUuidTopiaIdFactory(); } @Test -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit 098f5b76bb99b3a1b28ecb156d2e0fc500d369c5 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 16:14:31 2015 +0100 Enable connection pooling by default --- pom.xml | 7 ++ topia-persistence/pom.xml | 5 ++ .../topia/persistence/BeanTopiaConfiguration.java | 35 +--------- .../persistence/HibernateAvailableSettings.java | 6 ++ .../topia/persistence/TopiaConfiguration.java | 6 -- .../persistence/TopiaConfigurationBuilder.java | 81 ++++------------------ .../persistence/internal/HibernateProvider.java | 16 +++-- .../persistence/TopiaConfigurationBuilderTest.java | 4 -- 8 files changed, 44 insertions(+), 116 deletions(-) diff --git a/pom.xml b/pom.xml index fc60c8e..015d55b 100644 --- a/pom.xml +++ b/pom.xml @@ -324,6 +324,13 @@ </dependency> <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-c3p0</artifactId> + <version>${hibernateVersion}</version> + <scope>runtime</scope> + </dependency> + + <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>${javassistVersion}</version> diff --git a/topia-persistence/pom.xml b/topia-persistence/pom.xml index dd52c6e..e546f93 100644 --- a/topia-persistence/pom.xml +++ b/topia-persistence/pom.xml @@ -97,6 +97,11 @@ <artifactId>slf4j-log4j12</artifactId> </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-c3p0</artifactId> + </dependency> + <!-- BD H2 for testing --> <dependency> <groupId>com.h2database</groupId> diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java index 2c5a446..d81ed72 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/BeanTopiaConfiguration.java @@ -14,10 +14,6 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top protected Map<String, String> hibernateExtraConfiguration = new LinkedHashMap<String, String>(); - protected boolean connectionPoolingEnabled; - - protected Integer connectionPoolMinSize; - protected boolean initSchema = true; protected Map<String, Class<? extends TopiaService>> declaredServices = @@ -26,8 +22,6 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top protected Map<String, Map<String, String>> declaredServicesConfiguration = new LinkedHashMap<String, Map<String, String>>(); - protected Integer connectionPoolMaxSize; - protected TopiaIdFactory topiaIdFactory = new FullyQualifiedNamePlusUuidTopiaIdFactory(); public BeanTopiaConfiguration() { @@ -52,7 +46,7 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top public void setTopiaIdFactoryClassName(String topiaIdFactoryClassName) { try { Class<?> topiaIdFactoryClass = Class.forName(topiaIdFactoryClassName); - if (TopiaIdFactory.class.isAssignableFrom(jdbcDriverClass)) { + if (TopiaIdFactory.class.isAssignableFrom(topiaIdFactoryClass)) { setTopiaIdFactoryClass((Class<? extends TopiaIdFactory>) topiaIdFactoryClass); } else { throw new IllegalArgumentException(topiaIdFactoryClassName + " seems not to be a TopiaIdFactory: it does not implement " + TopiaIdFactory.class.getName()); @@ -91,24 +85,6 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top } @Override - public boolean isConnectionPoolingEnabled() { - return connectionPoolingEnabled; - } - - public void setConnectionPoolingEnabled(boolean connectionPoolingEnabled) { - this.connectionPoolingEnabled = connectionPoolingEnabled; - } - - @Override - public Integer getConnectionPoolMinSize() { - return connectionPoolMinSize; - } - - public void setConnectionPoolMinSize(Integer connectionPoolMinSize) { - this.connectionPoolMinSize = connectionPoolMinSize; - } - - @Override public boolean isInitSchema() { return initSchema; } @@ -135,15 +111,6 @@ public class BeanTopiaConfiguration extends BeanJdbcConfiguration implements Top this.declaredServicesConfiguration = declaredServicesConfiguration; } - @Override - public Integer getConnectionPoolMaxSize() { - return connectionPoolMaxSize; - } - - public void setConnectionPoolMaxSize(Integer connectionPoolMaxSize) { - this.connectionPoolMaxSize = connectionPoolMaxSize; - } - public void addDeclaredService(String serviceName, String serviceClassName, Map<String, String> serviceConfiguration) { try { Class<?> aClass = Class.forName(serviceClassName); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/HibernateAvailableSettings.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/HibernateAvailableSettings.java index 9be6d96..2390a47 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/HibernateAvailableSettings.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/HibernateAvailableSettings.java @@ -11,4 +11,10 @@ import org.hibernate.cfg.AvailableSettings; */ public interface HibernateAvailableSettings extends AvailableSettings { + /** + * {@link org.hibernate.cfg.AvailableSettings} seems to lack a constant for this configuration + * directive. + */ + public String NAMING_STRATEGY = "hibernate.ejb.naming_strategy"; + } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java index a61f2f5..bbcc693 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfiguration.java @@ -45,12 +45,6 @@ public interface TopiaConfiguration extends JdbcConfiguration { */ Map<String, String> getHibernateExtraConfiguration(); - boolean isConnectionPoolingEnabled(); - - Integer getConnectionPoolMinSize(); - - Integer getConnectionPoolMaxSize(); - Map<String, Class<? extends TopiaService>> getDeclaredServices(); Map<String, Map<String,String>> getDeclaredServicesConfiguration(); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java index 674b63f..a7b01d8 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java @@ -53,14 +53,8 @@ public class TopiaConfigurationBuilder { /** * Configuration that must not be in {@link TopiaConfiguration#getHibernateExtraConfiguration()}. */ - protected static final ImmutableSet<String> MAIN_CONFIGURATION = ImmutableSet.of( - CONFIG_DRIVER, - CONFIG_URL, - CONFIG_USER, - CONFIG_PASS, - AvailableSettings.C3P0_MIN_SIZE, - AvailableSettings.C3P0_MAX_SIZE - ); + protected static final ImmutableSet<String> MAIN_CONFIGURATION = + ImmutableSet.of(CONFIG_DRIVER, CONFIG_URL, CONFIG_USER, CONFIG_PASS); /** * Do nothing but throws {@link TopiaMisconfigurationException} if there is a problem in @@ -79,11 +73,6 @@ public class TopiaConfigurationBuilder { if (topiaConfiguration.getJdbcDriverClass() == null) { throw new TopiaMisconfigurationException("you must provide JDBC connection driver", topiaConfiguration); } - if (topiaConfiguration.isConnectionPoolingEnabled()) { - if (topiaConfiguration.getConnectionPoolMinSize() == null || topiaConfiguration.getConnectionPoolMaxSize() == null) { - throw new TopiaMisconfigurationException("You must configure pool size if you want it to be enabled", topiaConfiguration); - } - } Map<String, String> hibernateExtraConfiguration = topiaConfiguration.getHibernateExtraConfiguration(); if (hibernateExtraConfiguration.containsKey(AvailableSettings.HBM2DDL_AUTO)) { throw new TopiaMisconfigurationException("you must not use " + AvailableSettings.HBM2DDL_AUTO @@ -136,18 +125,6 @@ public class TopiaConfigurationBuilder { boolean initSchema = StringUtils.isBlank(initSchemaConfigValue) || Boolean.parseBoolean(initSchemaConfigValue); result.setInitSchema(initSchema); - // connection pooling - String connectionPoolMinSize = configuration.get(AvailableSettings.C3P0_MIN_SIZE); - String connectionPoolMaxSize = configuration.get(AvailableSettings.C3P0_MAX_SIZE); - - boolean connectionPoolingEnabled = StringUtils.isNotBlank(connectionPoolMinSize) - && StringUtils.isNotBlank(connectionPoolMaxSize); - result.setConnectionPoolingEnabled(connectionPoolingEnabled); - if (connectionPoolingEnabled) { - result.setConnectionPoolMinSize(Integer.valueOf(connectionPoolMinSize)); - result.setConnectionPoolMaxSize(Integer.valueOf(connectionPoolMaxSize)); - } - // others result.setTopiaIdFactoryClassName(configuration.get(CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME)); result.setSchemaName(configuration.get(CONFIG_DEFAULT_SCHEMA)); @@ -217,12 +194,6 @@ public class TopiaConfigurationBuilder { map.put(CONFIG_PERSISTENCE_INIT_SCHEMA, String.valueOf(topiaConfiguration.isInitSchema())); } - // connection pooling - if (topiaConfiguration.isConnectionPoolingEnabled()) { - map.put(HibernateAvailableSettings.C3P0_MIN_SIZE, String.valueOf(topiaConfiguration.getConnectionPoolMinSize())); - map.put(HibernateAvailableSettings.C3P0_MAX_SIZE, String.valueOf(topiaConfiguration.getConnectionPoolMaxSize())); - } - // others map.put(CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME, topiaConfiguration.getTopiaIdFactory().getClass().getName()); if (topiaConfiguration.getSchemaName() != null) { @@ -256,14 +227,14 @@ public class TopiaConfigurationBuilder { return properties; } - public static ConfigureConnectionPoolingStep forDatabase(JdbcConfiguration jdbcConfiguration) { + public static ConfigureInitSchemaStep forDatabase(JdbcConfiguration jdbcConfiguration) { BeanTopiaConfiguration beanTopiaConfiguration = new BeanTopiaConfiguration(jdbcConfiguration); - return new ConfigureConnectionPoolingStep(beanTopiaConfiguration); + return new ConfigureInitSchemaStep(beanTopiaConfiguration); } public static BeanTopiaConfiguration forTest(Class<?> testClass, String methodName) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forTest(testClass, methodName); - BeanTopiaConfiguration configuration = forDatabase(jdbcConfiguration).doNotUseConnectionPooling().onlyCreateSchemaIfDatabaseIsEmpty().build(); + BeanTopiaConfiguration configuration = forDatabase(jdbcConfiguration).onlyCreateSchemaIfDatabaseIsEmpty().build(); return configuration; } @@ -274,28 +245,6 @@ public class TopiaConfigurationBuilder { return copy; } - public static class ConfigureConnectionPoolingStep { - - protected BeanTopiaConfiguration beanTopiaConfiguration; - - public ConfigureConnectionPoolingStep(BeanTopiaConfiguration beanTopiaConfiguration) { - this.beanTopiaConfiguration = beanTopiaConfiguration; - } - - public ConfigureInitSchemaStep doNotUseConnectionPooling() { - beanTopiaConfiguration.setConnectionPoolingEnabled(false); - return new ConfigureInitSchemaStep(beanTopiaConfiguration); - } - - public ConfigureInitSchemaStep useConnectionPooling(int connectionPoolMinSize, int connectionPoolMaxSize) { - beanTopiaConfiguration.setConnectionPoolingEnabled(true); - beanTopiaConfiguration.setConnectionPoolMinSize(connectionPoolMinSize); - beanTopiaConfiguration.setConnectionPoolMaxSize(connectionPoolMaxSize); - return new ConfigureInitSchemaStep(beanTopiaConfiguration); - } - - } - public static class ConfigureInitSchemaStep { protected BeanTopiaConfiguration beanTopiaConfiguration; @@ -363,52 +312,52 @@ public class TopiaConfigurationBuilder { * A few methods thah delegates to JdbcConfigurationBuilder */ - public static ConfigureConnectionPoolingStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword, String jdbcDriverClassName) { + public static ConfigureInitSchemaStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword, String jdbcDriverClassName) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forDatabase(jdbcConnectionUrl, jdbcConnectionUser, jdbcConnectionPassword, jdbcDriverClassName); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword, Class<? extends Driver> jdbcDriverClass) { + public static ConfigureInitSchemaStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword, Class<? extends Driver> jdbcDriverClass) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forDatabase(jdbcConnectionUrl, jdbcConnectionUser, jdbcConnectionPassword, jdbcDriverClass); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword) { + public static ConfigureInitSchemaStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forDatabase(jdbcConnectionUrl, jdbcConnectionUser, jdbcConnectionPassword); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forPostgresqlDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword) { + public static ConfigureInitSchemaStep forPostgresqlDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forPostgresqlDatabase(jdbcConnectionUrl, jdbcConnectionUser, jdbcConnectionPassword); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forH2Database(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword) { + public static ConfigureInitSchemaStep forH2Database(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forH2Database(jdbcConnectionUrl, jdbcConnectionUser, jdbcConnectionPassword); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forH2Database(String jdbcConnectionUrl) { + public static ConfigureInitSchemaStep forH2Database(String jdbcConnectionUrl) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forH2Database(jdbcConnectionUrl); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forH2Database(File file) { + public static ConfigureInitSchemaStep forH2Database(File file) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forH2Database(file); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forH2DatabaseInTempDirectory() { + public static ConfigureInitSchemaStep forH2DatabaseInTempDirectory() { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forH2DatabaseInTempDirectory(); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forInMemoryH2Database() { + public static ConfigureInitSchemaStep forInMemoryH2Database() { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forInMemoryH2Database(); return forDatabase(jdbcConfiguration); } - public static ConfigureConnectionPoolingStep forTestDatabase(Class<?> testClass, String methodName) { + public static ConfigureInitSchemaStep forTestDatabase(Class<?> testClass, String methodName) { JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forTest(testClass, methodName); return forDatabase(jdbcConfiguration); } 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 6a8d4b2..4b4c46c 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 @@ -47,6 +47,7 @@ import org.hibernate.service.Service; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.spi.SessionFactoryServiceRegistry; 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.internal.support.TopiaHibernateEventListener; @@ -129,15 +130,18 @@ public class HibernateProvider { // dialect properties.put(AvailableSettings.DIALECT, getHibernateDialect(topiaConfiguration)); - // Connection pool - if (topiaConfiguration.isConnectionPoolingEnabled()) { - properties.put(AvailableSettings.C3P0_MIN_SIZE, topiaConfiguration.getConnectionPoolMinSize()); - properties.put(AvailableSettings.C3P0_MAX_SIZE, topiaConfiguration.getConnectionPoolMaxSize()); - } + // using c3p0 with default configuration + properties.put(AvailableSettings.C3P0_MIN_SIZE, 5); + properties.put(AvailableSettings.C3P0_MAX_SIZE, 20); + properties.put(AvailableSettings.C3P0_TIMEOUT, 1800); + properties.put(AvailableSettings.C3P0_MAX_STATEMENTS, 50); + // always validate schema properties.put(AvailableSettings.HBM2DDL_AUTO, "validate"); - // TODO brendan 27/11/14 check if C3P0 in classpath ? + properties.put(HibernateAvailableSettings.NAMING_STRATEGY, org.hibernate.cfg.ImprovedNamingStrategy.class.getName()); + properties.put(AvailableSettings.FORMAT_SQL, true); + properties.put(AvailableSettings.USE_SQL_COMMENTS, true); // user specific configuration properties.putAll(topiaConfiguration.getHibernateExtraConfiguration()); diff --git a/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java b/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java index dcae9bc..62fefdd 100644 --- a/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java +++ b/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java @@ -7,8 +7,6 @@ import org.junit.Before; import org.junit.Test; import org.nuiton.topia.persistence.internal.LegacyTopiaIdFactory; import org.nuiton.topia.persistence.internal.TopiaConnectionProvider; -import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; -import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder; import java.util.Map; import java.util.Properties; @@ -47,7 +45,6 @@ public class TopiaConfigurationBuilderTest { TopiaConfiguration topiaConfiguration = TopiaConfigurationBuilder.forTestDatabase(getClass(), "build") - .doNotUseConnectionPooling() .useHibernateUpdate() .build(); @@ -68,7 +65,6 @@ public class TopiaConfigurationBuilderTest { BeanTopiaConfiguration topiaConfiguration = TopiaConfigurationBuilder.readProperties(properties); Assert.assertTrue(topiaConfiguration.getHibernateExtraConfiguration().containsValue(org.hibernate.cfg.ImprovedNamingStrategy.class.getName())); - Assert.assertTrue(topiaConfiguration.isConnectionPoolingEnabled()); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm