Skip to content

Commit f0c38e1

Browse files
committed
GH-194 - Fix combined condition to enable JDBC database initialization.
1 parent 0fbd776 commit f0c38e1

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

spring-modulith-events/spring-modulith-events-jdbc/src/main/java/org/springframework/modulith/events/jdbc/JdbcEventPublicationAutoConfiguration.java

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,20 @@
1515
*/
1616
package org.springframework.modulith.events.jdbc;
1717

18+
import java.util.List;
19+
1820
import javax.sql.DataSource;
1921

20-
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
21-
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
22+
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
23+
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
2224
import org.springframework.boot.jdbc.DatabaseDriver;
2325
import org.springframework.context.annotation.Bean;
26+
import org.springframework.context.annotation.ConditionContext;
2427
import org.springframework.context.annotation.Conditional;
2528
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.core.env.Environment;
2630
import org.springframework.core.io.ResourceLoader;
31+
import org.springframework.core.type.AnnotatedTypeMetadata;
2732
import org.springframework.jdbc.core.JdbcTemplate;
2833
import org.springframework.modulith.events.EventSerializer;
2934
import org.springframework.modulith.events.config.EventPublicationConfigurationExtension;
@@ -61,16 +66,27 @@ DatabaseSchemaInitializer databaseSchemaInitializer(JdbcTemplate jdbcTemplate, R
6166
*
6267
* @author Oliver Drotbohm
6368
*/
64-
static class SchemaInitializationEnabled extends AnyNestedCondition {
69+
static class SchemaInitializationEnabled extends SpringBootCondition {
6570

66-
public SchemaInitializationEnabled() {
67-
super(ConfigurationPhase.PARSE_CONFIGURATION);
68-
}
71+
private static final String LEGACY = "spring.modulith.events.jdbc-schema-initialization.enabled";
72+
private static final String CURRENT = "spring.modulith.events.jdbc.schema-initialization.enabled";
73+
74+
/*
75+
* (non-Javadoc)
76+
* @see org.springframework.boot.autoconfigure.condition.SpringBootCondition#getMatchOutcome(org.springframework.context.annotation.ConditionContext, org.springframework.core.type.AnnotatedTypeMetadata)
77+
*/
78+
@Override
79+
public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
6980

70-
@ConditionalOnProperty(name = "spring.modulith.events.jdbc-schema-initialization.enabled", havingValue = "true")
71-
static class LegacyPropertyEnabled {}
81+
Environment environment = context.getEnvironment();
7282

73-
@ConditionalOnProperty(name = "spring.modulith.events.jdbc.schema-initialization.enabled", havingValue = "true")
74-
static class NewPropertyEnabled {}
83+
var enabled = List.of(CURRENT, LEGACY).stream()
84+
.map(it -> environment.getProperty(it, Boolean.class))
85+
.anyMatch(Boolean.TRUE::equals);
86+
87+
return enabled //
88+
? ConditionOutcome.match("Schema initialization explicitly enabled.") //
89+
: ConditionOutcome.noMatch("Schema initialization disabled by default.");
90+
}
7591
}
7692
}

spring-modulith-events/spring-modulith-events-jdbc/src/test/java/org/springframework/modulith/events/jdbc/DatabaseSchemaInitializerIntegrationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ static class TestBase {
5252
}
5353

5454
@Nested
55-
@JdbcTest(properties = "spring.modulith.events.jdbc-schema-initialization.enabled=true")
55+
@JdbcTest(properties = "spring.modulith.events.jdbc.schema-initialization.enabled=true")
5656
static class WithInitEnabled extends TestBase {
5757

5858
@Autowired JdbcOperations operations;
@@ -70,7 +70,7 @@ void shouldCreateDatabaseSchemaOnStartUp() {
7070
}
7171

7272
@Nested
73-
@JdbcTest(properties = "spring.modulith.events.jdbc-schema-initialization.enabled=false")
73+
@JdbcTest(properties = "spring.modulith.events.jdbc.schema-initialization.enabled=false")
7474
static class WithInitDisabled extends TestBase {
7575

7676
@SpyBean JdbcOperations operations;

0 commit comments

Comments
 (0)