diff --git a/spring-session-jdbc/spring-session-jdbc.gradle b/spring-session-jdbc/spring-session-jdbc.gradle index 0bed575b..0a04f84e 100644 --- a/spring-session-jdbc/spring-session-jdbc.gradle +++ b/spring-session-jdbc/spring-session-jdbc.gradle @@ -15,6 +15,7 @@ dependencies { testImplementation "org.springframework:spring-web" testImplementation "org.springframework.security:spring-security-core" testImplementation "org.junit.jupiter:junit-jupiter-api" + testImplementation "org.junit.jupiter:junit-jupiter-params" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine" integrationTestCompile "com.h2database:h2" diff --git a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHints.java b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHints.java index c0095724..e1a4071d 100644 --- a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHints.java +++ b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHints.java @@ -32,7 +32,26 @@ class SessionJdbcRuntimeHints implements RuntimeHintsRegistrar { public void registerHints(RuntimeHints hints, ClassLoader classLoader) { hints.reflection().registerType(TypeReference.of("javax.sql.DataSource"), (hint) -> hint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); - hints.resources().registerPattern("org/springframework/session/jdbc/*.sql"); + hints.resources().registerPattern("org/springframework/session/jdbc/schema-db2.sql") + .registerPattern("org/springframework/session/jdbc/schema-derby.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-db2.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-derby.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-h2.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-hsqldb.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-mysql.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-oracle.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-postgresql.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-sqlite.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-sqlserver.sql") + .registerPattern("org/springframework/session/jdbc/schema-drop-sybase.sql") + .registerPattern("org/springframework/session/jdbc/schema-h2.sql") + .registerPattern("org/springframework/session/jdbc/schema-hsqldb.sql") + .registerPattern("org/springframework/session/jdbc/schema-mysql.sql") + .registerPattern("org/springframework/session/jdbc/schema-oracle.sql") + .registerPattern("org/springframework/session/jdbc/schema-postgresql.sql") + .registerPattern("org/springframework/session/jdbc/schema-sqlite.sql") + .registerPattern("org/springframework/session/jdbc/schema-sqlserver.sql") + .registerPattern("org/springframework/session/jdbc/schema-sybase.sql"); } } diff --git a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHintsTests.java b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHintsTests.java index 04e448a1..c6f33e26 100644 --- a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHintsTests.java +++ b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/aot/hint/SessionJdbcRuntimeHintsTests.java @@ -16,12 +16,20 @@ package org.springframework.session.jdbc.aot.hint; +import java.io.IOException; +import java.util.Arrays; +import java.util.stream.Stream; + import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.aot.hint.TypeReference; import org.springframework.aot.hint.predicate.RuntimeHintsPredicates; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.SpringFactoriesLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -45,13 +53,21 @@ class SessionJdbcRuntimeHintsTests { assertThat(match).isTrue(); } - @Test - void jdbcSchemasHasHints() { + @ParameterizedTest + @MethodSource("getSchemaFileNames") + void jdbcSchemasHasHints(String schemaFileName) { this.sessionJdbcRuntimeHints.registerHints(this.hints, getClass().getClassLoader()); - assertThat(RuntimeHintsPredicates.resource().forResource("org/springframework/session/jdbc/schema.sql")) + assertThat(RuntimeHintsPredicates.resource().forResource("org/springframework/session/jdbc/" + schemaFileName)) .accepts(this.hints); } + private static Stream getSchemaFileNames() throws IOException { + return Arrays + .stream(new PathMatchingResourcePatternResolver() + .getResources("classpath*:org/springframework/session/jdbc/schema-*.sql")) + .map(Resource::getFilename); + } + @Test void dataSourceHasHints() { this.sessionJdbcRuntimeHints.registerHints(this.hints, getClass().getClassLoader());