Skip to content

Commit c62e6dd

Browse files
Move reflection hint handling to repository context.
1 parent 43428f0 commit c62e6dd

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

src/main/java/org/springframework/data/aot/DefaultAotContext.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.aot.generate.GenerationContext;
3434
import org.springframework.aot.hint.MemberCategory;
3535
import org.springframework.aot.hint.TypeReference;
36+
import org.springframework.aot.hint.annotation.ReflectiveRuntimeHintsRegistrar;
3637
import org.springframework.beans.factory.BeanFactory;
3738
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
3839
import org.springframework.beans.factory.aot.AotProcessingException;
@@ -63,6 +64,7 @@ class DefaultAotContext implements AotContext {
6364

6465
private final Map<Class<?>, ContextualTypeConfiguration> typeConfigurations = new HashMap<>();
6566
private final Environment environment;
67+
private final ReflectiveRuntimeHintsRegistrar runtimeHintsRegistrar = new ReflectiveRuntimeHintsRegistrar();
6668

6769
public DefaultAotContext(BeanFactory beanFactory, Environment environment) {
6870
this(beanFactory, environment, new AotMappingContext());
@@ -257,6 +259,7 @@ private void doContribute(Environment environment, GenerationContext generationC
257259
}
258260

259261
if (forDataBinding) {
262+
runtimeHintsRegistrar.registerRuntimeHints(generationContext.getRuntimeHints(), type);
260263
TypeContributor.contribute(type, Set.of(TypeContributor.DATA_NAMESPACE), generationContext);
261264
}
262265

src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotProcessor.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,9 @@
2626
import org.apache.commons.logging.Log;
2727
import org.apache.commons.logging.LogFactory;
2828
import org.jspecify.annotations.Nullable;
29-
3029
import org.springframework.aot.generate.GenerationContext;
3130
import org.springframework.aot.hint.MemberCategory;
32-
import org.springframework.aot.hint.RuntimeHints;
3331
import org.springframework.aot.hint.TypeReference;
34-
import org.springframework.aot.hint.annotation.ReflectiveRuntimeHintsRegistrar;
3532
import org.springframework.beans.BeansException;
3633
import org.springframework.beans.factory.BeanFactory;
3734
import org.springframework.beans.factory.BeanFactoryAware;
@@ -216,7 +213,7 @@ protected void registerRepositoryCompositionHints(AotRepositoryContext repositor
216213
* @param generationContext the generation context.
217214
* @since 4.0
218215
*/
219-
private void configureTypeContributions(AotRepositoryContext repositoryContext, GenerationContext generationContext) {
216+
protected void configureTypeContributions(AotRepositoryContext repositoryContext, GenerationContext generationContext) {
220217

221218
RepositoryInformation information = repositoryContext.getRepositoryInformation();
222219

@@ -243,25 +240,22 @@ private void configureTypeContributions(AotRepositoryContext repositoryContext,
243240
* ({@link AotRepositoryContext#getResolvedTypes()})
244241
*
245242
* @param repositoryContext the repository context.
246-
* @param generationContext the generation context.
247243
* @since 4.0
248244
*/
249-
protected void configureDomainTypeContributions(AotRepositoryContext repositoryContext,
250-
GenerationContext generationContext) {
245+
private void configureDomainTypeContributions(AotRepositoryContext repositoryContext, GenerationContext generationContext) {
251246

252247
RepositoryInformation information = repositoryContext.getRepositoryInformation();
253-
RuntimeHints hints = generationContext.getRuntimeHints();
254248

255249
// Domain types, related types, projections
256-
ReflectiveRuntimeHintsRegistrar registrar = new ReflectiveRuntimeHintsRegistrar();
250+
repositoryContext.typeConfiguration(information.getDomainType(), config -> config.forDataBinding().forQuerydsl());
251+
257252
Stream.concat(Stream.of(information.getDomainType()), information.getAlternativeDomainTypes().stream())
258253
.forEach(it -> {
259-
260-
registrar.registerRuntimeHints(hints, it);
261-
configureTypeContribution(it, repositoryContext);
254+
repositoryContext.typeConfiguration(information.getDomainType(),
255+
config -> config.forDataBinding().forQuerydsl().contributeAccessors());
262256
});
263257

264-
// TODO: Looks like a duplicate
258+
// Domain types my be part of this, but it also contains reachable ones.
265259
repositoryContext.getResolvedTypes().stream()
266260
.filter(it -> TypeContributor.isPartOf(it, Set.of(information.getDomainType().getPackageName())))
267261
.forEach(it -> configureTypeContribution(it, repositoryContext));

0 commit comments

Comments
 (0)