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 9134582a63aaf3382c757ff015731e1f70dedcbf Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Dec 19 16:52:40 2014 +0100 Deprecate everything in TopiaConfigurationConstants --- .../persistence/TopiaApplicationContextCache.java | 15 ++-- .../topia/persistence/TopiaConfiguration.java | 13 ++++ .../persistence/TopiaConfigurationBuilder.java | 52 ++++++++++--- .../persistence/TopiaConfigurationConstants.java | 87 ++++++++++++---------- .../nuiton/topia/persistence/TopiaIdFactory.java | 4 +- .../persistence/internal/HibernateProvider.java | 3 +- .../nuiton/topia/persistence/util/TopiaUtil.java | 37 +++++---- .../topia/migration/TopiaMigrationEngine.java | 4 +- .../topia/migration/TopiaMigrationService.java | 2 +- 9 files changed, 132 insertions(+), 85 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContextCache.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContextCache.java index d872e9a..931a5cc 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContextCache.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContextCache.java @@ -24,18 +24,17 @@ package org.nuiton.topia.persistence; * #L% */ -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; - +import com.google.common.base.Function; +import com.google.common.collect.Lists; import org.apache.commons.collections4.map.AbstractReferenceMap; import org.apache.commons.collections4.map.ReferenceMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import com.google.common.base.Function; -import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; /** * <p>This class will provide a TopiaApplicationContext cache. Its usage is not necessary, contexts can be directly @@ -105,7 +104,7 @@ public class TopiaApplicationContextCache { public static List<String> getRegisteredContextUrls() { List<String> result = Lists.newArrayList(); for (Properties e : contextCache.keySet()) { - result.add(e.getProperty(TopiaConfigurationConstants.CONFIG_URL)); + result.add(e.getProperty(TopiaConfigurationBuilder.CONFIG_URL)); } return result; } 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 7a85cc9..5005c0d 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 @@ -11,8 +11,21 @@ import java.util.Map; */ public interface TopiaConfiguration extends JdbcConfiguration { + /** + * You can set it to false if you don't want Topia to deal with the schema (you keep it + * up to date with your own sql file). + * + * @since 3.0 + */ boolean isInitSchema(); + /** + * Configuration directive to change topia Ids generation strategy. + * <p/> + * Expected value is an FQN to a class which implements {@link org.nuiton.topia.persistence.TopiaIdFactory} + * + * @since 3.0 + */ String getTopiaIdFactoryClassName(); 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 dbb9e1c..4e87d75 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 @@ -2,11 +2,13 @@ package org.nuiton.topia.persistence; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.AvailableSettings; +import org.hibernate.cfg.Environment; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder; import org.nuiton.util.beans.Binder; @@ -26,6 +28,34 @@ public class TopiaConfigurationBuilder { protected static final String TOPIA_SERVICE_CONFIGURATION_PREFIX = "topia.service."; + protected static final String CONFIG_DEFAULT_SCHEMA = Environment.DEFAULT_SCHEMA; + + protected static final String CONFIG_USER = AvailableSettings.USER; + + protected static final String CONFIG_PASS = AvailableSettings.PASS; + + protected static final String CONFIG_DRIVER = AvailableSettings.DRIVER; + + protected static final String CONFIG_URL = AvailableSettings.URL; + + protected static final String CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME = + "topia.persistence.topiaIdFactoryClassName"; + + protected static final String CONFIG_PERSISTENCE_INIT_SCHEMA = + "topia.persistence.initSchema"; + + /** + * 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 + ); + /** * Do nothing but throws {@link TopiaMisconfigurationException} if there is a problem in * given configuration. @@ -49,15 +79,15 @@ public class TopiaConfigurationBuilder { } } Map<String, String> hibernateExtraConfiguration = topiaConfiguration.getHibernateExtraConfiguration(); - if (hibernateExtraConfiguration.containsKey(TopiaConfigurationConstants.CONFIG_HBM2DDL_AUTO)) { - throw new TopiaMisconfigurationException("you must not use " + TopiaConfigurationConstants.CONFIG_HBM2DDL_AUTO + if (hibernateExtraConfiguration.containsKey(Environment.HBM2DDL_AUTO)) { + throw new TopiaMisconfigurationException("you must not use " + Environment.HBM2DDL_AUTO + " configuration directive, if you want Hibernate to update the schema, use " + HibernateTopiaMigrationService.class.getName(), topiaConfiguration); } for (Map.Entry<String, String> entry : hibernateExtraConfiguration.entrySet()) { String key = entry.getKey(); boolean entryIsOk = key.startsWith("hibernate.") - && ! TopiaConfigurationConstants.MAIN_CONFIGURATION.contains(key); + && ! MAIN_CONFIGURATION.contains(key); if ( ! entryIsOk) { throw new TopiaMisconfigurationException("hibernate extra configuration is " + hibernateExtraConfiguration + @@ -87,16 +117,16 @@ public class TopiaConfigurationBuilder { public static BeanTopiaConfiguration readMap(Map<String, String> configuration) { // JDBC connection - String url = configuration.get(TopiaConfigurationConstants.CONFIG_URL); - String user = configuration.get(TopiaConfigurationConstants.CONFIG_USER); - String password = configuration.get(TopiaConfigurationConstants.CONFIG_PASS); - String driverName = configuration.get(TopiaConfigurationConstants.CONFIG_DRIVER); + String url = configuration.get(CONFIG_URL); + String user = configuration.get(CONFIG_USER); + String password = configuration.get(CONFIG_PASS); + String driverName = configuration.get(CONFIG_DRIVER); JdbcConfiguration jdbcConfiguration = JdbcConfigurationBuilder.forDatabase(url, user, password, driverName); BeanTopiaConfiguration result = new BeanTopiaConfiguration(jdbcConfiguration); // Schema initialization - String initSchemaConfigValue = configuration.get(TopiaConfigurationConstants.CONFIG_PERSISTENCE_INIT_SCHEMA); + String initSchemaConfigValue = configuration.get(CONFIG_PERSISTENCE_INIT_SCHEMA); boolean initSchema = StringUtils.isBlank(initSchemaConfigValue) || Boolean.parseBoolean(initSchemaConfigValue); result.setInitSchema(initSchema); @@ -113,14 +143,14 @@ public class TopiaConfigurationBuilder { } // others - result.setTopiaIdFactoryClassName(configuration.get(TopiaConfigurationConstants.CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME)); - result.setSchemaName(configuration.get(TopiaConfigurationConstants.CONFIG_DEFAULT_SCHEMA)); + result.setTopiaIdFactoryClassName(configuration.get(CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME)); + result.setSchemaName(configuration.get(CONFIG_DEFAULT_SCHEMA)); // Hibernate for (Map.Entry<String, String> entry : configuration.entrySet()) { String key = entry.getKey(); boolean keyMustBeIncludedInHibernateExtraConfiguration = - !TopiaConfigurationConstants.MAIN_CONFIGURATION.contains(key) + !MAIN_CONFIGURATION.contains(key) && key.startsWith("hibernate."); if (keyMustBeIncludedInHibernateExtraConfiguration) { result.getHibernateExtraConfiguration().put(key, entry.getValue()); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationConstants.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationConstants.java index 1f5f5ad..6217f48 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationConstants.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationConstants.java @@ -24,7 +24,6 @@ package org.nuiton.topia.persistence; * #L% */ -import com.google.common.collect.ImmutableSet; import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.Environment; @@ -35,64 +34,76 @@ import org.hibernate.cfg.Environment; * * @author Tony Chemit - chemit@codelutin.com * @since 3.0 + * @deprecated if you want to dynamically create configuration through Java, use {@link org.nuiton.topia.persistence.TopiaConfigurationBuilder}, + * if you need Hibernate constants, use {@link org.hibernate.cfg.AvailableSettings} */ +@Deprecated public interface TopiaConfigurationConstants { - ImmutableSet<String> MAIN_CONFIGURATION = ImmutableSet.of( - TopiaConfigurationConstants.CONFIG_DRIVER, - TopiaConfigurationConstants.CONFIG_URL, - TopiaConfigurationConstants.CONFIG_USER, - TopiaConfigurationConstants.CONFIG_PASS, - AvailableSettings.C3P0_MIN_SIZE, - AvailableSettings.C3P0_MAX_SIZE - ); - - String CONFIG_DEFAULT_SCHEMA = Environment.DEFAULT_SCHEMA; - - String CONFIG_USER = Environment.USER; + /** + * @deprecated use {@link org.nuiton.topia.persistence.TopiaConfiguration#getSchemaName()} + */ + @Deprecated + String CONFIG_DEFAULT_SCHEMA = TopiaConfigurationBuilder.CONFIG_DEFAULT_SCHEMA; - String CONFIG_PASS = Environment.PASS; + /** + * @deprecated use {@link org.nuiton.topia.persistence.TopiaConfiguration#getJdbcConnectionUser()} + */ + @Deprecated + String CONFIG_USER = TopiaConfigurationBuilder.CONFIG_USER; - String CONFIG_DRIVER = Environment.DRIVER; + /** + * @deprecated use {@link TopiaConfiguration#getJdbcConnectionPassword()} + */ + @Deprecated + String CONFIG_PASS = TopiaConfigurationBuilder.CONFIG_PASS; - String CONFIG_DIALECT = Environment.DIALECT; + /** + * @deprecated use {@link TopiaConfiguration#getJdbcDriverClass()} + */ + @Deprecated + String CONFIG_DRIVER = TopiaConfigurationBuilder.CONFIG_DRIVER; - String CONFIG_CONNECTION_PROVIDER = Environment.CONNECTION_PROVIDER; + /** + * @deprecated dialect is now guessed by Topia, you may use {@link TopiaConfiguration#getHibernateExtraConfiguration()} + * and add a key using constant {@link Environment#DIALECT}. + */ + @Deprecated + String CONFIG_DIALECT = AvailableSettings.DIALECT; - String CONFIG_BYTECODE_PROVIDER = Environment.BYTECODE_PROVIDER; + String CONFIG_CONNECTION_PROVIDER = AvailableSettings.CONNECTION_PROVIDER; - String CONFIG_CURRENT_SESSION_CONTEXT_CLASS = Environment.CURRENT_SESSION_CONTEXT_CLASS; + String CONFIG_BYTECODE_PROVIDER = AvailableSettings.BYTECODE_PROVIDER; - String CONFIG_GENERATE_STATISTICS = Environment.GENERATE_STATISTICS; + String CONFIG_CURRENT_SESSION_CONTEXT_CLASS = AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS; - String CONFIG_FORMAT_SQL = Environment.FORMAT_SQL; + String CONFIG_GENERATE_STATISTICS = AvailableSettings.GENERATE_STATISTICS; - String CONFIG_HBM2DDL_AUTO = Environment.HBM2DDL_AUTO; + String CONFIG_FORMAT_SQL = AvailableSettings.FORMAT_SQL; - String CONFIG_POOL_SIZE = Environment.POOL_SIZE; + String CONFIG_HBM2DDL_AUTO = AvailableSettings.HBM2DDL_AUTO; - String CONFIG_SHOW_SQL = Environment.SHOW_SQL; + String CONFIG_POOL_SIZE = AvailableSettings.POOL_SIZE; - String CONFIG_URL = Environment.URL; + String CONFIG_SHOW_SQL = AvailableSettings.SHOW_SQL; - String CONFIG_PERSISTENCE_CLASSES = "topia.persistence.classes"; + /** + * @deprecated use {@link org.nuiton.topia.persistence.TopiaConfiguration#getJdbcConnectionUrl()} + */ + @Deprecated + String CONFIG_URL = TopiaConfigurationBuilder.CONFIG_URL; /** - * Configuration directive to change topia Ids generation strategy. - * <p/> - * Expected value is an FQN to a class which implements {@link org.nuiton.topia.persistence.TopiaIdFactory} - * - * @since 3.0 + * @deprecated use {@link TopiaConfiguration#getTopiaIdFactoryClassName()} */ + @Deprecated String CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME = - "topia.persistence.topiaIdFactoryClassName"; + TopiaConfigurationBuilder.CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME; /** - * You can set it to false if you don't want Topia to deal with the schema (you keep it - * up to date with your own sql file). - * - * @since 3.0 + * @deprecated use {@link org.nuiton.topia.persistence.TopiaConfiguration#isInitSchema()} */ - String CONFIG_PERSISTENCE_INIT_SCHEMA = - "topia.persistence.initSchema"; + @Deprecated + String CONFIG_PERSISTENCE_INIT_SCHEMA = TopiaConfigurationBuilder.CONFIG_PERSISTENCE_INIT_SCHEMA; + } 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 b168752..f2a95b8 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 @@ -33,9 +33,9 @@ package org.nuiton.topia.persistence; * <li>retrieves a class or random part from a given topiaId.</li> * </ul> * - * You may use {@link org.nuiton.topia.persistence.TopiaConfigurationConstants#CONFIG_PERSISTENCE_TOPIA_ID_FACTORY_CLASS_NAME} - * in configuration to make topia use it. + * You can change the implementation used by ToPIA by changing configuration. * + * @see TopiaConfiguration#getTopiaIdFactoryClassName() * @author bleny <leny@codelutin.com/> * @author tchemit <chemit@codelutin.com/> * @since 3.0 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 95c021f..31dbbb3 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 @@ -45,7 +45,6 @@ import org.hibernate.service.ServiceRegistry; import org.hibernate.service.spi.SessionFactoryServiceRegistry; import org.hibernate.service.spi.Stoppable; import org.nuiton.topia.persistence.TopiaConfiguration; -import org.nuiton.topia.persistence.TopiaConfigurationConstants; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.internal.support.TopiaHibernateEventListener; import org.nuiton.topia.persistence.support.TopiaServiceSupport; @@ -146,7 +145,7 @@ public class HibernateProvider { } public static String getHibernateDialect(TopiaConfiguration topiaConfiguration) { - String hibernateDialect = topiaConfiguration.getHibernateExtraConfiguration().get(TopiaConfigurationConstants.CONFIG_DIALECT); + String hibernateDialect = topiaConfiguration.getHibernateExtraConfiguration().get(Environment.DIALECT); if (hibernateDialect == null) { hibernateDialect = guessHibernateDialect(topiaConfiguration.getJdbcConnectionUrl(), topiaConfiguration.getJdbcDriverClass().getName()); } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java index 7e5bde1..ef86846 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java @@ -24,19 +24,10 @@ package org.nuiton.topia.persistence.util; * #L% */ -import java.io.Closeable; -import java.io.IOException; -import java.net.URL; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Properties; -import java.util.StringTokenizer; -import java.util.regex.Pattern; - +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Session; @@ -51,7 +42,6 @@ import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Table; import org.hibernate.tool.hbm2ddl.DatabaseMetadata; import org.hibernate.tool.hbm2ddl.TableMetadata; -import org.nuiton.topia.persistence.TopiaConfigurationConstants; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaNotFoundException; @@ -60,11 +50,18 @@ import org.nuiton.topia.persistence.support.TopiaHibernateSupport; import org.nuiton.util.RecursiveProperties; import org.nuiton.util.Resource; -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import com.google.common.base.Strings; -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableSet; +import java.io.Closeable; +import java.io.IOException; +import java.net.URL; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Properties; +import java.util.StringTokenizer; +import java.util.regex.Pattern; /** * TODO-fdesbois-20100507 : Need javadoc + translations for existing methods. @@ -483,7 +480,7 @@ public class TopiaUtil { * @return schema name */ public static String getSchemaName(Configuration config) { - return config.getProperty(TopiaConfigurationConstants.CONFIG_DEFAULT_SCHEMA); + return config.getProperty(Environment.DEFAULT_SCHEMA); } public static Map<String, Object> convertPropertiesArrayToMap(Object... propertyNamesAndValues) throws IllegalArgumentException { diff --git a/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java b/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java index d2e928d..3dd89bf 100644 --- a/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java +++ b/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java @@ -36,7 +36,6 @@ import org.nuiton.topia.migration.mappings.TMSVersion; import org.nuiton.topia.migration.mappings.TMSVersionHibernateDao; import org.nuiton.topia.persistence.TopiaApplicationContext; import org.nuiton.topia.persistence.TopiaConfiguration; -import org.nuiton.topia.persistence.TopiaConfigurationConstants; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaMigrationServiceException; import org.nuiton.topia.persistence.internal.AbstractTopiaApplicationContext; @@ -194,8 +193,7 @@ public class TopiaMigrationEngine implements TopiaMigrationService { config.putAll(serviceConfiguration); Preconditions.checkState(StringUtils.isBlank(config.getProperty(MIGRATION_MIGRATE_ON_INIT)), - MIGRATION_MIGRATE_ON_INIT + " directive is deprecated, you must replace it by " - + TopiaConfigurationConstants.CONFIG_PERSISTENCE_INIT_SCHEMA); + MIGRATION_MIGRATE_ON_INIT + " directive is deprecated, you must replace it by setting TopiaConfiguration#isInitSchema to true"); showSql = Boolean.valueOf(config.getProperty(MIGRATION_SHOW_SQL, String.valueOf(Boolean.FALSE))); if (log.isDebugEnabled()) { diff --git a/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationService.java b/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationService.java index 7bdac89..d7fbf5f 100644 --- a/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationService.java +++ b/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationService.java @@ -42,7 +42,7 @@ public interface TopiaMigrationService extends org.nuiton.topia.persistence.Topi /** * Migrate during init or not ? Default value is true. - * @deprecated use {@link org.nuiton.topia.persistence.TopiaConfigurationConstants#CONFIG_PERSISTENCE_INIT_SCHEMA} + * @deprecated use {@link org.nuiton.topia.persistence.TopiaConfiguration#isInitSchema()} */ @Deprecated String MIGRATION_MIGRATE_ON_INIT = "migrateOnInit"; -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.