Improve null-safety of module/spring-boot-jdbc

See gh-46926
This commit is contained in:
Moritz Halbritter
2025-08-26 14:22:55 +02:00
parent 09b631d6c0
commit 9d1b4897f1
6 changed files with 38 additions and 9 deletions
@@ -93,7 +93,7 @@ public final class DataSourceBuilder<T extends DataSource> {
private final @Nullable ClassLoader classLoader;
private final Map<DataSourceProperty, String> values = new HashMap<>();
private final Map<DataSourceProperty, @Nullable String> values = new HashMap<>();
private @Nullable Class<T> type;
@@ -37,9 +37,19 @@ class ClickHouseEnvironment {
private final String database;
ClickHouseEnvironment(Map<String, @Nullable String> env) {
this.username = env.getOrDefault("CLICKHOUSE_USER", "default");
this.username = extractUsername(env);
this.password = extractPassword(env);
this.database = env.getOrDefault("CLICKHOUSE_DB", "default");
this.database = extractDatabase(env);
}
private static String extractDatabase(Map<String, @Nullable String> env) {
String result = env.get("CLICKHOUSE_DB");
return (result != null) ? result : "default";
}
private static String extractUsername(Map<String, @Nullable String> env) {
String result = env.get("CLICKHOUSE_USER");
return (result != null) ? result : "default";
}
private String extractPassword(Map<String, @Nullable String> env) {
@@ -47,7 +47,10 @@ class MariaDbEnvironment {
private String extractUsername(Map<String, @Nullable String> env) {
String user = env.get("MARIADB_USER");
return (user != null) ? user : env.getOrDefault("MYSQL_USER", "root");
if (user == null) {
user = env.get("MYSQL_USER");
}
return (user != null) ? user : "root";
}
private String extractPassword(Map<String, @Nullable String> env) {
@@ -40,11 +40,16 @@ class MySqlEnvironment {
private final String database;
MySqlEnvironment(Map<String, @Nullable String> env) {
this.username = env.getOrDefault("MYSQL_USER", "root");
this.username = extractUsername(env);
this.password = extractPassword(env);
this.database = extractDatabase(env);
}
private static String extractUsername(Map<String, @Nullable String> env) {
String result = env.get("MYSQL_USER");
return (result != null) ? result : "root";
}
private String extractPassword(Map<String, @Nullable String> env) {
Assert.state(!env.containsKey("MYSQL_RANDOM_ROOT_PASSWORD"), "MYSQL_RANDOM_ROOT_PASSWORD is not supported");
boolean allowEmpty = env.containsKey("MYSQL_ALLOW_EMPTY_PASSWORD") || env.containsKey("ALLOW_EMPTY_PASSWORD");
@@ -37,9 +37,19 @@ class OracleEnvironment {
private final String database;
OracleEnvironment(Map<String, @Nullable String> env, String defaultDatabase) {
this.username = env.getOrDefault("APP_USER", "system");
this.username = extractUsername(env);
this.password = extractPassword(env);
this.database = env.getOrDefault("ORACLE_DATABASE", defaultDatabase);
this.database = extractDatabase(env, defaultDatabase);
}
private static String extractDatabase(Map<String, @Nullable String> env, String defaultDatabase) {
String result = env.get("ORACLE_DATABASE");
return (result != null) ? result : defaultDatabase;
}
private static String extractUsername(Map<String, @Nullable String> env) {
String result = env.get("APP_USER");
return (result != null) ? result : "system";
}
private String extractPassword(Map<String, @Nullable String> env) {
@@ -57,8 +57,9 @@ class PostgresEnvironment {
private String extract(Map<String, @Nullable String> env, String[] keys, String defaultValue) {
for (String key : keys) {
if (env.containsKey(key)) {
return env.get(key);
String value = env.get(key);
if (value != null) {
return value;
}
}
return defaultValue;