commit
c9361798be
|
@ -281,17 +281,17 @@ public final class DataSourceBuilder<T extends DataSource> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Method findSetter(Class<?> type) {
|
Method findSetter(Class<?> type) {
|
||||||
return extracted("set", type);
|
return extracted("set", type, String.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
Method findGetter(Class<?> type) {
|
Method findGetter(Class<?> type) {
|
||||||
return extracted("get", type);
|
return extracted("get", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Method extracted(String prefix, Class<?> type) {
|
private Method extracted(String prefix, Class<?> type, Class<?>... paramTypes) {
|
||||||
for (String candidate : this.names) {
|
for (String candidate : this.names) {
|
||||||
Method method = ReflectionUtils.findMethod(type, prefix + StringUtils.capitalize(candidate),
|
Method method = ReflectionUtils.findMethod(type, prefix + StringUtils.capitalize(candidate),
|
||||||
String.class);
|
paramTypes);
|
||||||
if (method != null) {
|
if (method != null) {
|
||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,6 +331,34 @@ class DataSourceBuilderTests {
|
||||||
assertThat(built.getUrl()).isEqualTo("jdbc:postgresql://localhost:5432/postgres");
|
assertThat(built.getUrl()).isEqualTo("jdbc:postgresql://localhost:5432/postgres");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test // gh-27295
|
||||||
|
void buildWhenDerivedFromCustomType() {
|
||||||
|
CustomDataSource dataSource = new CustomDataSource();
|
||||||
|
dataSource.setUsername("test");
|
||||||
|
dataSource.setPassword("secret");
|
||||||
|
dataSource.setUrl("jdbc:postgresql://localhost:5432/postgres");
|
||||||
|
DataSourceBuilder<?> builder = DataSourceBuilder.derivedFrom(dataSource).username("alice")
|
||||||
|
.password("confidential");
|
||||||
|
CustomDataSource testSource = (CustomDataSource) builder.build();
|
||||||
|
assertThat(testSource).isNotSameAs(dataSource);
|
||||||
|
assertThat(testSource.getUsername()).isEqualTo("alice");
|
||||||
|
assertThat(testSource.getUrl()).isEqualTo("jdbc:postgresql://localhost:5432/postgres");
|
||||||
|
assertThat(testSource.getPassword()).isEqualTo("confidential");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test // gh-27295
|
||||||
|
void buildWhenDerivedFromCustomTypeWithTypeChange() {
|
||||||
|
CustomDataSource dataSource = new CustomDataSource();
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
final class HidePackagesClassLoader extends URLClassLoader {
|
final class HidePackagesClassLoader extends URLClassLoader {
|
||||||
|
|
||||||
private final String[] hiddenPackages;
|
private final String[] hiddenPackages;
|
||||||
|
|
Loading…
Reference in New Issue