From d5e1a15efc6c9be62e4158a2d4f67dd6427c1999 Mon Sep 17 00:00:00 2001 From: Josh Cummings Date: Wed, 15 Feb 2023 09:22:33 -0700 Subject: [PATCH] Add SSLSocketFactory Hints Closes gh-723 --- .../ldap/aot/hint/LdapCoreRuntimeHints.java | 6 ++++++ .../ldap/aot/hint/LdapCoreRuntimeHintsTests.java | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/core/src/main/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHints.java b/core/src/main/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHints.java index 4416b45d..e9a05d69 100644 --- a/core/src/main/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHints.java +++ b/core/src/main/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHints.java @@ -16,6 +16,9 @@ package org.springframework.ldap.aot.hint; +import java.util.Collections; + +import org.springframework.aot.hint.ExecutableMode; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; @@ -65,6 +68,9 @@ class LdapCoreRuntimeHints implements RuntimeHintsRegistrar { hints.reflection().registerTypeIfPresent(classLoader, "com.sun.jndi.ldap.ctl.SortResponseControl", (builder) -> builder.onReachableType(SortControlDirContextProcessor.class) .withMembers(MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(TypeReference.of("javax.net.ssl.SSLSocketFactory"), (builder) -> builder + .withMethod("getDefault", Collections.emptyList(), ExecutableMode.INVOKE) + .onReachableType(TypeReference.of("com.sun.jndi.ldap.Connection"))); } } diff --git a/core/src/test/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHintsTests.java b/core/src/test/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHintsTests.java index 9e51dfc7..37b9f0dd 100644 --- a/core/src/test/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHintsTests.java +++ b/core/src/test/java/org/springframework/ldap/aot/hint/LdapCoreRuntimeHintsTests.java @@ -1,5 +1,7 @@ package org.springframework.ldap.aot.hint; +import javax.net.ssl.SSLSocketFactory; + import org.junit.Before; import org.junit.Test; @@ -46,4 +48,9 @@ public class LdapCoreRuntimeHintsTests { .accepts(this.hints); } + @Test + public void sslSocketFactoryHasHints() throws Exception { + assertThat(RuntimeHintsPredicates.reflection().onMethod(SSLSocketFactory.class.getDeclaredMethod("getDefault"))) + .accepts(this.hints); + } }