Polish SessionJdbcRuntimeHints
Issue gh-2103
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user