From 08513bbebf487b6b192445cbff972e55afa65de6 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 17 Feb 2021 10:09:41 +0100 Subject: [PATCH] Hacking See gh-25263 --- .../springframework/boot/jdbc/DataSourceBuilder.java | 4 +++- .../boot/jdbc/DataSourceBuilderTests.java | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) 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 0112028acdaf..13cb3ee25ab2 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 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. @@ -216,6 +216,8 @@ private static List resolveAvailableDataSourceSettings(Class } return null; })); + addIfAvailable(providers, create(classLoader, "org.h2.jdbcx.JdbcDataSource", + (type) -> new DataSourceSettings(type, (aliases) -> aliases.addAliases("username", "user")))); return providers; } 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 397df4a4e796..e780ce6982a7 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 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. @@ -30,6 +30,7 @@ import oracle.ucp.jdbc.PoolDataSourceImpl; import org.apache.commons.dbcp2.BasicDataSource; import org.h2.Driver; +import org.h2.jdbcx.JdbcDataSource; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -119,6 +120,15 @@ void dataSourceCanBeCreatedWithOracleUcpDataSource() { assertThat(upcDataSource.getUser()).isEqualTo("test"); } + @Test + void dataSourceCanBeCreatedWithH2JdbcDataSource() { + this.dataSource = DataSourceBuilder.create().url("jdbc:h2:test") + .type(JdbcDataSource.class).username("test").build(); + assertThat(this.dataSource).isInstanceOf(JdbcDataSource.class); + JdbcDataSource h2DataSource = (JdbcDataSource) this.dataSource; + assertThat(h2DataSource.getUser()).isEqualTo("test"); + } + @Test void dataSourceAliasesAreOnlyAppliedToRelevantDataSource() { this.dataSource = DataSourceBuilder.create().url("jdbc:h2:test").type(TestDataSource.class).username("test")