From: Andreas Kohlbecker Date: Fri, 20 Jan 2012 10:06:11 +0000 (+0000) Subject: fixing transaction problems X-Git-Tag: cdmlib-parent-3.0.10~172^2~55 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/6eaec751eb1cd58355c06118e5302b1ce6dfb2bc fixing transaction problems --- diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializer.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializer.java index 41a0c94065..7e45eefa1a 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializer.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializer.java @@ -5,7 +5,7 @@ * * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. -*/ +*/ package eu.etaxonomy.cdm.database; @@ -36,15 +36,15 @@ public class TestingTermInitializer extends PersistentTermInitializer { private static final Logger logger = Logger.getLogger(TestingTermInitializer.class); private DataSource dataSource; - + private Resource termsDataSet; - + private Resource termsDtd; - + public void setTermsDataSet(Resource termsDataSet) { this.termsDataSet = termsDataSet; } - + public void setTermsDtd(Resource termsDtd) { this.termsDtd = termsDtd; } @@ -53,14 +53,14 @@ public class TestingTermInitializer extends PersistentTermInitializer { public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } - + @PostConstruct @Override public void initialize() { super.initialize(); } - + @Override public void doInitialize(){ TransactionStatus txStatus = transactionManager.getTransaction(txDefinition); @@ -69,7 +69,7 @@ public class TestingTermInitializer extends PersistentTermInitializer { try { connection = getConnection(); IDataSet dataSet = new FlatXmlDataSet(new InputStreamReader(termsDataSet.getInputStream()),new InputStreamReader(termsDtd.getInputStream())); - + DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet); } catch (Exception e) { logger.error(e); @@ -83,14 +83,17 @@ public class TestingTermInitializer extends PersistentTermInitializer { logger.error(sqle); } } - + transactionManager.commit(txStatus); - + + txStatus = transactionManager.getTransaction(txDefinition); for(VocabularyEnum vocabularyType : VocabularyEnum.values()) { Class> clazz = vocabularyType.getClazz(); UUID vocabularyUuid = vocabularyType.getUuid(); secondPass(clazz, vocabularyUuid,new HashMap()); } + transactionManager.commit(txStatus); + //txStatus = transactionManager.getTransaction(txDefinition); } protected IDatabaseConnection getConnection() throws SQLException { diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java index 0c29fc4e19..ed90a0bbfd 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java @@ -1,8 +1,8 @@ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -23,18 +23,18 @@ import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; * */ public class DaoBaseTest extends CdmIntegrationTest { - - - @SpringBeanByType - private TaxonDaoHibernateImpl daoBaseTester; - + + + @SpringBeanByType + private TaxonDaoHibernateImpl daoBaseTester; + /************ TESTS ********************************/ - /** - * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.DaoBase#getSession()}. - */ - @Test - public void testGetSession() { - assertNotNull(daoBaseTester.getSession()); - } + /** + * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.DaoBase#getSession()}. + */ + @Test + public void testGetSession() { + assertNotNull(daoBaseTester.getSession()); + } } diff --git a/cdmlib-persistence/src/test/resources/dbscripts/hibernate.properties b/cdmlib-persistence/src/test/resources/dbscripts/hibernate.properties index 0c64a2c448..6c13be8369 100644 --- a/cdmlib-persistence/src/test/resources/dbscripts/hibernate.properties +++ b/cdmlib-persistence/src/test/resources/dbscripts/hibernate.properties @@ -1,3 +1,8 @@ +# +# NOTE: +# additional hibernate properites are found in +# /cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml +# hibernate.dialect=org.hibernate.dialect.HSQLCorrectedDialect hibernate.connection.driver_class=org.hsqldb.jdbcDriver hibernate.connection.url=jdbc:hsqldb:mem:cdm diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml index 9a35217568..3bcbd2f6b8 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml @@ -1,24 +1,26 @@ + + - - + + - + @@ -26,17 +28,22 @@ - + - - + + - - + org.hibernate.dialect.HSQLCorrectedDialect @@ -47,14 +54,11 @@ ./target/test-classes - - - + + + - - - \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/log4j.properties b/cdmlib-persistence/src/test/resources/log4j.properties index ce32a2976f..78d2a15c4f 100644 --- a/cdmlib-persistence/src/test/resources/log4j.properties +++ b/cdmlib-persistence/src/test/resources/log4j.properties @@ -71,8 +71,12 @@ log4j.logger.com.carrotsearch.junitbenchmarks=INFO ### log cache activity ### #log4j.logger.org.hibernate.cache=debug -### log transaction activity -#log4j.logger.org.hibernate.transaction=debug +### log transaction management & binding +log4j.logger.org.hibernate.transaction=debug +log4j.logger.org.springframework.transaction.support.TransactionSynchronizationManager=trace +#log4j.logger.org.springframework.orm.hibernate3.HibernateTransactionManager=trace +log4j.logger.org.springframework.orm.hibernate3=trace + ### log JDBC resource acquisition #log4j.logger.org.hibernate.jdbc=info diff --git a/cdmlib-persistence/src/test/resources/unitils.properties b/cdmlib-persistence/src/test/resources/unitils.properties index f736fa8fd5..c06c0927b4 100644 --- a/cdmlib-persistence/src/test/resources/unitils.properties +++ b/cdmlib-persistence/src/test/resources/unitils.properties @@ -2,7 +2,12 @@ # NOTE: this is the unitils.properties file for the cdmlib-persitence module # a separate unitils.properties exists for cdmlib-io # - +# +# the list of all properties is found in +# http://unitils.org/unitils-default.properties +# +####################################################################################### +# # List of modules that is loaded. Overloading this list is normally not useful, unless you want to add a custom # module. Disabling a module can be performed by setting unitils.module..enabled to false. # If a module's specific dependencies are not found (e.g. hibernate is not in you classpath), this module is not loaded, @@ -12,20 +17,35 @@ unitils.module.easymock.enabled=false unitils.module.mock.enabled=false + database.driverClassName=org.hsqldb.jdbcDriver database.url=jdbc:hsqldb:mem:cdm database.userName=sa database.password= database.dialect=hsqldb database.schemaNames=PUBLIC + org.dbunit.dataset.datatype.IDataTypeFactory.implClassName.hsqldb=eu.etaxonomy.cdm.test.integration.HsqldbDataTypeFactory dbMaintainer.script.locations=src/test/resources/dbscripts dbMaintainer.dbVersionSource.autoCreateVersionTable=true dbMaintainer.autoCreateExecutedScriptsTable=true +# If set to commit, each test is run in a transaction, which is committed. DatabaseModule.Transactional.value.default=commit -transactionManager.type=spring + +# org.unitils.database.transaction.impl.DefaultUnitilsTransactionManager is used by default: +# +# Implements transactions for unit tests, by delegating to a spring PlatformTransactionManager. +# The concrete implementation of PlatformTransactionManager that is used depends on the test class. +# If a custom PlatformTransactionManager was configured in a spring ApplicationContext, this one is used. +# If not, a suitable subclass of PlatformTransactionManager is created, depending on the configuration +# of a test. E.g. if some ORM persistence unit was configured on the test, a PlatformTransactionManager +# that can offer transactional behavior for such a persistence unit is used. +# If no such configuration is found, a DataSourceTransactionManager is used. +# +# org.unitils.database.transaction.UnitilsTransactionManager.implClassName=org.unitils.database.transaction.impl.SpringTransactionManager + updateDataBaseSchema.enabled=true dataSetStructureGenerator.xsd.dirName=src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/