From a2680efadbb13cbb6d8c6cf3601e38cff9b18e5c Mon Sep 17 00:00:00 2001 From: ferengra Date: Sat, 7 Mar 2020 17:45:51 +0100 Subject: [PATCH 1/2] Add clearCheckSums to Liquibase auto configuration Liquibase auto configuration is extended with clearCheckSums to allow to clear all checksums in the current changelog, so they will be recalculated upon the next update. See gh-20417 --- .../liquibase/LiquibaseAutoConfiguration.java | 2 ++ .../liquibase/LiquibaseProperties.java | 15 +++++++++++++++ .../LiquibaseAutoConfigurationTests.java | 10 ++++++++++ 3 files changed, 27 insertions(+) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java index a393ce3309..d6df5e595a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java @@ -64,6 +64,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; * @author Dominic Gunn * @author Dan Zheng * @author András Deák + * @author Ferenc Gratzer * @since 1.1.0 */ @Configuration(proxyBeanMethods = false) @@ -107,6 +108,7 @@ public class LiquibaseAutoConfiguration { liquibase.setDatabaseChangeLogTable(this.properties.getDatabaseChangeLogTable()); liquibase.setDatabaseChangeLogLockTable(this.properties.getDatabaseChangeLogLockTable()); liquibase.setDropFirst(this.properties.isDropFirst()); + liquibase.setClearCheckSums(this.properties.isClearCheckSums()); liquibase.setShouldRun(this.properties.isEnabled()); liquibase.setLabels(this.properties.getLabels()); liquibase.setChangeLogParameters(this.properties.getParameters()); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java index 78f486e2f4..dbbf46783e 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java @@ -29,6 +29,7 @@ import org.springframework.util.Assert; * * @author Marcel Overdijk * @author Eddú Meléndez + * @author Ferenc Gratzer * @since 1.1.0 */ @ConfigurationProperties(prefix = "spring.liquibase", ignoreUnknownFields = false) @@ -74,6 +75,12 @@ public class LiquibaseProperties { */ private boolean dropFirst; + /** + * Whether to clear all checksums in the current changelog, so they will be + * recalculated next update. + */ + private boolean clearCheckSums; + /** * Whether to enable Liquibase support. */ @@ -187,6 +194,14 @@ public class LiquibaseProperties { this.dropFirst = dropFirst; } + public boolean isClearCheckSums() { + return this.clearCheckSums; + } + + public void setClearCheckSums(boolean clearCheckSums) { + this.clearCheckSums = clearCheckSums; + } + public boolean isEnabled() { return this.enabled; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java index 9dc0709601..88c0339534 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java @@ -69,6 +69,7 @@ import static org.assertj.core.api.Assertions.contentOf; * @author Dominic Gunn * @author András Deák * @author Andrii Hrytsiuk + * @author Ferenc Gratzer */ @ExtendWith(OutputCaptureExtension.class) class LiquibaseAutoConfigurationTests { @@ -106,6 +107,7 @@ class LiquibaseAutoConfigurationTests { assertThat(liquibase.getContexts()).isNull(); assertThat(liquibase.getDefaultSchema()).isNull(); assertThat(liquibase.isDropFirst()).isFalse(); + assertThat(liquibase.isClearCheckSums()).isFalse(); })); } @@ -143,6 +145,7 @@ class LiquibaseAutoConfigurationTests { assertThat(liquibase.getDatabaseChangeLogLockTable()) .isEqualTo(properties.getDatabaseChangeLogLockTable()); assertThat(liquibase.isDropFirst()).isEqualTo(properties.isDropFirst()); + assertThat(liquibase.isClearCheckSums()).isEqualTo(properties.isClearCheckSums()); assertThat(liquibase.isTestRollbackOnUpdate()).isEqualTo(properties.isTestRollbackOnUpdate()); })); } @@ -189,6 +192,13 @@ class LiquibaseAutoConfigurationTests { .run(assertLiquibase((liquibase) -> assertThat(liquibase.isDropFirst()).isTrue())); } + @Test + void overrideClearCheckSums() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.liquibase.clear-check-sums:true") + .run(assertLiquibase((liquibase) -> assertThat(liquibase.isClearCheckSums()).isTrue())); + } + @Test void overrideDataSource() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) From 77dbe999b915f1b74669921575b774eb705cc04f Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 10 Mar 2020 20:46:53 +0000 Subject: [PATCH 2/2] Polish "Add clearChecksums to Liquibase auto-configuration" See gh-20417 --- .../liquibase/LiquibaseAutoConfiguration.java | 2 +- .../liquibase/LiquibaseProperties.java | 20 +++++++++---------- .../LiquibaseAutoConfigurationTests.java | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java index d6df5e595a..004ddc5066 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java @@ -101,6 +101,7 @@ public class LiquibaseAutoConfiguration { SpringLiquibase liquibase = createSpringLiquibase(liquibaseDataSource.getIfAvailable(), dataSource.getIfUnique(), dataSourceProperties); liquibase.setChangeLog(this.properties.getChangeLog()); + liquibase.setClearCheckSums(this.properties.isClearChecksums()); liquibase.setContexts(this.properties.getContexts()); liquibase.setDefaultSchema(this.properties.getDefaultSchema()); liquibase.setLiquibaseSchema(this.properties.getLiquibaseSchema()); @@ -108,7 +109,6 @@ public class LiquibaseAutoConfiguration { liquibase.setDatabaseChangeLogTable(this.properties.getDatabaseChangeLogTable()); liquibase.setDatabaseChangeLogLockTable(this.properties.getDatabaseChangeLogLockTable()); liquibase.setDropFirst(this.properties.isDropFirst()); - liquibase.setClearCheckSums(this.properties.isClearCheckSums()); liquibase.setShouldRun(this.properties.isEnabled()); liquibase.setLabels(this.properties.getLabels()); liquibase.setChangeLogParameters(this.properties.getParameters()); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java index dbbf46783e..dd183c9ef7 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java @@ -40,6 +40,12 @@ public class LiquibaseProperties { */ private String changeLog = "classpath:/db/changelog/db.changelog-master.yaml"; + /** + * Whether to clear all checksums in the current changelog, so they will be + * recalculated upon the next update. + */ + private boolean clearChecksums; + /** * Comma-separated list of runtime contexts to use. */ @@ -75,12 +81,6 @@ public class LiquibaseProperties { */ private boolean dropFirst; - /** - * Whether to clear all checksums in the current changelog, so they will be - * recalculated next update. - */ - private boolean clearCheckSums; - /** * Whether to enable Liquibase support. */ @@ -194,12 +194,12 @@ public class LiquibaseProperties { this.dropFirst = dropFirst; } - public boolean isClearCheckSums() { - return this.clearCheckSums; + public boolean isClearChecksums() { + return this.clearChecksums; } - public void setClearCheckSums(boolean clearCheckSums) { - this.clearCheckSums = clearCheckSums; + public void setClearChecksums(boolean clearChecksums) { + this.clearChecksums = clearChecksums; } public boolean isEnabled() { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java index 88c0339534..6ab18e54fa 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java @@ -145,7 +145,7 @@ class LiquibaseAutoConfigurationTests { assertThat(liquibase.getDatabaseChangeLogLockTable()) .isEqualTo(properties.getDatabaseChangeLogLockTable()); assertThat(liquibase.isDropFirst()).isEqualTo(properties.isDropFirst()); - assertThat(liquibase.isClearCheckSums()).isEqualTo(properties.isClearCheckSums()); + assertThat(liquibase.isClearCheckSums()).isEqualTo(properties.isClearChecksums()); assertThat(liquibase.isTestRollbackOnUpdate()).isEqualTo(properties.isTestRollbackOnUpdate()); })); } @@ -193,9 +193,9 @@ class LiquibaseAutoConfigurationTests { } @Test - void overrideClearCheckSums() { + void overrideClearChecksums() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) - .withPropertyValues("spring.liquibase.clear-check-sums:true") + .withPropertyValues("spring.liquibase.clear-checksums:true") .run(assertLiquibase((liquibase) -> assertThat(liquibase.isClearCheckSums()).isTrue())); }