Skip to content

Commit

Permalink
Merge pull request #27453 from saraswathy-krish
Browse files Browse the repository at this point in the history
* gh-27453:
  Polish "Fix deriving DataSources from custom type"
  Fix deriving DataSources from custom type

Closes gh-27453
  • Loading branch information
wilkinsona committed Jul 22, 2021
2 parents 44a9531 + 18b4898 commit 7225d0e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -281,17 +281,17 @@ public String toString() {
}

Method findSetter(Class<?> type) {
return extracted("set", type);
return extracted("set", type, String.class);
}

Method findGetter(Class<?> 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) {
Method method = ReflectionUtils.findMethod(type, prefix + StringUtils.capitalize(candidate),
String.class);
paramTypes);
if (method != null) {
return method;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,34 @@ void buildWhenDerivedFromExistingDatabaseWithTypeChange() {
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 {

private final String[] hiddenPackages;
Expand Down

0 comments on commit 7225d0e

Please sign in to comment.