From 526474f3b8cf75e9b2687c76900f4b46b9ac28c4 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 18 Feb 2021 14:05:45 +0100 Subject: [PATCH] Add username alias for Postgres's PGSimpleDataSource Closes gh-25363 --- .../springframework/boot/jdbc/DataSourceBuilder.java | 2 ++ .../boot/jdbc/DataSourceBuilderTests.java | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DataSourceBuilder.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DataSourceBuilder.java index 61b8540038d4..0678d0633f35 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DataSourceBuilder.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DataSourceBuilder.java @@ -198,6 +198,8 @@ private static class DataSourceSettingsResolver { create(classLoader, "oracle.jdbc.datasource.OracleDataSource", OracleDataSourceSettings::new)); addIfAvailable(this.allDataSourceSettings, create(classLoader, "org.h2.jdbcx.JdbcDataSource", (type) -> new DataSourceSettings(type, (aliases) -> aliases.addAliases("username", "user")))); + addIfAvailable(this.allDataSourceSettings, create(classLoader, "org.postgresql.ds.PGSimpleDataSource", + (type) -> new DataSourceSettings(type, (aliases) -> aliases.addAliases("username", "user")))); } private static List resolveAvailableDataSourceSettings(ClassLoader classLoader) { diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/DataSourceBuilderTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/DataSourceBuilderTests.java index 1da5bf3d8fe2..974bced9bc56 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/DataSourceBuilderTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/DataSourceBuilderTests.java @@ -33,6 +33,7 @@ import org.h2.jdbcx.JdbcDataSource; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; +import org.postgresql.ds.PGSimpleDataSource; import org.springframework.jdbc.datasource.SimpleDriverDataSource; @@ -129,6 +130,15 @@ void dataSourceCanBeCreatedWithH2JdbcDataSource() { assertThat(h2DataSource.getUser()).isEqualTo("test"); } + @Test + void dataSourceCanBeCreatedWithPGDataSource() { + this.dataSource = DataSourceBuilder.create().url("jdbc:postgresql://localhost/test") + .type(PGSimpleDataSource.class).username("test").build(); + assertThat(this.dataSource).isInstanceOf(PGSimpleDataSource.class); + PGSimpleDataSource pgDataSource = (PGSimpleDataSource) this.dataSource; + assertThat(pgDataSource.getUser()).isEqualTo("test"); + } + @Test void dataSourceAliasesAreOnlyAppliedToRelevantDataSource() { this.dataSource = DataSourceBuilder.create().url("jdbc:h2:test").type(TestDataSource.class).username("test")