Author: athimel Date: 2012-07-02 17:48:39 +0200 (Mon, 02 Jul 2012) New Revision: 2595 Url: http://nuiton.org/repositories/revision/topia/2595 Log: Use NG migration callbacks Added: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationTest.java trunk/topia-service-migration/src/test/resources/META-INF/ trunk/topia-service-migration/src/test/resources/META-INF/services/ trunk/topia-service-migration/src/test/resources/META-INF/services/org.nuiton.topia.migration.TopiaMigrationCallbackByClassNG$MigrationCallBackForVersion Removed: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigration.java Modified: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationCallback.java trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationV1_2.java Deleted: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigration.java =================================================================== --- trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigration.java 2012-07-02 15:35:24 UTC (rev 2594) +++ trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigration.java 2012-07-02 15:48:39 UTC (rev 2595) @@ -1,114 +0,0 @@ -package org.nuiton.topia.migration; - -import com.google.common.io.Files; -import com.google.common.io.InputSupplier; -import junit.framework.Assert; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Before; -import org.junit.Test; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaContextFactory; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.migration.mappings.TMSVersionDAO; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.tck.TopiaDatabase; -import org.nuiton.topia.tck.it.Company; -import org.nuiton.topia.tck.it.CompanyDAO; -import org.nuiton.topia.tck.it.TopiaTckItDAOHelper; -import org.nuiton.util.Version; -import org.nuiton.util.VersionUtil; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.Properties; - -/** - * @author Arnaud Thimel <thimel@codelutin.com> - */ -public class TckItMigration { - - private static final Log log = LogFactory.getLog(TckItMigration.class); - - protected TopiaContext rootCtxt; - - protected final String getImplementationClassesAsString() { - StringBuilder buffer = new StringBuilder(); - for (Class<? extends TopiaEntity> aClass : TopiaTckItDAOHelper.getImplementationClasses()) { - buffer.append(',').append(aClass.getName()); - } - return buffer.substring(1); - } - - @Before - public void setUpService() throws Exception { - File testSpecificDirectory = TopiaDatabase.getTestSpecificDirectory(TckItMigration.class, "testMigrationDone"); - - File dataCopyForTest = new File(testSpecificDirectory, "migration-test-db.h2.db"); - dataCopyForTest.getParentFile().mkdirs(); - - Files.copy(new InputSupplier<InputStream>() { - @Override - public InputStream getInput() throws IOException { - return getClass().getResourceAsStream("/migration-source-database.h2.db"); - } - }, dataCopyForTest); - - String absolutePath = dataCopyForTest.getAbsolutePath(); - String path = absolutePath.substring(0, absolutePath.length()-6); - String jdbcUrl = String.format("jdbc:h2:%s", path); - - if (log.isInfoEnabled()) { - log.info("Use " + jdbcUrl); - } - log.debug("url de la copie de la base navision : " + jdbcUrl); - - - Properties dbConfiguration = new Properties(); - InputStream stream = - getClass().getResourceAsStream("/TopiaContext-it.properties"); - - try { - dbConfiguration.load(stream); - } finally { - stream.close(); - } - dbConfiguration.setProperty( - TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES, - getImplementationClassesAsString()); - - dbConfiguration.setProperty( - TopiaContextFactory.CONFIG_URL, jdbcUrl); - - rootCtxt = TopiaContextFactory.getContext(dbConfiguration); - - } - - - - - @Test - public void testMigrationDone() throws TopiaException { - String expectedVersion = "1.2"; - Assert.assertEquals("Test is written for a specific version", expectedVersion, TopiaTckItDAOHelper.getModelVersion()); - - TopiaContext context = rootCtxt.beginTransaction(); - CompanyDAO companyDAO = TopiaTckItDAOHelper.getCompanyDAO(context); - - // There is already 1 company in the DB - Assert.assertEquals(1, companyDAO.count()); - - // Value in database before migration was : 12345 - // Siret value is decreased by 12222 -> 123 - - // Siret is 123 only if migration is done - List<Company> bySiret = companyDAO.findAllBySiret(123); - Assert.assertEquals(1, bySiret.size()); - - Version version = TMSVersionDAO.getVersion(context, "tms_version"); - Assert.assertEquals(VersionUtil.valueOf(expectedVersion), version); - } - -} Modified: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationCallback.java =================================================================== --- trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationCallback.java 2012-07-02 15:35:24 UTC (rev 2594) +++ trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationCallback.java 2012-07-02 15:48:39 UTC (rev 2595) @@ -1,38 +1,21 @@ package org.nuiton.topia.migration; -import com.google.common.collect.Maps; import org.nuiton.topia.tck.it.TopiaTckItDAOHelper; import org.nuiton.util.Version; import org.nuiton.util.VersionUtil; import java.util.List; -import java.util.Map; /** * @author Arnaud Thimel <thimel@codelutin.com> */ -public class TckItMigrationCallback extends TopiaMigrationCallbackByClass { +public class TckItMigrationCallback extends TopiaMigrationCallbackByClassNG { - public static final Version VERSION_1_2 = VersionUtil.valueOf("1.2"); - - protected static MigrationCallBackForVersionResolverByMap resolver; - - static { - Map<Version, Class<? extends MigrationCallBackForVersion>> callbacks = Maps.newHashMap(); - callbacks.put(VERSION_1_2, TckItMigrationV1_2.class); - resolver = new MigrationCallBackForVersionResolverByMap(callbacks); - } - public TckItMigrationCallback() { - super(resolver); + super(new MigrationCallBackForVersionResolverByServiceLoader()); } @Override - public Version[] getAvailableVersions() { - return new Version[]{VERSION_1_2}; - } - - @Override public Version getApplicationVersion() { return VersionUtil.valueOf(TopiaTckItDAOHelper.getModelVersion()); } Copied: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationTest.java (from rev 2594, trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigration.java) =================================================================== --- trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationTest.java (rev 0) +++ trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationTest.java 2012-07-02 15:48:39 UTC (rev 2595) @@ -0,0 +1,112 @@ +package org.nuiton.topia.migration; + +import com.google.common.io.Files; +import com.google.common.io.InputSupplier; +import junit.framework.Assert; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaContextFactory; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.migration.mappings.TMSVersionDAO; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.tck.TopiaDatabase; +import org.nuiton.topia.tck.it.Company; +import org.nuiton.topia.tck.it.CompanyDAO; +import org.nuiton.topia.tck.it.TopiaTckItDAOHelper; +import org.nuiton.util.Version; +import org.nuiton.util.VersionUtil; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.Properties; + +/** + * @author Arnaud Thimel <thimel@codelutin.com> + */ +public class TckItMigrationTest { + + private static final Log log = LogFactory.getLog(TckItMigrationTest.class); + + protected TopiaContext rootCtxt; + + protected final String getImplementationClassesAsString() { + StringBuilder buffer = new StringBuilder(); + for (Class<? extends TopiaEntity> aClass : TopiaTckItDAOHelper.getImplementationClasses()) { + buffer.append(',').append(aClass.getName()); + } + return buffer.substring(1); + } + + @Before + public void setUpService() throws Exception { + File testSpecificDirectory = TopiaDatabase.getTestSpecificDirectory(TckItMigrationTest.class, "testMigrationDone"); + + File dataCopyForTest = new File(testSpecificDirectory, "migration-test-db.h2.db"); + dataCopyForTest.getParentFile().mkdirs(); + + Files.copy(new InputSupplier<InputStream>() { + @Override + public InputStream getInput() throws IOException { + return getClass().getResourceAsStream("/migration-source-database.h2.db"); + } + }, dataCopyForTest); + + String absolutePath = dataCopyForTest.getAbsolutePath(); + String path = absolutePath.substring(0, absolutePath.length() - 6); + String jdbcUrl = String.format("jdbc:h2:%s", path); + + if (log.isInfoEnabled()) { + log.info("Use " + jdbcUrl); + } + log.debug("url de la copie de la base navision : " + jdbcUrl); + + + Properties dbConfiguration = new Properties(); + InputStream stream = + getClass().getResourceAsStream("/TopiaContext-it.properties"); + + try { + dbConfiguration.load(stream); + } finally { + stream.close(); + } + dbConfiguration.setProperty( + TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES, + getImplementationClassesAsString()); + + dbConfiguration.setProperty( + TopiaContextFactory.CONFIG_URL, jdbcUrl); + + rootCtxt = TopiaContextFactory.getContext(dbConfiguration); + + } + + + @Test + public void testMigrationDone() throws TopiaException { + String expectedVersion = "1.2"; + Assert.assertEquals("Test is written for a specific version", expectedVersion, TopiaTckItDAOHelper.getModelVersion()); + + TopiaContext context = rootCtxt.beginTransaction(); + CompanyDAO companyDAO = TopiaTckItDAOHelper.getCompanyDAO(context); + + // There is already 1 company in the DB + Assert.assertEquals(1, companyDAO.count()); + + // Value in database before migration was : 12345 + // Siret value is decreased by 12222 -> 123 + + // Siret is 123 only if migration is done + List<Company> bySiret = companyDAO.findAllBySiret(123); + Assert.assertEquals(1, bySiret.size()); + + Version version = TMSVersionDAO.getVersion(context, "tms_version"); + Assert.assertEquals(VersionUtil.valueOf(expectedVersion), version); + } + +} Modified: trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationV1_2.java =================================================================== --- trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationV1_2.java 2012-07-02 15:35:24 UTC (rev 2594) +++ trunk/topia-service-migration/src/test/java/org/nuiton/topia/migration/TckItMigrationV1_2.java 2012-07-02 15:48:39 UTC (rev 2595) @@ -3,16 +3,18 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.util.Version; +import org.nuiton.util.VersionUtil; import java.util.List; /** * @author Arnaud Thimel <thimel@codelutin.com> */ -public class TckItMigrationV1_2 extends TopiaMigrationCallbackByClass.MigrationCallBackForVersion { +public class TckItMigrationV1_2 extends TopiaMigrationCallbackByClassNG.MigrationCallBackForVersion { - public TckItMigrationV1_2(Version version, TopiaMigrationCallbackByClass callBack) { - super(version, callBack); + @Override + public Version getVersion() { + return VersionUtil.valueOf("1.2"); } @Override Added: trunk/topia-service-migration/src/test/resources/META-INF/services/org.nuiton.topia.migration.TopiaMigrationCallbackByClassNG$MigrationCallBackForVersion =================================================================== --- trunk/topia-service-migration/src/test/resources/META-INF/services/org.nuiton.topia.migration.TopiaMigrationCallbackByClassNG$MigrationCallBackForVersion (rev 0) +++ trunk/topia-service-migration/src/test/resources/META-INF/services/org.nuiton.topia.migration.TopiaMigrationCallbackByClassNG$MigrationCallBackForVersion 2012-07-02 15:48:39 UTC (rev 2595) @@ -0,0 +1 @@ +org.nuiton.topia.migration.TckItMigrationV1_2 \ No newline at end of file