From e57ae9f271430734b33bb7007bacf8df67c6469d Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Fri, 22 Nov 2019 23:20:49 +0100 Subject: [PATCH 1/3] BAEL-3498: Conditionally Disable Flyway --- .../EmptyMigrationStrategyConfig.java | 24 +++++++++++++ .../src/main/resources/application.properties | 1 + .../ManualFlywayMigrationTest.java | 36 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java create mode 100644 persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java diff --git a/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java b/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java new file mode 100644 index 0000000000..a1833216f1 --- /dev/null +++ b/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java @@ -0,0 +1,24 @@ +package com.baeldung.flywaycallbacks; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.flywaydb.core.Flyway; +import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class EmptyMigrationStrategyConfig { + + private Log log = LogFactory.getLog("EmptyMigrationStrategy"); + + @Bean + public FlywayMigrationStrategy flywayMigrationStrategy() { + return new FlywayMigrationStrategy() { + @Override + public void migrate(Flyway flyway) { + log.info("Skipping Flyway migration!"); + } + }; + } +} diff --git a/persistence-modules/flyway/src/main/resources/application.properties b/persistence-modules/flyway/src/main/resources/application.properties index e69de29bb2..4d339eca5c 100644 --- a/persistence-modules/flyway/src/main/resources/application.properties +++ b/persistence-modules/flyway/src/main/resources/application.properties @@ -0,0 +1 @@ +#flyway.enabled=false \ No newline at end of file diff --git a/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java b/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java new file mode 100644 index 0000000000..53717a019b --- /dev/null +++ b/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java @@ -0,0 +1,36 @@ +package com.baeldung.flywaycallbacks; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationInfo; +import org.flywaydb.core.api.MigrationState; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ManualFlywayMigrationTest { + + @Autowired + private Flyway flyway; + + @Test + public void skipAutomaticAndTriggerManualFlywayMigration() { + + assertAllMigrationsAre(MigrationState.PENDING); + + flyway.migrate(); + + assertAllMigrationsAre(MigrationState.SUCCESS); + } + + private void assertAllMigrationsAre(MigrationState expectedState) { + for (MigrationInfo migrationInfo : flyway.info().all()) { + assertThat(migrationInfo.getState()).isEqualTo(expectedState); + } + } +} From 52bdfd60a515167d18b279483f057db43ad496f2 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Fri, 22 Nov 2019 23:30:35 +0100 Subject: [PATCH 2/3] BAEL-3498: Fix test's name --- ...ationTest.java => ManualFlywayMigrationIntegrationTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/{ManualFlywayMigrationTest.java => ManualFlywayMigrationIntegrationTest.java} (95%) diff --git a/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java b/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationIntegrationTest.java similarity index 95% rename from persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java rename to persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationIntegrationTest.java index 53717a019b..12edec39e7 100644 --- a/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationTest.java +++ b/persistence-modules/flyway/src/test/java/com/baeldung/flywaycallbacks/ManualFlywayMigrationIntegrationTest.java @@ -13,7 +13,7 @@ import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringRunner.class) @SpringBootTest -public class ManualFlywayMigrationTest { +public class ManualFlywayMigrationIntegrationTest { @Autowired private Flyway flyway; From 5214841266906849e1b9625cb9797f9bd319b138 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Sat, 23 Nov 2019 22:58:54 +0100 Subject: [PATCH 3/3] BAEL-3498: Change anonymous inner class to lambda --- .../flywaycallbacks/EmptyMigrationStrategyConfig.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java b/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java index a1833216f1..8f733364b7 100644 --- a/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java +++ b/persistence-modules/flyway/src/main/java/com/baeldung/flywaycallbacks/EmptyMigrationStrategyConfig.java @@ -2,7 +2,6 @@ package com.baeldung.flywaycallbacks; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.flywaydb.core.Flyway; import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -14,11 +13,8 @@ public class EmptyMigrationStrategyConfig { @Bean public FlywayMigrationStrategy flywayMigrationStrategy() { - return new FlywayMigrationStrategy() { - @Override - public void migrate(Flyway flyway) { - log.info("Skipping Flyway migration!"); - } + return flyway -> { + log.info("Skipping Flyway migration!"); }; } }