Polish SessionJdbcRuntimeHints

Issue gh-2103
This commit is contained in:
Marcus Da Coregio
2022-09-21 09:12:24 -03:00
parent cd51c36dc0
commit baed403a6a
3 changed files with 40 additions and 4 deletions

View File

@@ -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"

View File

@@ -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");
}
}

View File

@@ -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<String> 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());