GH-2725 - Add missing runtime hints.

This commit is contained in:
Gerrit Meier
2023-05-18 11:16:08 +02:00
parent 2a0435a028
commit e01b771447

View File

@@ -23,8 +23,14 @@ import org.springframework.data.neo4j.core.mapping.callback.AfterConvertCallback
import org.springframework.data.neo4j.core.mapping.callback.BeforeBindCallback;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.support.UUIDStringGenerator;
import org.springframework.data.neo4j.repository.query.QuerydslNeo4jPredicateExecutor;
import org.springframework.data.neo4j.repository.query.ReactiveQuerydslNeo4jPredicateExecutor;
import org.springframework.data.neo4j.repository.query.SimpleQueryByExampleExecutor;
import org.springframework.data.neo4j.repository.query.SimpleReactiveQueryByExampleExecutor;
import org.springframework.data.neo4j.repository.support.SimpleNeo4jRepository;
import org.springframework.data.neo4j.repository.support.SimpleReactiveNeo4jRepository;
import org.springframework.data.querydsl.QuerydslUtils;
import org.springframework.data.util.ReactiveWrappers;
import org.springframework.lang.Nullable;
import java.util.Arrays;
@@ -51,5 +57,30 @@ public class Neo4jRuntimeHints implements RuntimeHintsRegistrar {
),
builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS,
MemberCategory.INVOKE_PUBLIC_METHODS));
if (ReactiveWrappers.isAvailable(ReactiveWrappers.ReactiveLibrary.PROJECT_REACTOR)) {
hints.reflection().registerTypes(
Arrays.asList(
TypeReference.of(SimpleReactiveQueryByExampleExecutor.class),
TypeReference.of(SimpleReactiveNeo4jRepository.class)
),
builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_PUBLIC_METHODS));
}
if (QuerydslUtils.QUERY_DSL_PRESENT) {
registerQuerydslHints(hints);
}
}
private static void registerQuerydslHints(RuntimeHints hints) {
hints.reflection().registerType(QuerydslNeo4jPredicateExecutor.class,
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
if (ReactiveWrappers.isAvailable(ReactiveWrappers.ReactiveLibrary.PROJECT_REACTOR)) {
hints.reflection().registerType(ReactiveQuerydslNeo4jPredicateExecutor.class,
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
}
}
}