Skip to content

Commit 5344fb2

Browse files
committed
Polish "Use liquibase schema in LiquibaseEndpoint if it set"
See gh-47300
1 parent bdb0563 commit 5344fb2

File tree

2 files changed

+51
-47
lines changed

2 files changed

+51
-47
lines changed

spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpoint.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,8 @@ private LiquibaseBeanDescriptor createReport(SpringLiquibase liquibase, Database
8080
Database database = null;
8181
try {
8282
database = factory.findCorrectDatabaseImplementation(connection);
83-
String schemaToUse = liquibase.getLiquibaseSchema();
84-
if (!StringUtils.hasText(schemaToUse)) { // Use liquibase-schema if set, otherwise fall back to default-schema
85-
schemaToUse = liquibase.getDefaultSchema();
86-
}
83+
String schemaToUse = StringUtils.hasText(liquibase.getLiquibaseSchema())
84+
? liquibase.getLiquibaseSchema() : liquibase.getDefaultSchema();
8785
if (StringUtils.hasText(schemaToUse)) {
8886
database.setDefaultSchemaName(schemaToUse);
8987
}

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpointTests.java

Lines changed: 49 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import java.sql.Connection;
2020
import java.sql.SQLException;
21-
import java.util.Arrays;
21+
import java.util.List;
2222
import java.util.Map;
2323
import java.util.UUID;
2424

@@ -34,7 +34,9 @@
3434
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection;
3535
import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
3636
import org.springframework.boot.sql.init.DatabaseInitializationSettings;
37+
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3738
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
39+
import org.springframework.boot.test.context.runner.ContextConsumer;
3840
import org.springframework.boot.testsupport.classpath.resources.WithResource;
3941
import org.springframework.context.ApplicationContext;
4042
import org.springframework.context.annotation.Bean;
@@ -50,7 +52,6 @@
5052
* @author Andy Wilkinson
5153
* @author Stephane Nicoll
5254
* @author Leo Li
53-
* @author Nabil Fawwaz Elqayyim
5455
*/
5556
@WithResource(name = "db/changelog/db.changelog-master.yaml", content = """
5657
databaseChangeLog:
@@ -66,14 +67,7 @@ class LiquibaseEndpointTests {
6667

6768
@Test
6869
void liquibaseReportIsReturned() {
69-
this.contextRunner.withUserConfiguration(Config.class).run((context) -> {
70-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
71-
.liquibaseBeans()
72-
.getContexts()
73-
.get(context.getId())
74-
.getLiquibaseBeans();
75-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
76-
});
70+
this.contextRunner.withUserConfiguration(Config.class).run(hasEndpointWithInitializedSchema());
7771
}
7872

7973
@Test
@@ -91,48 +85,60 @@ void liquibaseReportIsReturnedForContextHierarchy() {
9185
}
9286

9387
@Test
94-
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOMSCHEMA;")
95-
void invokeWithCustomSchema() {
88+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
89+
void invokeWithCustomDefaultSchemaFailsIfItDoesNotExist() {
9690
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
97-
.withPropertyValues("spring.liquibase.default-schema=CUSTOMSCHEMA")
98-
.run((context) -> {
99-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
100-
.liquibaseBeans()
101-
.getContexts()
102-
.get(context.getId())
103-
.getLiquibaseBeans();
104-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
105-
});
91+
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_DEFAULT_SCHEMA")
92+
.run((context) -> assertThat(context).hasFailed()
93+
.getFailure()
94+
.rootCause()
95+
.hasMessageContaining("CUSTOM_DEFAULT_SCHEMA"));
10696
}
10797

10898
@Test
109-
void invokeWithCustomTables() {
110-
this.contextRunner.withUserConfiguration(Config.class)
111-
.withPropertyValues("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock",
112-
"spring.liquibase.database-change-log-table=liquibase_database_changelog")
113-
.run((context) -> {
114-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
115-
.liquibaseBeans()
116-
.getContexts()
117-
.get(context.getId())
118-
.getLiquibaseBeans();
119-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
120-
});
99+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOM_SCHEMA;")
100+
void invokeWithCustomDefaultSchema() {
101+
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
102+
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_SCHEMA")
103+
.run(hasEndpointWithInitializedSchema());
104+
}
105+
106+
@Test
107+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
108+
void invokeWithLiquibaseSchemaFailsIfItDoesNotExist() {
109+
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
110+
.withPropertyValues("spring.liquibase.liquibase-schema=CUSTOM_LIQUIBASE_SCHEMA")
111+
.run((context) -> assertThat(context).hasFailed()
112+
.getFailure()
113+
.rootCause()
114+
.hasMessageContaining("CUSTOM_LIQUIBASE_SCHEMA"));
121115
}
122116

123117
@Test
124118
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA LIQUIBASE_SCHEMA;")
125119
void invokeWithLiquibaseSchema() {
126120
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
127-
.withPropertyValues("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA")
128-
.run((context) -> {
129-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
130-
.liquibaseBeans()
131-
.getContexts()
132-
.get(context.getId())
133-
.getLiquibaseBeans();
134-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
135-
});
121+
.withPropertyValues("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA")
122+
.run(hasEndpointWithInitializedSchema());
123+
}
124+
125+
@Test
126+
void invokeWithCustomTables() {
127+
this.contextRunner.withUserConfiguration(Config.class)
128+
.withPropertyValues("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock",
129+
"spring.liquibase.database-change-log-table=liquibase_database_changelog")
130+
.run(hasEndpointWithInitializedSchema());
131+
}
132+
133+
private ContextConsumer<AssertableApplicationContext> hasEndpointWithInitializedSchema() {
134+
return (context) -> {
135+
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
136+
.liquibaseBeans()
137+
.getContexts()
138+
.get(context.getId())
139+
.getLiquibaseBeans();
140+
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
141+
};
136142
}
137143

138144
@Test
@@ -195,7 +201,7 @@ DataSource dataSource() {
195201
.setName(UUID.randomUUID().toString())
196202
.build();
197203
DatabaseInitializationSettings settings = new DatabaseInitializationSettings();
198-
settings.setSchemaLocations(Arrays.asList("classpath:/db/create-custom-schema.sql"));
204+
settings.setSchemaLocations(List.of("classpath:/db/create-custom-schema.sql"));
199205
DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer(dataSource,
200206
settings);
201207
initializer.initializeDatabase();

0 commit comments

Comments
 (0)