From 44af5a6b43670bcb70ae7f09778ba8ab33a4d9e2 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Fri, 15 Jul 2022 13:58:42 +0200 Subject: [PATCH] #1817 - Improve JavaConfig to work on AOT. --- .../hateoas/config/EntityLinksConfiguration.java | 8 ++++++-- .../hateoas/config/HateoasConfiguration.java | 8 +++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/config/EntityLinksConfiguration.java b/src/main/java/org/springframework/hateoas/config/EntityLinksConfiguration.java index e31777c5..af4c05ab 100644 --- a/src/main/java/org/springframework/hateoas/config/EntityLinksConfiguration.java +++ b/src/main/java/org/springframework/hateoas/config/EntityLinksConfiguration.java @@ -15,11 +15,13 @@ */ package org.springframework.hateoas.config; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.hateoas.server.EntityLinks; import org.springframework.hateoas.server.core.DelegatingEntityLinks; +import org.springframework.plugin.core.OrderAwarePluginRegistry; import org.springframework.plugin.core.PluginRegistry; import org.springframework.plugin.core.support.PluginRegistryFactoryBean; @@ -33,13 +35,15 @@ import org.springframework.plugin.core.support.PluginRegistryFactoryBean; class EntityLinksConfiguration { @Bean - PluginRegistryFactoryBean> entityLinksPluginRegistry() { + OrderAwarePluginRegistry> entityLinksPluginRegistry(ApplicationContext context) { PluginRegistryFactoryBean> registry = new PluginRegistryFactoryBean<>(); + registry.setApplicationContext(context); registry.setType(EntityLinks.class); registry.setExclusions(new Class[] { DelegatingEntityLinks.class }); + registry.afterPropertiesSet(); - return registry; + return registry.getObject(); } @Primary diff --git a/src/main/java/org/springframework/hateoas/config/HateoasConfiguration.java b/src/main/java/org/springframework/hateoas/config/HateoasConfiguration.java index 46cb6d58..a66eae26 100644 --- a/src/main/java/org/springframework/hateoas/config/HateoasConfiguration.java +++ b/src/main/java/org/springframework/hateoas/config/HateoasConfiguration.java @@ -45,6 +45,7 @@ import org.springframework.hateoas.server.core.DelegatingLinkRelationProvider; import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider; import org.springframework.http.MediaType; import org.springframework.lang.Nullable; +import org.springframework.plugin.core.OrderAwarePluginRegistry; import org.springframework.plugin.core.PluginRegistry; import org.springframework.plugin.core.config.EnablePluginRegistries; import org.springframework.plugin.core.support.PluginRegistryFactoryBean; @@ -106,14 +107,15 @@ public class HateoasConfiguration { } @Bean - PluginRegistryFactoryBean relProviderPluginRegistry() { + OrderAwarePluginRegistry relProviderPluginRegistry(ApplicationContext context) { PluginRegistryFactoryBean factory = new PluginRegistryFactoryBean<>(); - + factory.setApplicationContext(context); factory.setType(LinkRelationProvider.class); factory.setExclusions(new Class[] { DelegatingLinkRelationProvider.class }); + factory.afterPropertiesSet(); - return factory; + return factory.getObject(); } // LinkDiscoverers