@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2012 - 2023 the original author or authors .
* Copyright 2012 - 2024 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -457,6 +457,36 @@ class DataSourceBuilderTests {
@@ -457,6 +457,36 @@ class DataSourceBuilderTests {
assertThat ( testSource . getPassword ( ) ) . isEqualTo ( "secret" ) ;
}
@Test
void buildWhenDerivedFromCustomTypeDeriveDriverClassNameFromUrl ( ) {
NoDriverClassNameDataSource dataSource = new NoDriverClassNameDataSource ( ) ;
dataSource . setUsername ( "test" ) ;
dataSource . setPassword ( "secret" ) ;
dataSource . setUrl ( "jdbc:postgresql://localhost:5432/postgres" ) ;
DataSourceBuilder < ? > builder = DataSourceBuilder . derivedFrom ( dataSource ) . type ( SimpleDriverDataSource . class ) ;
SimpleDriverDataSource testSource = ( SimpleDriverDataSource ) builder . build ( ) ;
assertThat ( testSource . getUsername ( ) ) . isEqualTo ( "test" ) ;
assertThat ( testSource . getUrl ( ) ) . isEqualTo ( "jdbc:postgresql://localhost:5432/postgres" ) ;
assertThat ( testSource . getPassword ( ) ) . isEqualTo ( "secret" ) ;
assertThat ( testSource . getDriver ( ) ) . isInstanceOf ( org . postgresql . Driver . class ) ;
}
@Test
void buildWhenDerivedFromCustomTypeDeriveDriverClassNameFromOverridenUrl ( ) {
NoDriverClassNameDataSource dataSource = new NoDriverClassNameDataSource ( ) ;
dataSource . setUsername ( "test" ) ;
dataSource . setPassword ( "secret" ) ;
dataSource . setUrl ( "jdbc:mysql://localhost:5432/mysql" ) ;
DataSourceBuilder < ? > builder = DataSourceBuilder . derivedFrom ( dataSource )
. type ( SimpleDriverDataSource . class )
. url ( "jdbc:mariadb://localhost:5432/mariadb" ) ;
SimpleDriverDataSource testSource = ( SimpleDriverDataSource ) builder . build ( ) ;
assertThat ( testSource . getUsername ( ) ) . isEqualTo ( "test" ) ;
assertThat ( testSource . getUrl ( ) ) . isEqualTo ( "jdbc:mariadb://localhost:5432/mariadb" ) ;
assertThat ( testSource . getPassword ( ) ) . isEqualTo ( "secret" ) ;
assertThat ( testSource . getDriver ( ) ) . isInstanceOf ( org . mariadb . jdbc . Driver . class ) ;
}
@Test // gh-31920
void buildWhenC3P0TypeSpecifiedReturnsExpectedDataSource ( ) {
this . dataSource = DataSourceBuilder . create ( )
@ -620,12 +650,10 @@ class DataSourceBuilderTests {
@@ -620,12 +650,10 @@ class DataSourceBuilderTests {
}
static class Custom DataSource extends LimitedCustomDataSource {
static class NoDriverClassName DataSource extends LimitedCustomDataSource {
private String url ;
private String driverClassName ;
String getUrl ( ) {
return this . url ;
}
@ -634,6 +662,14 @@ class DataSourceBuilderTests {
@@ -634,6 +662,14 @@ class DataSourceBuilderTests {
this . url = url ;
}
}
static class CustomDataSource extends LimitedCustomDataSource {
private String driverClassName ;
private String url ;
String getDriverClassName ( ) {
return this . driverClassName ;
}
@ -642,6 +678,14 @@ class DataSourceBuilderTests {
@@ -642,6 +678,14 @@ class DataSourceBuilderTests {
this . driverClassName = driverClassName ;
}
String getUrl ( ) {
return this . url ;
}
void setUrl ( String url ) {
this . url = url ;
}
}
}