Merge pull request #4317 from vpavic/fix-flyway-baseline-version

* pr/4317:
  Polish contribution
  Fix binding of Flyway's baselineVersion property
pull/4334/head
Stephane Nicoll 9 years ago
commit 831fa1d3b4

@ -21,6 +21,7 @@ import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.flywaydb.core.Flyway; import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationVersion;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@ -33,9 +34,11 @@ import org.springframework.boot.autoconfigure.data.jpa.EntityManagerFactoryDepen
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
import org.springframework.orm.jpa.AbstractEntityManagerFactoryBean; import org.springframework.orm.jpa.AbstractEntityManagerFactoryBean;
@ -47,6 +50,7 @@ import org.springframework.util.Assert;
* *
* @author Dave Syer * @author Dave Syer
* @author Phillip Webb * @author Phillip Webb
* @author Vedran Pavic
* @since 1.1.0 * @since 1.1.0
*/ */
@Configuration @Configuration
@ -57,6 +61,12 @@ import org.springframework.util.Assert;
HibernateJpaAutoConfiguration.class }) HibernateJpaAutoConfiguration.class })
public class FlywayAutoConfiguration { public class FlywayAutoConfiguration {
@Bean
@ConfigurationPropertiesBinding
public StringToMigrationVersionConverter stringToMigrationVersionConverter() {
return new StringToMigrationVersionConverter();
}
@Configuration @Configuration
@ConditionalOnMissingBean(Flyway.class) @ConditionalOnMissingBean(Flyway.class)
@EnableConfigurationProperties(FlywayProperties.class) @EnableConfigurationProperties(FlywayProperties.class)
@ -158,4 +168,17 @@ public class FlywayAutoConfiguration {
} }
/**
* Convert a String to a {@link MigrationVersion}.
*/
private static class StringToMigrationVersionConverter
implements Converter<String, MigrationVersion> {
@Override
public MigrationVersion convert(String source) {
return MigrationVersion.fromVersion(source);
}
}
} }

@ -23,6 +23,7 @@ import java.util.Map;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.flywaydb.core.Flyway; import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationVersion;
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform; import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
@ -56,6 +57,7 @@ import static org.junit.Assert.assertThat;
* @author Dave Syer * @author Dave Syer
* @author Phillip Webb * @author Phillip Webb
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Vedran Pavic
*/ */
public class FlywayAutoConfigurationTests { public class FlywayAutoConfigurationTests {
@ -195,6 +197,16 @@ public class FlywayAutoConfigurationTests {
PropertyPlaceholderAutoConfiguration.class); PropertyPlaceholderAutoConfiguration.class);
} }
@Test
public void overrideBaselineVersion() throws Exception {
EnvironmentTestUtils.addEnvironment(this.context, "flyway.baseline-version=0");
registerAndRefresh(EmbeddedDataSourceConfiguration.class,
FlywayAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class);
Flyway flyway = this.context.getBean(Flyway.class);
assertThat(flyway.getBaselineVersion(), equalTo(MigrationVersion.fromVersion("0")));
}
private void registerAndRefresh(Class<?>... annotatedClasses) { private void registerAndRefresh(Class<?>... annotatedClasses) {
this.context.register(annotatedClasses); this.context.register(annotatedClasses);
this.context.refresh(); this.context.refresh();

Loading…
Cancel
Save