From 301d465de4bd25efefc000b1cbedd0d0efd66330 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 13 Dec 2021 16:56:17 +0100 Subject: [PATCH] Hacking See gh-29002 --- ...formPlaceholderDatabaseDriverResolver.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/PlatformPlaceholderDatabaseDriverResolver.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/PlatformPlaceholderDatabaseDriverResolver.java index 10e62713d2fa..21c462d4aa22 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/PlatformPlaceholderDatabaseDriverResolver.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/PlatformPlaceholderDatabaseDriverResolver.java @@ -21,6 +21,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.function.Supplier; import javax.sql.DataSource; @@ -92,6 +93,23 @@ public PlatformPlaceholderDatabaseDriverResolver withDriverPlatform(DatabaseDriv */ public List resolveAll(DataSource dataSource, String... values) { Assert.notNull(dataSource, "DataSource must not be null"); + return resolveAll(() -> determinePlatform(dataSource), values); + } + + /** + * Resolves the placeholders in the given {@code values}, replacing them with the + * given platform + * @param platform the platform to use + * @param values the values in which placeholders are resolved + * @return the values with their placeholders resolved + * @since 2.6.2 + */ + public List resolveAll(String platform, String... values) { + Assert.notNull(platform, "Platform must not be null"); + return resolveAll(() -> platform, values); + } + + private List resolveAll(Supplier platformProvider, String... values) { if (ObjectUtils.isEmpty(values)) { return Collections.emptyList(); } @@ -100,7 +118,7 @@ public List resolveAll(DataSource dataSource, String... values) { for (String value : values) { if (StringUtils.hasLength(value)) { if (value.contains(this.placeholder)) { - platform = (platform != null) ? platform : determinePlatform(dataSource); + platform = (platform != null) ? platform : platformProvider.get(); value = value.replace(this.placeholder, platform); } }