Add support for SimpleDriverDataSource

This commit makes sure that DataSourceBuilder can configure
SimpleDriverDataSource by adding an alias for the driver's class name.

Closes gh-20220

Co-authored-by: Dmytro Nosan <dimanosan@gmail.com>
This commit is contained in:
Stephane Nicoll 2020-02-18 17:22:30 +01:00
parent 287d577aea
commit 4ec30e1145
2 changed files with 12 additions and 0 deletions

View File

@ -87,6 +87,7 @@ public final class DataSourceBuilder<T extends DataSource> {
private void bind(DataSource result) {
ConfigurationPropertySource source = new MapConfigurationPropertySource(this.properties);
ConfigurationPropertyNameAliases aliases = new ConfigurationPropertyNameAliases();
aliases.addAliases("driver-class-name", "driver-class");
aliases.addAliases("url", "jdbc-url");
aliases.addAliases("username", "user");
Binder binder = new Binder(source.withAliases(aliases));

View File

@ -26,9 +26,12 @@ import javax.sql.DataSource;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.h2.Driver;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
import static org.assertj.core.api.Assertions.assertThat;
/**
@ -74,6 +77,14 @@ class DataSourceBuilderTests {
assertThat(hikariDataSource).isInstanceOf(HikariDataSource.class);
}
@Test
void dataSourceCanBeCreatedWithSimpleDriverDataSource() {
this.dataSource = DataSourceBuilder.create().url("jdbc:h2:test").type(SimpleDriverDataSource.class).build();
assertThat(this.dataSource).isInstanceOf(SimpleDriverDataSource.class);
assertThat(((SimpleDriverDataSource) this.dataSource).getUrl()).isEqualTo("jdbc:h2:test");
assertThat(((SimpleDriverDataSource) this.dataSource).getDriver()).isInstanceOf(Driver.class);
}
final class HidePackagesClassLoader extends URLClassLoader {
private final String[] hiddenPackages;