Browse Source

Add support for AWS Advanced JDBC Wrapper

This commit adds an entry for the AWS Advanced JDBC Wrapper to the
DatabaseDriver enum. This allows the driver class name to be
auto-detected from jdbc:aws-wrapper:… URLs.

See gh-43812

Signed-off-by: Vedran Pavic <vedran@vedranpavic.com>
pull/43852/head
Vedran Pavic 11 months ago committed by Andy Wilkinson
parent
commit
2bf413c9a9
  1. 6
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchDataSourceScriptDatabaseInitializerTests.java
  2. 7
      spring-boot-project/spring-boot-parent/build.gradle
  3. 3
      spring-boot-project/spring-boot/build.gradle
  4. 14
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java
  5. 2
      spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/DatabaseDriverTests.java

6
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchDataSourceScriptDatabaseInitializerTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2012-2024 the original author or authors.
* Copyright 2012-2025 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.
@ -62,8 +62,8 @@ class BatchDataSourceScriptDatabaseInitializerTests { @@ -62,8 +62,8 @@ class BatchDataSourceScriptDatabaseInitializerTests {
}
@ParameterizedTest
@EnumSource(value = DatabaseDriver.class, mode = Mode.EXCLUDE, names = { "CLICKHOUSE", "FIREBIRD", "INFORMIX",
"JTDS", "PHOENIX", "REDSHIFT", "TERADATA", "TESTCONTAINERS", "UNKNOWN" })
@EnumSource(value = DatabaseDriver.class, mode = Mode.EXCLUDE, names = { "AWS_JDBC_WRAPPER", "CLICKHOUSE",
"FIREBIRD", "INFORMIX", "JTDS", "PHOENIX", "REDSHIFT", "TERADATA", "TESTCONTAINERS", "UNKNOWN" })
void batchSchemaCanBeLocated(DatabaseDriver driver) throws SQLException {
DefaultResourceLoader resourceLoader = new DefaultResourceLoader();
BatchProperties properties = new BatchProperties();

7
spring-boot-project/spring-boot-parent/build.gradle

@ -25,6 +25,13 @@ bom { @@ -25,6 +25,13 @@ bom {
]
}
}
library("AWS Advanced JDBC Wrapper", "2.5.4") {
group("software.amazon.jdbc") {
modules = [
"aws-advanced-jdbc-wrapper"
]
}
}
library("C3P0", "0.9.5.5") {
group("com.mchange") {
modules = [

3
spring-boot-project/spring-boot/build.gradle

@ -100,6 +100,9 @@ dependencies { @@ -100,6 +100,9 @@ dependencies {
optional("org.yaml:snakeyaml")
optional("org.jetbrains.kotlin:kotlin-reflect")
optional("org.jetbrains.kotlin:kotlin-stdlib")
optional("software.amazon.jdbc:aws-advanced-jdbc-wrapper") {
exclude(group: "commons-logging", module: "commons-logging")
}
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation("org.springframework:spring-core-test")

14
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java

@ -19,6 +19,7 @@ package org.springframework.boot.jdbc; @@ -19,6 +19,7 @@ package org.springframework.boot.jdbc;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import org.springframework.util.Assert;
@ -218,6 +219,19 @@ public enum DatabaseDriver { @@ -218,6 +219,19 @@ public enum DatabaseDriver {
return Arrays.asList("ch", "clickhouse");
}
},
/**
* AWS Advanced JDBC Wrapper.
* @since 3.5.0
*/
AWS_JDBC_WRAPPER(null, "software.amazon.jdbc.Driver") {
@Override
protected Collection<String> getUrlPrefixes() {
return List.of("aws-wrapper");
}
};
private final String productName;

2
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/DatabaseDriverTests.java

@ -121,6 +121,8 @@ class DatabaseDriverTests { @@ -121,6 +121,8 @@ class DatabaseDriverTests {
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:clickhouse://localhost:3306/sample"))
.isEqualTo(DatabaseDriver.CLICKHOUSE);
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:ch://localhost:3306/sample")).isEqualTo(DatabaseDriver.CLICKHOUSE);
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:aws-wrapper:postgresql://127.0.0.1:5432/sample"))
.isEqualTo(DatabaseDriver.AWS_JDBC_WRAPPER);
}
}

Loading…
Cancel
Save