From ef879aadd65bbd2edc76be340b554741da87358b Mon Sep 17 00:00:00 2001 From: Marcus Da Coregio Date: Thu, 29 Sep 2022 09:42:37 -0300 Subject: [PATCH] Add native hint for the users JDBC schema Closes gh-11907 --- .../security/aot/hint/CoreSecurityRuntimeHints.java | 6 ++++++ .../security/aot/hint/CoreSecurityRuntimeHintsTests.java | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/core/src/main/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHints.java b/core/src/main/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHints.java index f7bff1fbfa..71a81f1422 100644 --- a/core/src/main/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHints.java +++ b/core/src/main/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHints.java @@ -42,6 +42,7 @@ import org.springframework.security.authentication.event.AuthenticationFailurePr import org.springframework.security.authentication.event.AuthenticationFailureProxyUntrustedEvent; import org.springframework.security.authentication.event.AuthenticationFailureServiceExceptionEvent; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl; /** * {@link RuntimeHintsRegistrar} for core classes @@ -57,6 +58,7 @@ class CoreSecurityRuntimeHints implements RuntimeHintsRegistrar { registerExpressionEvaluationHints(hints); registerMethodSecurityHints(hints); hints.resources().registerResourceBundle("org.springframework.security.messages"); + registerDefaultJdbcSchemaFileHint(hints); } private void registerMethodSecurityHints(RuntimeHints hints) { @@ -91,4 +93,8 @@ class CoreSecurityRuntimeHints implements RuntimeHintsRegistrar { ProviderNotFoundException.class).map(TypeReference::of).toList(); } + private void registerDefaultJdbcSchemaFileHint(RuntimeHints hints) { + hints.resources().registerPattern(JdbcDaoImpl.DEFAULT_USER_SCHEMA_DDL_LOCATION); + } + } diff --git a/core/src/test/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHintsTests.java b/core/src/test/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHintsTests.java index 7983333272..2594baf7b4 100644 --- a/core/src/test/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHintsTests.java +++ b/core/src/test/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHintsTests.java @@ -131,4 +131,10 @@ class CoreSecurityRuntimeHintsTests { LockedException.class, UsernameNotFoundException.class, ProviderNotFoundException.class); } + @Test + void defaultJdbcSchemaFileHasHints() { + assertThat(RuntimeHintsPredicates.resource() + .forResource("org/springframework/security/core/userdetails/jdbc/users.ddl")).accepts(this.hints); + } + }