This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 949b547774abdd6419483c9250438b16cdb7493c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Aug 23 21:12:52 2015 +0200 La création d'une base à partir d'un dump et l'ouverture d'une base existante fonctionne --- .../ObserveDataSourceConfigurationTopiaH2.java | 11 ++ .../ObserveDataSourceConfigurationTopiaPG.java | 8 + ...ObserveDataSourceConfigurationTopiaSupport.java | 11 ++ .../services/ObserveServiceFactoryTopia.java | 10 +- .../ird/observe/services/ObserveServiceTopia.java | 7 +- .../ObserveTopiaApplicationContextFactory.java | 173 ++++++--------------- .../services/service/DataSourceServiceTopia.java | 80 ++++++---- .../{service => }/ApplicationContextResource.java | 47 ++---- .../services/{service => }/DataSourceResource.java | 64 ++++---- .../service/DataSourceServiceTopiaTest.java | 108 ++++++++++--- .../service/ReferentialServiceTopiaTest.java | 46 +++--- 11 files changed, 292 insertions(+), 273 deletions(-) diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java index 1b96533..957bf64 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java @@ -12,12 +12,23 @@ import java.util.Objects; */ public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConfigurationTopiaSupport { + private static final long serialVersionUID = 1L; + /** * Le répertoire où se trouve la base (le nom de la base est {@code obstuna}). */ protected File directory; + + /** + * Le nom de la base à ouvrir. + */ protected String dbName; + @Override + public boolean datasourceExists() { + return new File(directory, dbName + ".h2.db").exists(); + } + public String getDbName() { return dbName; } diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java index 5779441..fe5f700 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java @@ -11,6 +11,8 @@ import java.util.Objects; */ public class ObserveDataSourceConfigurationTopiaPG extends ObserveDataSourceConfigurationTopiaSupport { + private static final long serialVersionUID = 1L; + /** * L'url jdbc de la source. */ @@ -21,6 +23,12 @@ public class ObserveDataSourceConfigurationTopiaPG extends ObserveDataSourceConf */ protected boolean useSsl; + @Override + public boolean datasourceExists() { + //FIXME tenter une connection pour voir si la base existe + return true; + } + public String getJdbcUrl() { return jdbcUrl; } diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java index aab2ebe..733cc1a 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java @@ -7,6 +7,8 @@ package fr.ird.observe.services.configuration; */ public abstract class ObserveDataSourceConfigurationTopiaSupport implements ObserveDataSourceConfiguration { + private static final long serialVersionUID = 1L; + /** * Le nom de la data source. */ @@ -40,6 +42,8 @@ public abstract class ObserveDataSourceConfigurationTopiaSupport implements Obse */ protected boolean showMigrationSql; + protected boolean autoMigrate; + public String getUsername() { return username; } @@ -89,4 +93,11 @@ public abstract class ObserveDataSourceConfigurationTopiaSupport implements Obse this.showMigrationSql = showMigrationSql; } + public boolean isAutoMigrate() { + return autoMigrate; + } + + public void setAutoMigrate(boolean autoMigrate) { + this.autoMigrate = autoMigrate; + } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java index 72f138c..3b015e3 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java @@ -20,8 +20,6 @@ import java.lang.reflect.Method; import java.util.Set; /** - * FIXME Supprimer les DataSourceConfig et DataSource et directement utiliser TopiaConfiguration. - * * Created on 16/08/15. * * @author Tony Chemit - chemit@codelutin.com @@ -69,8 +67,6 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp serviceContext.setDataSourceConfiguration(dataSourceConfiguration); serviceContext.setServiceFactory(this); - ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(dataSourceConfiguration, true); - serviceContext.setTopiaApplicationContext(topiaApplicationContext); return serviceContext; } @@ -125,6 +121,12 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp } else { + if (serviceContext.getTopiaApplicationContext() == null) { + + ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(serviceContext.getDataSourceConfiguration()); + serviceContext.setTopiaApplicationContext(topiaApplicationContext); + + } result = invokeMethodWithTransaction(method, args); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 5aeb3a3..e8ee1c5 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -1,5 +1,6 @@ package fr.ird.observe.services; +import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -89,11 +90,11 @@ public class ObserveServiceTopia implements ObserveService { protected <D extends ReferentialDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { ObserveTopiaPersistenceContext transaction = serviceContext.getTopiaPersistenceContext(); TopiaDao<E> dao = transaction.getDao(entityType); - E entity = dao.findByTopiaId(id); - if (entity == null) { + Optional<E> entity = dao.forTopiaIdEquals(id).tryFindUnique(); + if (!entity.isPresent()) { throw new DataNotFoundException(dtoType, id); } - return entity; + return entity.get(); } public <E extends TopiaEntity> E newEntity(Class<E> entityType) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java index e5df980..c5cc904 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java @@ -2,25 +2,16 @@ package fr.ird.observe.services; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; import fr.ird.observe.ObserveTopiaApplicationContext; -import fr.ird.observe.ObserveTopiaIdFactory; -import fr.ird.observe.entities.migration.H2DataSourceMigration; -import fr.ird.observe.entities.migration.ObserveMigrationEngine; -import fr.ird.observe.entities.migration.PGDataSourceMigration; +import fr.ird.observe.ObserveTopiaConfiguration; +import fr.ird.observe.ObserveTopiaConfigurationFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.BeanTopiaConfiguration; import org.nuiton.topia.persistence.TopiaApplicationContext; -import org.nuiton.topia.persistence.TopiaConfiguration; -import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; -import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder; -import org.nuiton.topia.replication.TopiaReplicationServiceImpl; -import java.io.File; import java.util.HashMap; import java.util.Map; @@ -34,60 +25,39 @@ public class ObserveTopiaApplicationContextFactory { /** Logger. */ private static final Log log = LogFactory.getLog(ObserveTopiaApplicationContextFactory.class); - /** l'url d'acces a la base locale */ - public static final String H2_LOCAL_URL = - "jdbc:h2:file:%s;" + - // on peut aussi utiliser file, socket - "FILE_LOCK=file;" + - //1 or 2 is needed to restore avec crash - // 0: logging is disabled (faster), - // 1: logging of the data is enabled, but logging of the index - // changes is disabled (default), 2: logging of both data and index - // changes are enabled - "LOG=0;" + - // on peut aussi utiliser hsqldb, mysql ou postgresql - "MODE=postgresql;" + - //"MODE=hsqldb;" + - // Sets the default lock timeout (in milliseconds) in this - // database that is used for the new sessions. - "DEFAULT_LOCK_TIMEOUT=2000;" + - // -1: the database is never closed until the close delay is set to - // some other rev or SHUTDOWN is called., 0: no delay (default; the - // database is closed if the last connection to it is closed)., n: - // the database is left open for n second after the last connection - // is closed. - "DB_CLOSE_DELAY=0;" + - // 0: no locking (should only be used for testing), - // 1: table level locking (default), - // 2: table level locking with garbage collection (if the - // application does not close all connections). - // LOCK_MODE 3 (READ_COMMITTED). Table level locking, but only when - // writing (no read locks). - "LOCK_MODE=3;" + - // Levels: 0=off, 1=error, 2=info, 3=debug. - "TRACE_LEVEL_FILE=0;" + - // on system.out: 0=off, 1=error, 2=info, 3=debug. - "TRACE_LEVEL_SYSTEM_OUT=0;" + - // maximumn cache to improve performance... - "CACHE_SIZE=65536"; - - protected static final JdbcConfigurationBuilder JDBC_CONFIGURATION_BUILDER = new JdbcConfigurationBuilder(); - protected static final Map<ObserveDataSourceConfigurationTopiaSupport, ObserveTopiaApplicationContext> TOPIA_APPLICATION_CONTEXT_CACHE = new HashMap<>(); - public static ObserveTopiaApplicationContext getTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, boolean initSchema) { + public static ObserveTopiaApplicationContext getOrCreateTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = getTopiaApplicationContextIfPresent(dataSourceConfiguration); ObserveTopiaApplicationContext topiaApplicationContext; if (optionalTopiaApplicationContext.isPresent()) { topiaApplicationContext = optionalTopiaApplicationContext.get(); } else { - topiaApplicationContext = createTopiaApplicationContext(dataSourceConfiguration, initSchema); + // Si on demande de créer ici une base, on ne fait rien sur le schéma + topiaApplicationContext = createTopiaApplicationContext(dataSourceConfiguration, false); } return topiaApplicationContext; } + public static ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport configuration, boolean initSchema) { + + Optional<ObserveTopiaApplicationContext> topiaApplicationContextIfPresent = getTopiaApplicationContextIfPresent(configuration); + Preconditions.checkState(!topiaApplicationContextIfPresent.isPresent(),"There is already a TopiaApplicationContext for configuration: "+configuration); + + ObserveTopiaApplicationContext topiaApplicationContext = null; + + if (configuration instanceof ObserveDataSourceConfigurationTopiaH2) { + topiaApplicationContext = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaH2) configuration, initSchema); + } else if (configuration instanceof ObserveDataSourceConfigurationTopiaPG) { + topiaApplicationContext = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaPG) configuration, initSchema); + } + Preconditions.checkState(topiaApplicationContext != null, "Did not find how to create ObserveTopiaApplicationContext from: " + configuration); + return topiaApplicationContext; + + } + public static Optional<ObserveTopiaApplicationContext> getTopiaApplicationContextIfPresent(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { ObserveTopiaApplicationContext topiaApplicationContext = TOPIA_APPLICATION_CONTEXT_CACHE.get(dataSourceConfiguration); @@ -114,91 +84,38 @@ public class ObserveTopiaApplicationContextFactory { } - protected static ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport configuration, boolean initSchema) { - - ObserveTopiaApplicationContext topiaApplicationContext = null; - - if (configuration instanceof ObserveDataSourceConfigurationTopiaH2) { - topiaApplicationContext = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaH2) configuration); - } else if (configuration instanceof ObserveDataSourceConfigurationTopiaPG) { - topiaApplicationContext = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaPG) configuration, initSchema); - } - Preconditions.checkState(topiaApplicationContext != null, "Did not find how to create ObserveTopiaApplicationContext from: " + configuration); - return topiaApplicationContext; - - } - - protected static TopiaConfiguration createTopiaConfiguration(ObserveDataSourceConfigurationTopiaPG configuration, boolean initSchema) { - - JdbcConfiguration jdbcConfiguration = createJdbcConfiguration(configuration, configuration.getJdbcUrl()); - - BeanTopiaConfiguration topiaConfiguration = new BeanTopiaConfiguration(jdbcConfiguration); - topiaConfiguration.setTopiaIdFactoryClass(ObserveTopiaIdFactory.class); - topiaConfiguration.setInitSchema(initSchema); - topiaConfiguration.setValidateSchema(false); - -// ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME + '.' + ObserveMigrationEngine.MIGRATION_CALLBACK, PGDataSourceMigration.class.getName()); - ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of(ObserveMigrationEngine.MIGRATION_CALLBACK, PGDataSourceMigration.class.getName()); - topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME, ObserveMigrationEngine.class, migrationServiceConfiguration); - topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.REPLICATION_SERVICE_NAME, TopiaReplicationServiceImpl.class); - return topiaConfiguration; - - } - - protected static TopiaConfiguration createTopiaConfiguration(ObserveDataSourceConfigurationTopiaH2 configuration) { - - String dbPath = new File(configuration.getDirectory(), configuration.getDbName()).getPath(); - - String jdbcUrl = String.format(H2_LOCAL_URL, dbPath); - - JdbcConfiguration jdbcConfiguration = JDBC_CONFIGURATION_BUILDER.forH2Database(jdbcUrl, - configuration.getUsername(), - String.valueOf(configuration.getPassword())); - - BeanTopiaConfiguration topiaConfiguration = new BeanTopiaConfiguration(jdbcConfiguration); - topiaConfiguration.setTopiaIdFactoryClass(ObserveTopiaIdFactory.class); - topiaConfiguration.setInitSchema(false); - topiaConfiguration.setValidateSchema(false); - - if (log.isInfoEnabled()) { - log.info("jdbcUrl: " + jdbcUrl); - } - -// ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME + '.' + ObserveMigrationEngine.MIGRATION_CALLBACK, H2DataSourceMigration.class.getName()); - ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of( - ObserveMigrationEngine.MIGRATION_CALLBACK, H2DataSourceMigration.class.getName(), - ObserveMigrationEngine.MIGRATION_SHOW_PROGRESSION, String.valueOf(configuration.isShowMigrationProgression()), - ObserveMigrationEngine.MIGRATION_SHOW_SQL, String.valueOf(configuration.isShowMigrationSql()), - ObserveTopiaApplicationContext.AUTO_MIGRATE, String.valueOf(false) - ); - topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME, ObserveMigrationEngine.class, migrationServiceConfiguration); - topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.REPLICATION_SERVICE_NAME, TopiaReplicationServiceImpl.class); - return topiaConfiguration; - - } - - protected static JdbcConfiguration createJdbcConfiguration(ObserveDataSourceConfigurationTopiaPG configuration, String jdbcUrl) { - return JDBC_CONFIGURATION_BUILDER.forH2Database(jdbcUrl, - configuration.getUsername(), - String.valueOf(configuration.getPassword())); - } - protected static ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaPG configuration, boolean initSchema) { - TopiaConfiguration topiaConfiguration = createTopiaConfiguration(configuration, initSchema); + ObserveTopiaConfiguration topiaConfiguration = ObserveTopiaConfigurationFactory.forPostgresqlDatabase( + configuration.getJdbcUrl(), + configuration.getUsername(), + String.valueOf(configuration.getPassword()), + initSchema, + configuration.isAutoMigrate(), + configuration.isShowMigrationSql(), + configuration.isShowMigrationProgression() + ); if (log.isInfoEnabled()) { log.info("PG Topia configuration: " + topiaConfiguration); } - ObserveTopiaApplicationContext topiaApplicationContext = new MyObserveTopiaApplicationContext(topiaConfiguration, configuration); return topiaApplicationContext; } - protected static ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaH2 configuration) { - - TopiaConfiguration topiaConfiguration = createTopiaConfiguration(configuration); + protected static ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaH2 configuration, boolean initSchema) { + + ObserveTopiaConfiguration topiaConfiguration = ObserveTopiaConfigurationFactory.forH2Database( + configuration.getDirectory(), + configuration.getDbName(), + configuration.getUsername(), + String.valueOf(configuration.getPassword()), + initSchema, + configuration.isAutoMigrate(), + configuration.isShowMigrationSql(), + configuration.isShowMigrationProgression() + ); if (log.isInfoEnabled()) { log.info("H2 Topia configuration: " + topiaConfiguration); @@ -212,9 +129,11 @@ public class ObserveTopiaApplicationContextFactory { private final ObserveDataSourceConfigurationTopiaSupport observeDataSourceConfiguration; - public MyObserveTopiaApplicationContext(TopiaConfiguration topiaConfiguration, ObserveDataSourceConfigurationTopiaSupport observeDataSourceConfiguration) { + public MyObserveTopiaApplicationContext(ObserveTopiaConfiguration topiaConfiguration, ObserveDataSourceConfigurationTopiaSupport observeDataSourceConfiguration) { super(topiaConfiguration); this.observeDataSourceConfiguration = observeDataSourceConfiguration; + setAutoMigrate(observeDataSourceConfiguration.isAutoMigrate()); + TOPIA_APPLICATION_CONTEXT_CACHE.put(observeDataSourceConfiguration, this); } @Override diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index d2b6943..25a94d5 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -7,17 +7,13 @@ import fr.ird.observe.services.ObserveTopiaApplicationContextFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.jdbc.JdbcH2Helper; -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; /** * Created on 21/08/15. @@ -30,44 +26,54 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS private static final Log log = LogFactory.getLog(DataSourceServiceTopia.class); @Override - public boolean exist() { + public boolean exists() { ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); - return false; + return dataSourceConfiguration.datasourceExists(); + } @Override - public void create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IOException { + public void create(DataSourceCreateConfigurationDto dataSourceCreateConfiguration) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + dataSourceCreateConfiguration.validateConfiguration(); boolean initSchema = !dataSourceCreateConfiguration.isImportDatabase(); ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); - ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(dataSourceConfiguration, initSchema); - JdbcH2Helper jdbcH2Helper = new JdbcH2Helper(topiaApplicationContext.getConfiguration()); + ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.createTopiaApplicationContext(dataSourceConfiguration, initSchema); + + if (log.isInfoEnabled()) { + log.info("Create topia application context: " + topiaApplicationContext); + } if (dataSourceCreateConfiguration.isImportDatabase()) { + if (log.isInfoEnabled()) { + log.info("Create new database from a script."); + } byte[] importDatabase = dataSourceCreateConfiguration.getImportDatabase(); - executeSqlScript(jdbcH2Helper, "ImportDatabase_" + dataSourceConfiguration.getLabel(), importDatabase); + executeGzipSqlStatements(topiaApplicationContext, "ImportDatabase_" + dataSourceConfiguration.getLabel(), importDatabase); - } else { - - // Creer une base + topiaApplicationContext.getMigrationService().runSchemaMigration(); - //FIXME Voir si ça convient - topiaApplicationContext.createSchema(); + } else { if (dataSourceCreateConfiguration.isImportReferential()) { + if (log.isInfoEnabled()) { + log.info("Import referentials."); + } + ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration(); DataSourceDumpProducerService dumpProducerService = serviceContext.newService(importDataSourceConfiguration, DataSourceDumpProducerService.class); byte[] referentialDump = dumpProducerService.getReferentialDump(); - executeSqlScript(jdbcH2Helper, "ImportReferential_" + importDataSourceConfiguration.getLabel(), referentialDump); + executeGzipSqlStatements(topiaApplicationContext, "ImportReferential_" + importDataSourceConfiguration.getLabel(), referentialDump); } @@ -76,11 +82,15 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportDataDataSourceConfiguration(); String[] importDataIds = dataSourceCreateConfiguration.getImportDataIds(); + if (log.isInfoEnabled()) { + log.info("Import data."); + } + DataSourceDumpProducerService dumpProducerService = serviceContext.newService(importDataSourceConfiguration, DataSourceDumpProducerService.class); byte[] dataDump = dumpProducerService.getDataDump(importDataIds); - executeSqlScript(jdbcH2Helper, "ImportData_" + importDataSourceConfiguration.getLabel(), dataDump); + executeGzipSqlStatements(topiaApplicationContext, "ImportData_" + importDataSourceConfiguration.getLabel(), dataDump); } @@ -89,10 +99,19 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } @Override - public void open() { + public void open() throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); - ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(dataSourceConfiguration, true); + + if (!exists()) { + throw new DatabaseNotFoundException(dataSourceConfiguration); + } + + if (!canConnect()) { + throw new DatabaseConnexionNotAuthorizedException(dataSourceConfiguration); + } + + ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(dataSourceConfiguration); } @@ -111,30 +130,23 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS @Override public boolean canConnect() { + //TODO ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); - return false; + return dataSourceConfiguration.datasourceExists(); } @Override public void destroy() { + //TODO + } - protected void executeSqlScript(JdbcH2Helper jdbcH2Helper, String temporaryFilePrefix, byte... content) throws IOException { + protected void executeGzipSqlStatements(ObserveTopiaApplicationContext topiaApplicationContext, String temporaryFilePrefix, byte... content) throws IOException { File temporaryDirectory = serviceContext.createTemporaryDirectory(temporaryFilePrefix); - - Path sqlScript = new File(temporaryDirectory, "script.sql").toPath(); - - if (log.isInfoEnabled()) { - log.info("script: " + sqlScript); - } - try (InputStream inputSream = new BufferedInputStream(new ByteArrayInputStream(content))) { - Files.copy(inputSream, sqlScript); - } - - jdbcH2Helper.restore(sqlScript.toFile()); + topiaApplicationContext.executeGzipSqlStatements(temporaryDirectory, content); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java similarity index 62% rename from observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java index e994be4..5f5bac3 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java @@ -1,7 +1,6 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services; -import fr.ird.observe.services.ObserveServiceApplicationContext; -import fr.ird.observe.services.ObserveServiceFactoryTopiaTaiste; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; @@ -11,6 +10,8 @@ import org.junit.runner.Description; import org.junit.runners.model.Statement; import org.nuiton.util.version.Version; +import java.nio.file.Path; + /** * Created on 18/08/15. * @@ -21,28 +22,29 @@ public class ApplicationContextResource implements TestRule { /** Logger. */ private static final Log log = LogFactory.getLog(ApplicationContextResource.class); - protected final Version databaseVersion; - protected final ObserveServiceApplicationContext serviceApplicationContext; - protected final ObserveServiceFactoryTopiaTaiste serviceFactory; + protected final ObserveServiceFactoryTopia serviceFactory; - public ApplicationContextResource(Version databaseVersion) { - this.databaseVersion = databaseVersion; + public ApplicationContextResource() { this.serviceApplicationContext = new ObserveServiceApplicationContext(); this.serviceFactory = new ObserveServiceFactoryTopia(); } - public String getScriptPath(String classifier) { + public String getScriptPath(String classifier, Version databaseVersion) { return TestHelper.getBackupScript(databaseVersion, classifier); } - public ObserveServiceApplicationContext getServiceApplicationContext() { - return serviceApplicationContext; + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + return serviceFactory.newService(serviceApplicationContext, dataSourceConfiguration, serviceType); } - public ObserveServiceFactoryTopiaTaiste getServiceFactory() { - return serviceFactory; + public void closeServiceFactory() { + serviceFactory.close(); + } + + public void setTemporaryDirectoryRoot(Path temporaryDirectoryRoot) { + serviceApplicationContext.setTemporaryDirectoryRoot(temporaryDirectoryRoot); } @Override @@ -67,12 +69,9 @@ public class ApplicationContextResource implements TestRule { if (log.isDebugEnabled()) { log.debug("Starts " + testClass.getName()); } - //TODO A revoir + TestHelper.initTest(testClass); -// TestHelper.createApplicationContext(); -// TestHelper.setConfig(IObserveConfig.DB_VERSION, databaseVersion.toString()); -// ObserveServiceTopia.init(); serviceApplicationContext.setReferentialLocale(ReferentialLocale.FR); @@ -88,18 +87,4 @@ public class ApplicationContextResource implements TestRule { } } - - protected final String BACKUP_SCRIPT_PATTERN = "/db/%1$s/%2$s.sql.gz"; - - protected String getBackupScript(Version version, String loadScript) { - String result = String.format( - BACKUP_SCRIPT_PATTERN, - version.toString(), - loadScript - ); - if (log.isInfoEnabled()) { - log.info(result); - } - return result; - } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java similarity index 63% rename from observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java index d894a98..874c0c8 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java @@ -1,16 +1,18 @@ -package fr.ird.observe.services.service; +package fr.ird.observe.services; import com.google.common.base.Preconditions; import com.google.common.io.ByteStreams; import com.google.common.io.Resources; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; -import fr.ird.observe.services.ObserveTopiaApplicationContextFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.junit.Assert; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -21,8 +23,6 @@ import java.io.InputStream; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; -import java.util.LinkedHashMap; -import java.util.Map; /** * Created on 18/08/15. @@ -36,46 +36,51 @@ public class DataSourceResource implements TestRule { protected final ApplicationContextResource applicationContextResource; - protected final String dbPath; - - protected Map<String, ObserveTopiaPersistenceContext> transactions = new LinkedHashMap<>(); - protected ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration; private File testDirectory; - public DataSourceResource(ApplicationContextResource applicationContextResource, String dbPath) { + public DataSourceResource(ApplicationContextResource applicationContextResource) { this.applicationContextResource = applicationContextResource; - this.dbPath = dbPath; } public ObserveDataSourceConfigurationTopiaH2 getDataSourceConfiguration() { return dataSourceConfiguration; } - public byte[] getDatabaseToImportContent() throws IOException { + public byte[] getDatabaseToImportContent(String scriptPath) throws IOException { - URL url = getClass().getResource(dbPath); - Preconditions.checkNotNull(dbPath, "Could not find database at: " + dbPath); + URL url = getClass().getResource(scriptPath); + Preconditions.checkNotNull(scriptPath, "Could not find database at: " + scriptPath); try (InputStream inputStream = Resources.asByteSource(url).openStream()) { byte[] dumpContent = ByteStreams.toByteArray(inputStream); return dumpContent; } } - public File getTestDirectory() { - return testDirectory; + public void createDataSourceFromScript(String scriptPath) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + byte[] databaseToImportContent = getDatabaseToImportContent(scriptPath); + + DataSourceService dataSourceService = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); + DataSourceCreateConfigurationDto createConfiguration = new DataSourceCreateConfigurationDto(); + createConfiguration.setImportDatabase(databaseToImportContent); + dataSourceService.create(createConfiguration); + } - public ObserveTopiaPersistenceContext newTransaction(String name) { + public ObserveTopiaPersistenceContext newPersistenceContext() { - ObserveTopiaApplicationContext dataSource = ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(dataSourceConfiguration, true); - ObserveTopiaPersistenceContext persistenceContext = dataSource.newPersistenceContext(); - transactions.put(name, persistenceContext); + ObserveTopiaPersistenceContext persistenceContext = getTopiaApplicationContext().newPersistenceContext(); return persistenceContext; } + public ObserveTopiaApplicationContext getTopiaApplicationContext() { + return ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(dataSourceConfiguration); + } + + @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @@ -102,29 +107,27 @@ public class DataSourceResource implements TestRule { testDirectory = TestHelper.newFile(methodName); Path temporaryDirectoryRoot = new File(testDirectory, "tmp").toPath(); Files.createDirectories(temporaryDirectoryRoot); - applicationContextResource.getServiceApplicationContext().setTemporaryDirectoryRoot(temporaryDirectoryRoot); - - Assert.assertNotNull("could not find resource : " + dbPath, getClass().getResource(dbPath)); + applicationContextResource.setTemporaryDirectoryRoot(temporaryDirectoryRoot); dataSourceConfiguration = createDataSourceConfigurationH2(testClass, methodName); - ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(dataSourceConfiguration, true); } - private ObserveDataSourceConfigurationTopiaH2 createDataSourceConfigurationH2(Class<?> testClass, String methodName) { + protected ObserveDataSourceConfigurationTopiaH2 createDataSourceConfigurationH2(Class<?> testClass, String methodName) { ObserveDataSourceConfigurationTopiaH2 configurationTopiaH2 = new ObserveDataSourceConfigurationTopiaH2(); File localDbFile = new File(testDirectory, "localdb"); if (log.isInfoEnabled()) { - log.info("db directory: "+localDbFile); + log.info("db directory: " + localDbFile); } configurationTopiaH2.setLabel(testClass.getSimpleName() + "#" + methodName); configurationTopiaH2.setUsername(TestHelper.TEST_H2_LOGIN); configurationTopiaH2.setPassword(TestHelper.TEST_H2_PASSWORD); configurationTopiaH2.setDirectory(localDbFile); - configurationTopiaH2.setDbName("localdb"); + configurationTopiaH2.setDbName("obstuna"); + configurationTopiaH2.setAutoMigrate(true); return configurationTopiaH2; } @@ -137,11 +140,8 @@ public class DataSourceResource implements TestRule { log.debug("Ends " + testClass.getName() + "::" + methodName); } - applicationContextResource.getServiceFactory().close(); + applicationContextResource.closeServiceFactory(); + applicationContextResource.setTemporaryDirectoryRoot(null); } - - public ObserveTopiaApplicationContext getTopiaApplicationContext() { - return ObserveTopiaApplicationContextFactory.getTopiaApplicationContext(dataSourceConfiguration, true); - } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java index 7216bea..82b61b5 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java @@ -1,14 +1,18 @@ package fr.ird.observe.services.service; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.migration.H2DataSourceMigration; -import fr.ird.observe.services.ObserveServiceApplicationContext; -import fr.ird.observe.services.ObserveServiceFactoryTopia; +import fr.ird.observe.services.ApplicationContextResource; +import fr.ird.observe.services.DataSourceResource; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import fr.ird.observe.test.TestHelper; import org.junit.Before; import org.junit.ClassRule; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -21,52 +25,120 @@ import java.io.IOException; */ public class DataSourceServiceTopiaTest { - /** Logger. */ - private static final Log log = LogFactory.getLog(DataSourceServiceTopiaTest.class); - @ClassRule - public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(H2DataSourceMigration.V_4_0); + public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); @Rule - public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource, applicationContextResource.getScriptPath("referentiel")); + public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource); protected DataSourceService service; @Before public void setUp() throws Exception { - ObserveServiceFactoryTopia serviceFactory = applicationContextResource.getServiceFactory(); - - ObserveServiceApplicationContext serviceApplicationContext = applicationContextResource.getServiceApplicationContext(); - ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); - service = serviceFactory.newService(serviceApplicationContext, dataSourceConfiguration, DataSourceService.class); + service = applicationContextResource.newService(dataSourceConfiguration, DataSourceService.class); } + @Test(expected = DatabaseNotFoundException.class) + public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + service.open(); + } + @Test - public void testOpen() throws IOException { + public void testOpen() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto() { + + private static final long serialVersionUID = 1L; + + @Override + public void validateConfiguration() { + // no validation + } + }; + service.create(dataSourceCreateConfiguration); + service.open(); + assertSchemaCreated(); + + } + + @Test + public void testCreateEmptyDataSource() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto() { + + private static final long serialVersionUID = 1L; + + @Override + public void validateConfiguration() { + // no validation + } + }; + + service.create(dataSourceCreateConfiguration); + assertSchemaCreated(); + } @Test - public void testCreateEmptyDataSource() throws IOException { + public void testCreateDataSourceFromImportDatabase() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + String scriptPath = applicationContextResource.getScriptPath("referentiel", H2DataSourceMigration.V_4_0); + + byte[] dumpContent = dataSourceResource.getDatabaseToImportContent(scriptPath); + + DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); + dataSourceCreateConfiguration.setImportDatabase(dumpContent); + + service.create(dataSourceCreateConfiguration); + assertSchemaCreated(); + + } + + //TODO + @Ignore + @Test + public void testCreateDataSourceFromImportReferential() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + String scriptPath = applicationContextResource.getScriptPath("referentiel", H2DataSourceMigration.V_4_0); + byte[] dumpContent = dataSourceResource.getDatabaseToImportContent(scriptPath); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); + dataSourceCreateConfiguration.setImportDatabase(dumpContent); + service.create(dataSourceCreateConfiguration); + assertSchemaCreated(); } + //TODO + @Ignore @Test - public void testCreateDataSourceFromImportDatabase() throws IOException { + public void testCreateDataSourceFromImportReferentialAndData() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - byte[] dumpContent = dataSourceResource.getDatabaseToImportContent(); + String scriptPath = applicationContextResource.getScriptPath("referentiel", H2DataSourceMigration.V_4_0); + byte[] dumpContent = dataSourceResource.getDatabaseToImportContent(scriptPath); DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); dataSourceCreateConfiguration.setImportDatabase(dumpContent); service.create(dataSourceCreateConfiguration); + assertSchemaCreated(); + } + protected void assertSchemaCreated() { + + ObserveTopiaApplicationContext topiaApplicationContext = dataSourceResource.getTopiaApplicationContext(); + try (ObserveTopiaPersistenceContext topiaPersistenceContext = topiaApplicationContext.newPersistenceContext()) { + TestHelper.assertSchemaCreated(topiaApplicationContext, topiaPersistenceContext, false); + } + + } + + } \ No newline at end of file diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java index 458e68f..20128ae 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java @@ -4,8 +4,8 @@ import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.migration.H2DataSourceMigration; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.services.ObserveServiceApplicationContext; -import fr.ird.observe.services.ObserveServiceFactoryTopia; +import fr.ird.observe.services.ApplicationContextResource; +import fr.ird.observe.services.DataSourceResource; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; @@ -18,7 +18,6 @@ import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.nuiton.topia.persistence.TopiaDao; @@ -31,37 +30,36 @@ import java.util.Map; * * @author Tony Chemit - chemit@codelutin.com */ -@Ignore public class ReferentialServiceTopiaTest { /** Logger. */ private static final Log log = LogFactory.getLog(ReferentialServiceTopiaTest.class); @ClassRule - public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(H2DataSourceMigration.V_4_0); + public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); @Rule - public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource, applicationContextResource.getScriptPath("referentiel")); + public final DataSourceResource dataSourceResource = new DataSourceResource(applicationContextResource); protected ReferentialService service; @Before public void setUp() throws Exception { - ObserveServiceFactoryTopia serviceFactory = applicationContextResource.getServiceFactory(); - - ObserveServiceApplicationContext serviceApplicationContext = applicationContextResource.getServiceApplicationContext(); + // Create database from script + String scriptPath = applicationContextResource.getScriptPath("referentiel", H2DataSourceMigration.V_4_0_1); + dataSourceResource.createDataSourceFromScript(scriptPath); ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration = dataSourceResource.getDataSourceConfiguration(); - service = serviceFactory.newService(serviceApplicationContext, dataSourceConfiguration, ReferentialService.class); + service = applicationContextResource.newService(dataSourceConfiguration, ReferentialService.class); } @Test public void testGetReferentialLabelSet() throws Exception { - ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testGetReferentialLabelSet"); + ObserveTopiaPersistenceContext persistenceContext = dataSourceResource.newPersistenceContext(); for (Map.Entry<Class<?>, Class<?>> entry : ReferentialServiceTopia.getDtoTypes()) { Class dtoType = entry.getKey(); @@ -70,7 +68,7 @@ public class ReferentialServiceTopiaTest { } Class entityType = entry.getValue(); - TopiaDao dao = tx.getDao(entityType); + TopiaDao dao = persistenceContext.getDao(entityType); long expectedCount = dao.count(); if (log.isInfoEnabled()) { @@ -88,7 +86,7 @@ public class ReferentialServiceTopiaTest { @Test public void testLoadToRead() throws Exception { - ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testLoadToRead"); + ObserveTopiaPersistenceContext persistenceContext = dataSourceResource.newPersistenceContext(); for (Map.Entry<Class<?>, Class<?>> entry : ReferentialServiceTopia.getDtoTypes()) { @@ -97,7 +95,7 @@ public class ReferentialServiceTopiaTest { continue; } Class entityType = entry.getValue(); - loadToRead(tx, dtoType, entityType); + loadToRead(persistenceContext, dtoType, entityType); } @@ -106,7 +104,7 @@ public class ReferentialServiceTopiaTest { @Test public void testLoadToEdit() throws Exception { - ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testLoadToEdit"); + ObserveTopiaPersistenceContext persistenceContext = dataSourceResource.newPersistenceContext(); for (Map.Entry<Class<?>, Class<?>> entry : ReferentialServiceTopia.getDtoTypes()) { @@ -115,7 +113,7 @@ public class ReferentialServiceTopiaTest { if (!ReferentialDto.class.isAssignableFrom(dtoType)) { continue; } - loadToEdit(tx, dtoType, entityType); + loadToEdit(persistenceContext, dtoType, entityType); } @@ -124,15 +122,15 @@ public class ReferentialServiceTopiaTest { @Test public void testDelete() throws Exception { - ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testDelete"); + ObserveTopiaPersistenceContext tx = dataSourceResource.newPersistenceContext(); delete(tx, ProgramDto.class, Program.class); delete(tx, LengthWeightParameterDto.class, LengthWeightParameter.class); } - protected void loadToRead(ObserveTopiaPersistenceContext tx, Class dtoType, Class entityType) { - TopiaDao<?> dao = tx.getDao(entityType); + protected void loadToRead(ObserveTopiaPersistenceContext persistenceContext, Class dtoType, Class entityType) { + TopiaDao<?> dao = persistenceContext.getDao(entityType); long expectedCount = dao.count(); if (log.isInfoEnabled()) { @@ -160,8 +158,8 @@ public class ReferentialServiceTopiaTest { } } - protected void loadToEdit(ObserveTopiaPersistenceContext tx, Class dtoType, Class entityType) { - TopiaDao<?> dao = tx.getDao(entityType); + protected void loadToEdit(ObserveTopiaPersistenceContext persistenceContext, Class dtoType, Class entityType) { + TopiaDao<?> dao = persistenceContext.getDao(entityType); long expectedCount = dao.count(); if (log.isInfoEnabled()) { @@ -185,7 +183,7 @@ public class ReferentialServiceTopiaTest { for (ReferenceSetDto labelSetDto : formDto.getLabels()) { Class refEntityType = ReferentialServiceTopia.getEntityType(labelSetDto.getType()); - long refExpected = tx.getDao(refEntityType).count(); + long refExpected = persistenceContext.getDao(refEntityType).count(); Assert.assertEquals(refExpected, labelSetDto.sizeReference()); } @@ -193,9 +191,9 @@ public class ReferentialServiceTopiaTest { } } - protected void delete(ObserveTopiaPersistenceContext tx, Class dtoType, Class entityType) { + protected void delete(ObserveTopiaPersistenceContext persistenceContext, Class dtoType, Class entityType) { - TopiaDao<?> dao = tx.getDao(entityType); + TopiaDao<?> dao = persistenceContext.getDao(entityType); long expectedCount = dao.count(); TopiaEntity entity = dao.iterator().next(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.