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

See gh-46926
This commit is contained in:
Moritz Halbritter
2025-08-26 14:22:55 +02:00
parent 369b1e92f9
commit 3fa7c3a521
2 changed files with 20 additions and 9 deletions
@@ -60,15 +60,20 @@ class LLdapDockerComposeConnectionDetailsFactory extends DockerComposeConnection
super(service);
Map<String, @Nullable String> env = service.env();
boolean usesTls = Boolean.parseBoolean(env.getOrDefault("LLDAP_LDAPS_OPTIONS__ENABLED", "false"));
String ldapPort = usesTls ? env.getOrDefault("LLDAP_LDAPS_OPTIONS__PORT", "6360")
: env.getOrDefault("LLDAP_LDAP_PORT", "3890");
String ldapPort = usesTls ? getFromEnv(env, "LLDAP_LDAPS_OPTIONS__PORT", "6360")
: getFromEnv(env, "LLDAP_LDAP_PORT", "3890");
this.urls = new String[] { "%s://%s:%d".formatted(usesTls ? "ldaps" : "ldap", service.host(),
service.ports().get(Integer.parseInt(ldapPort))) };
this.base = env.getOrDefault("LLDAP_LDAP_BASE_DN", "dc=example,dc=com");
this.password = env.getOrDefault("LLDAP_LDAP_USER_PASS", "password");
this.base = getFromEnv(env, "LLDAP_LDAP_BASE_DN", "dc=example,dc=com");
this.password = getFromEnv(env, "LLDAP_LDAP_USER_PASS", "password");
this.username = "cn=admin,ou=people,%s".formatted(this.base);
}
private static String getFromEnv(Map<String, @Nullable String> env, String key, String defaultValue) {
String result = env.get(key);
return (result != null) ? result : defaultValue;
}
@Override
public String[] getUrls() {
return this.urls;
@@ -63,21 +63,27 @@ class OpenLdapDockerComposeConnectionDetailsFactory
super(service);
Map<String, @Nullable String> env = service.env();
boolean usesTls = Boolean.parseBoolean(env.getOrDefault("LDAP_TLS", "true"));
String ldapPort = usesTls ? env.getOrDefault("LDAPS_PORT", "636") : env.getOrDefault("LDAP_PORT", "389");
String ldapPort = usesTls ? getFromEnv(env, "LDAPS_PORT", "636") : getFromEnv(env, "LDAP_PORT", "389");
this.urls = new String[] { "%s://%s:%d".formatted(usesTls ? "ldaps" : "ldap", service.host(),
service.ports().get(Integer.parseInt(ldapPort))) };
if (env.containsKey("LDAP_BASE_DN")) {
this.base = env.get("LDAP_BASE_DN");
String baseDn = env.get("LDAP_BASE_DN");
if (baseDn != null) {
this.base = baseDn;
}
else {
this.base = Arrays.stream(env.getOrDefault("LDAP_DOMAIN", "example.org").split("\\."))
this.base = Arrays.stream(getFromEnv(env, "LDAP_DOMAIN", "example.org").split("\\."))
.map("dc=%s"::formatted)
.collect(Collectors.joining(","));
}
this.password = env.getOrDefault("LDAP_ADMIN_PASSWORD", "admin");
this.password = getFromEnv(env, "LDAP_ADMIN_PASSWORD", "admin");
this.username = "cn=admin,%s".formatted(this.base);
}
private static String getFromEnv(Map<String, @Nullable String> env, String key, String defaultValue) {
String result = env.get(key);
return (result != null) ? result : defaultValue;
}
@Override
public String[] getUrls() {
return this.urls;