Skip to content

Commit 8ba8d5d

Browse files
committed
Move liquibase provider registration to during SpringLiquibase creation and align code standards to match Spring Boot convention.
Signed-off-by: Dylan Miska <[email protected]>
1 parent 79e04d5 commit 8ba8d5d

File tree

3 files changed

+21
-23
lines changed

3 files changed

+21
-23
lines changed

module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/EnvironmentConfigurationValueProvider.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,9 @@ public int getPrecedence() {
6464
if (requestedKey == null) {
6565
continue;
6666
}
67-
// Exact pass-through: no rewriting of the Liquibase key
6867
String propertyName = PREFIX + requestedKey;
6968
String value = this.environment.getProperty(propertyName);
7069
if (value != null) {
71-
// requestedKey: the key Liquibase asked for
72-
// propertyName: the exact Spring Environment property we read
7370
return new ProvidedValue(requestedKey, requestedKey, value,
7471
"Spring Environment property '" + propertyName + "'", this);
7572
}

module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/LiquibaseAutoConfiguration.java

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import javax.sql.DataSource;
2020

2121
import liquibase.Liquibase;
22+
import liquibase.Scope;
2223
import liquibase.UpdateSummaryEnum;
2324
import liquibase.UpdateSummaryOutputEnum;
2425
import liquibase.change.DatabaseChange;
@@ -30,7 +31,6 @@
3031
import org.springframework.aot.hint.RuntimeHints;
3132
import org.springframework.aot.hint.RuntimeHintsRegistrar;
3233
import org.springframework.beans.factory.ObjectProvider;
33-
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
3434
import org.springframework.boot.autoconfigure.AutoConfiguration;
3535
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3636
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
@@ -103,7 +103,9 @@ PropertiesLiquibaseConnectionDetails liquibaseConnectionDetails(LiquibasePropert
103103
@Bean
104104
SpringLiquibase liquibase(ObjectProvider<DataSource> dataSource,
105105
@LiquibaseDataSource ObjectProvider<DataSource> liquibaseDataSource, LiquibaseProperties properties,
106-
ObjectProvider<SpringLiquibaseCustomizer> customizers, LiquibaseConnectionDetails connectionDetails) {
106+
ObjectProvider<SpringLiquibaseCustomizer> customizers, LiquibaseConnectionDetails connectionDetails,
107+
Environment environment) {
108+
registerLiquibaseConfigurationValueProvider(environment);
107109
SpringLiquibase liquibase = createSpringLiquibase(liquibaseDataSource.getIfAvailable(),
108110
dataSource.getIfUnique(), connectionDetails);
109111
liquibase.setChangeLog(properties.getChangeLog());
@@ -155,6 +157,20 @@ private SpringLiquibase createSpringLiquibase(@Nullable DataSource liquibaseData
155157
return liquibase;
156158
}
157159

160+
private void registerLiquibaseConfigurationValueProvider(Environment environment) {
161+
liquibase.configuration.LiquibaseConfiguration liquibaseConfiguration = Scope.getCurrentScope()
162+
.getSingleton(liquibase.configuration.LiquibaseConfiguration.class);
163+
164+
// Remove any previously registered instance of our provider class
165+
liquibaseConfiguration.getProviders()
166+
.stream()
167+
.filter((provider) -> provider.getClass() == EnvironmentConfigurationValueProvider.class)
168+
.toList()
169+
.forEach(liquibaseConfiguration::unregisterProvider);
170+
171+
liquibaseConfiguration.registerProvider(new EnvironmentConfigurationValueProvider(environment));
172+
}
173+
158174
private DataSource getMigrationDataSource(@Nullable DataSource liquibaseDataSource,
159175
@Nullable DataSource dataSource, LiquibaseConnectionDetails connectionDetails) {
160176
if (liquibaseDataSource != null) {
@@ -190,24 +206,6 @@ private void applyConnectionDetails(LiquibaseConnectionDetails connectionDetails
190206

191207
}
192208

193-
@Bean
194-
static BeanFactoryPostProcessor liquibaseConfigurationValueProviderRegistrar(Environment environment) {
195-
196-
return (beanFactory) -> {
197-
var liquibaseConfiguration = liquibase.Scope.getCurrentScope()
198-
.getSingleton(liquibase.configuration.LiquibaseConfiguration.class);
199-
200-
// Remove any previously registered instance of our provider class
201-
liquibaseConfiguration.getProviders()
202-
.stream()
203-
.filter((provider) -> provider.getClass() == EnvironmentConfigurationValueProvider.class)
204-
.toList()
205-
.forEach(liquibaseConfiguration::unregisterProvider);
206-
207-
liquibaseConfiguration.registerProvider(new EnvironmentConfigurationValueProvider(environment));
208-
};
209-
}
210-
211209
@ConditionalOnClass(Customizer.class)
212210
@Configuration(proxyBeanMethods = false)
213211
static class CustomizerConfiguration {

module/spring-boot-liquibase/src/test/java/org/springframework/boot/liquibase/autoconfigure/EnvironmentConfigurationValueProviderTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222

2323
import static org.assertj.core.api.Assertions.assertThat;
2424

25+
/**
26+
* Tests for {@link EnvironmentConfigurationValueProvider}.
27+
*/
2528
class EnvironmentConfigurationValueProviderTests {
2629

2730
@Test

0 commit comments

Comments
 (0)