branch feature/666_flyway_6 updated (42d06755 -> 3e1bde14)
This is an automated email from the git hooks/post-receive script. New change to branch feature/666_flyway_6 in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git from 42d06755 Delete pointless comment [skip ci] new 3e1bde14 Use flyway 6 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 3e1bde148408688a7ee2acbaf2f5f46558f78fcf Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Aug 29 16:33:06 2019 +0200 Use flyway 6 Summary of changes: pom.xml | 2 +- .../topia/flyway/TopiaFlywayJdbcMigration.java | 36 ------------- .../flyway/TopiaFlywayMigrationInfoProvider.java | 36 ------------- .../topia/flyway/TopiaFlywayServiceImpl.java | 63 ++++++++++++++-------- 4 files changed, 42 insertions(+), 95 deletions(-) delete mode 100644 topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayJdbcMigration.java delete mode 100644 topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayMigrationInfoProvider.java -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/666_flyway_6 in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git commit 3e1bde148408688a7ee2acbaf2f5f46558f78fcf Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Aug 29 16:33:06 2019 +0200 Use flyway 6 --- pom.xml | 2 +- .../topia/flyway/TopiaFlywayJdbcMigration.java | 36 ------------- .../flyway/TopiaFlywayMigrationInfoProvider.java | 36 ------------- .../topia/flyway/TopiaFlywayServiceImpl.java | 63 ++++++++++++++-------- 4 files changed, 42 insertions(+), 95 deletions(-) diff --git a/pom.xml b/pom.xml index d3c95774..2c67088f 100644 --- a/pom.xml +++ b/pom.xml @@ -220,7 +220,7 @@ <!-- libs version --> <commonsLoggingVersion>1.2</commonsLoggingVersion> <eugeneVersion>3.0-alpha-10</eugeneVersion> - <flywayVersion>5.0.0</flywayVersion> + <flywayVersion>6.0.1</flywayVersion> <guavaVersion>27.0.1-jre</guavaVersion> <h2Version>1.4.196</h2Version> diff --git a/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayJdbcMigration.java b/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayJdbcMigration.java deleted file mode 100644 index 9ebc51bc..00000000 --- a/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayJdbcMigration.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.nuiton.topia.flyway; - -/* - * #%L - * ToPIA :: Flyway integration service - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.flywaydb.core.api.migration.jdbc.JdbcMigration; - -/** - * Just an interface renaming so you don't need to add flyway as dependency and risk a version conflict. - * - * @since 3.0 - */ -public interface TopiaFlywayJdbcMigration extends JdbcMigration { - -} diff --git a/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayMigrationInfoProvider.java b/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayMigrationInfoProvider.java deleted file mode 100644 index 7caa333f..00000000 --- a/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayMigrationInfoProvider.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.nuiton.topia.flyway; - -/* - * #%L - * ToPIA :: Flyway integration service - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.flywaydb.core.api.migration.MigrationInfoProvider; - -/** - * Just an interface renaming so you don't need to add flyway as dependency and risk a version conflict. - * - * @since 3.0 - */ -public interface TopiaFlywayMigrationInfoProvider extends MigrationInfoProvider { - -} diff --git a/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayServiceImpl.java b/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayServiceImpl.java index dab436eb..3580cae1 100644 --- a/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayServiceImpl.java +++ b/topia-service-flyway/src/main/java/org/nuiton/topia/flyway/TopiaFlywayServiceImpl.java @@ -31,12 +31,15 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.Location; import org.flywaydb.core.api.MigrationInfo; import org.flywaydb.core.api.MigrationVersion; -import org.flywaydb.core.internal.util.Location; +import org.flywaydb.core.api.configuration.ClassicConfiguration; +import org.flywaydb.core.api.configuration.Configuration; import org.nuiton.topia.persistence.TopiaApplicationContext; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaMigrationServiceException; @@ -71,7 +74,7 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { */ protected boolean useModelVersion = true; - protected Flyway flyway; + protected Configuration flywayConfiguration; protected String modelVersion; @@ -104,18 +107,20 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { useModelVersion = Boolean.valueOf(useModelVersionString); } + flywayConfiguration = newFlywayConfiguration(topiaApplicationContext); + if (log.isInfoEnabled()) { - log.info("init flyway service"); + log.info("flyway configuration " + toString(flywayConfiguration)); } - flyway = new Flyway(); - - setDataSource(flyway, topiaApplicationContext); - - setLocations(flyway, topiaApplicationContext); - - doExtraConfiguration(flyway, topiaApplicationContext); + } + protected ClassicConfiguration newFlywayConfiguration(TopiaApplicationContext topiaApplicationContext) { + ClassicConfiguration newFlywayConfiguration = new ClassicConfiguration(); + setDataSource(newFlywayConfiguration, topiaApplicationContext); + setLocations(newFlywayConfiguration, topiaApplicationContext); + doExtraConfiguration(newFlywayConfiguration, topiaApplicationContext); + return newFlywayConfiguration; } /** @@ -125,7 +130,7 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { * {@link org.nuiton.topia.persistence.TopiaApplicationContext#getConfiguration()}. We use * the same credentials to migrate the database as the one used when we use it. */ - protected void setDataSource(Flyway flyway, TopiaApplicationContext topiaApplicationContext) { + protected void setDataSource(ClassicConfiguration flywayConfiguration, TopiaApplicationContext topiaApplicationContext) { JdbcConfiguration configuration = topiaApplicationContext.getConfiguration(); @@ -133,7 +138,7 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { String user = configuration.getJdbcConnectionUser(); String password = configuration.getJdbcConnectionPassword(); - flyway.setDataSource(url, user, password); + flywayConfiguration.setDataSource(url, user, password); } @@ -143,7 +148,7 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { * This implementation search for *.sql migration files in "db/migration" resources directory * and for JDBC migrations in package.to.ApplicationContext<strong>.migration</strong> package. */ - protected void setLocations(Flyway flyway, TopiaApplicationContext topiaApplicationContext) { + protected void setLocations(ClassicConfiguration flywayConfiguration, TopiaApplicationContext topiaApplicationContext) { String classpathMigrationPackage = topiaApplicationContext.getClass().getPackage().getName() + ".migration"; ImmutableSet<String> defaultLocations = ImmutableSet.of("db/migration", classpathMigrationPackage); @@ -173,19 +178,21 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { } String[] locationsArray = locations.toArray(new String[locations.size()]); - flyway.setLocations(locationsArray); + flywayConfiguration.setLocationsAsStrings(locationsArray); } /** * Opened hook to override in a sub-class. */ - protected void doExtraConfiguration(Flyway flyway, TopiaApplicationContext topiaApplicationContext) { + protected void doExtraConfiguration(ClassicConfiguration flywayConfiguration, TopiaApplicationContext topiaApplicationContext) { } @Override public String getSchemaVersion() throws TopiaMigrationServiceException { + Flyway flyway = new Flyway(flywayConfiguration); + MigrationInfo currentOrNull = flyway.info().current(); if (currentOrNull == null) { @@ -216,6 +223,7 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { } else { // Do not use model version. That means we have to "guess" which is minimal the model version from the available migration scripts + Flyway flyway = new Flyway(flywayConfiguration); MigrationInfo[] allMigrations = flyway.info().all(); if (ArrayUtils.isEmpty(allMigrations)) { @@ -250,19 +258,28 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { } + ClassicConfiguration flywayConfigurationForInitOnCreateSchema = new ClassicConfiguration(flywayConfiguration); + flywayConfigurationForInitOnCreateSchema.setBaselineVersion(MigrationVersion.fromVersion(baselineVersion)); + flywayConfigurationForInitOnCreateSchema.setBaselineDescription("schema creation called on application context by topia flyway service"); + if (log.isInfoEnabled()) { - log.info("baseline flyway to version " + baselineVersion); + log.info("baseline flyway to version " + baselineVersion + " with flyway configuration " + toString(flywayConfigurationForInitOnCreateSchema)); } - flyway.setBaselineVersion(MigrationVersion.fromVersion(baselineVersion)); - flyway.setBaselineDescription("schema creation called on application context by topia flyway service"); + Flyway flyway = new Flyway(flywayConfigurationForInitOnCreateSchema); flyway.baseline(); } + private String toString(Configuration flywayConfiguration) { + return ReflectionToStringBuilder.reflectionToString(flywayConfiguration); + } + @Override public void runSchemaMigration() { + ClassicConfiguration flywayConfigurationForMigration = new ClassicConfiguration(flywayConfiguration); + if (flywayBaselineVersion == null) { if (log.isDebugEnabled()) { log.debug("schema exists, no flywayInitVersion found, let suppose flyway is already initialized"); @@ -279,8 +296,8 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { if (log.isDebugEnabled()) { log.debug("schema exists, will ask flyway to init if necessary to version " + flywayBaselineVersion); } - flyway.setBaselineOnMigrate(true); - flyway.setBaselineVersion(MigrationVersion.fromVersion(flywayBaselineVersion)); + flywayConfigurationForMigration.setBaselineOnMigrate(true); + flywayConfigurationForMigration.setBaselineVersion(MigrationVersion.fromVersion(flywayBaselineVersion)); } if (useModelVersion) { @@ -290,7 +307,7 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { log.info("schema exists, will run flyway migration up to target version " + targetVersion); } - flyway.setTarget(MigrationVersion.fromVersion(targetVersion)); + flywayConfigurationForMigration.setTarget(MigrationVersion.fromVersion(targetVersion)); } else { if (log.isInfoEnabled()) { @@ -300,9 +317,11 @@ public class TopiaFlywayServiceImpl implements TopiaFlywayService { } if (log.isInfoEnabled()) { - log.info("run flyway migration"); + log.info("run flyway migration with configuration " + toString(flywayConfigurationForMigration)); } + Flyway flyway = new Flyway(flywayConfigurationForMigration); + flyway.migrate(); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm