Skip to content

Commit b7a8962

Browse files
authored
Merge pull request #98 from zalando-nakadi/fallback-to-spring-datasource-config
Fix #95 fall back to spring datasource config for missing flyway data…
2 parents 03b01e3 + dece20c commit b7a8962

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

nakadi-producer-spring-boot-starter/src/main/java/org/zalando/nakadiproducer/FlywayMigrator.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
import org.springframework.beans.factory.annotation.Autowired;
1313
import org.springframework.boot.autoconfigure.flyway.FlywayDataSource;
1414
import org.springframework.boot.autoconfigure.flyway.FlywayProperties;
15+
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
1516

1617
import java.sql.Connection;
1718
import java.util.List;
19+
import java.util.Optional;
1820

1921
public class FlywayMigrator {
2022
@Autowired(required = false)
@@ -31,19 +33,24 @@ public class FlywayMigrator {
3133
@Autowired(required = false)
3234
private List<NakadiProducerFlywayCallback> callbacks;
3335

34-
@Autowired(required = false)
36+
@Autowired
3537
private FlywayProperties flywayProperties;
3638

39+
@Autowired
40+
private DataSourceProperties dataSourceProperties;
41+
3742
@PostConstruct
3843
public void migrateFlyway() {
3944
Flyway flyway = new Flyway();
4045

4146
if (this.nakadiProducerFlywayDataSource != null) {
4247
flyway.setDataSource(nakadiProducerFlywayDataSource);
4348
} else if (this.flywayProperties != null && this.flywayProperties.isCreateDataSource()) {
44-
flyway.setDataSource(this.flywayProperties.getUrl(), this.flywayProperties.getUser(),
45-
this.flywayProperties.getPassword(),
46-
this.flywayProperties.getInitSqls().toArray(new String[0]));
49+
flyway.setDataSource(
50+
Optional.ofNullable(this.flywayProperties.getUrl()).orElse(dataSourceProperties.getUrl()),
51+
Optional.ofNullable(this.flywayProperties.getUser()).orElse(dataSourceProperties.getUsername()),
52+
Optional.ofNullable(this.flywayProperties.getPassword()).orElse(dataSourceProperties.getPassword()),
53+
this.flywayProperties.getInitSqls().toArray(new String[0]));
4754
} else if (this.flywayDataSource != null) {
4855
flyway.setDataSource(this.flywayDataSource);
4956
} else {

nakadi-producer-spring-boot-starter/src/main/java/org/zalando/nakadiproducer/NakadiProducerAutoConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1515
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
1616
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
17+
import org.springframework.boot.autoconfigure.flyway.FlywayProperties;
18+
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
19+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1720
import org.springframework.context.annotation.Bean;
1821
import org.springframework.context.annotation.Configuration;
1922
import org.springframework.context.annotation.Import;
@@ -41,6 +44,7 @@
4144
@Configuration
4245
@AutoConfigureAfter(name="org.zalando.tracer.spring.TracerAutoConfiguration")
4346
@EnableScheduling
47+
@EnableConfigurationProperties({ DataSourceProperties.class, FlywayProperties.class })
4448
public class NakadiProducerAutoConfiguration {
4549

4650
@ConditionalOnMissingBean({NakadiPublishingClient.class, NakadiClient.class})

0 commit comments

Comments
 (0)