Commit cd6cacfb authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.3.x'

parents 2c619f8d 7a4e061d
...@@ -25,10 +25,13 @@ import javax.sql.DataSource; ...@@ -25,10 +25,13 @@ import javax.sql.DataSource;
import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.DisposableBean;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.devtools.autoconfigure.DevToolsDataSourceAutoConfiguration.DevToolsDataSourceCondition;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
...@@ -40,7 +43,7 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; ...@@ -40,7 +43,7 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
* @since 1.3.3 * @since 1.3.3
*/ */
@AutoConfigureAfter(DataSourceAutoConfiguration.class) @AutoConfigureAfter(DataSourceAutoConfiguration.class)
@ConditionalOnBean({ DataSource.class, DataSourceProperties.class }) @Conditional(DevToolsDataSourceCondition.class)
@Configuration @Configuration
public class DevToolsDataSourceAutoConfiguration { public class DevToolsDataSourceAutoConfiguration {
...@@ -85,4 +88,22 @@ public class DevToolsDataSourceAutoConfiguration { ...@@ -85,4 +88,22 @@ public class DevToolsDataSourceAutoConfiguration {
} }
static class DevToolsDataSourceCondition extends AllNestedConditions {
DevToolsDataSourceCondition() {
super(ConfigurationPhase.REGISTER_BEAN);
}
@ConditionalOnBean(DataSource.class)
static final class DataSourceBean {
}
@ConditionalOnBean(DataSourceProperties.class)
static final class DataSourcePropertiesBean {
}
}
} }
...@@ -33,6 +33,7 @@ import org.springframework.context.annotation.Bean; ...@@ -33,6 +33,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
...@@ -76,6 +77,14 @@ public class DevToolsDataSourceAutoConfigurationTests { ...@@ -76,6 +77,14 @@ public class DevToolsDataSourceAutoConfigurationTests {
verify(statement).execute("SHUTDOWN"); verify(statement).execute("SHUTDOWN");
} }
@Test
public void configurationBacksOffWithoutDataSourceProperties() throws SQLException {
ConfigurableApplicationContext context = createContext("org.h2.Driver",
NoDataSourcePropertiesConfiguration.class);
assertThat(context.getBeansOfType(DevToolsDataSourceAutoConfiguration.class))
.isEmpty();
}
private ConfigurableApplicationContext createContext(String driver, private ConfigurableApplicationContext createContext(String driver,
Class<?>... classes) { Class<?>... classes) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
...@@ -108,4 +117,14 @@ public class DevToolsDataSourceAutoConfigurationTests { ...@@ -108,4 +117,14 @@ public class DevToolsDataSourceAutoConfigurationTests {
} }
@Configuration
static class NoDataSourcePropertiesConfiguration {
@Bean
public DataSource in() {
return mock(DataSource.class);
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment