@@ -158,18 +158,17 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
158
158
@ Autowired ApplicationContext applicationContext ;
159
159
160
160
@ Autowired (required = false ) List <BackendIdConverter > idConverters = Collections .emptyList ();
161
- @ Autowired (required = false ) List <RepositoryRestConfigurer > configurers = Collections .emptyList ();
162
161
@ Autowired (required = false ) List <EntityLookup <?>> lookups = Collections .emptyList ();
163
162
164
163
@ Autowired List <HttpMessageConverter <?>> defaultMessageConverters ;
165
164
166
- Optional <LinkRelationProvider > relProvider ;
167
- Optional <CurieProvider > curieProvider ;
168
- Optional <HalConfiguration > halConfiguration ;
165
+ ObjectProvider <LinkRelationProvider > relProvider ;
166
+ ObjectProvider <CurieProvider > curieProvider ;
167
+ ObjectProvider <HalConfiguration > halConfiguration ;
169
168
ObjectProvider <ObjectMapper > objectMapper ;
170
169
ObjectProvider <RepresentationModelProcessorInvoker > invoker ;
171
- MessageResolver resolver ;
172
- GeoModule geoModule ;
170
+ ObjectProvider < MessageResolver > resolver ;
171
+ ObjectProvider < GeoModule > geoModule ;
173
172
ConversionService defaultConversionService ;
174
173
175
174
private final Lazy <ObjectMapper > mapper ;
@@ -200,13 +199,13 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
200
199
public RepositoryRestMvcConfiguration ( //
201
200
ApplicationContext context , //
202
201
@ Qualifier ("mvcConversionService" ) ObjectFactory <ConversionService > conversionService , //
203
- Optional <LinkRelationProvider > relProvider , //
204
- Optional <CurieProvider > curieProvider , //
205
- Optional <HalConfiguration > halConfiguration , //
202
+ ObjectProvider <LinkRelationProvider > relProvider , //
203
+ ObjectProvider <CurieProvider > curieProvider , //
204
+ ObjectProvider <HalConfiguration > halConfiguration , //
206
205
ObjectProvider <ObjectMapper > objectMapper , //
207
206
ObjectProvider <RepresentationModelProcessorInvoker > invoker , //
208
- MessageResolver resolver , //
209
- GeoModule geoModule ) {
207
+ ObjectProvider < MessageResolver > resolver , //
208
+ ObjectProvider < GeoModule > geoModule ) {
210
209
211
210
super (context , conversionService );
212
211
@@ -389,7 +388,7 @@ public BaseUri baseUri(RepositoryRestConfiguration repositoryRestConfiguration)
389
388
* @return
390
389
*/
391
390
@ Bean
392
- public AnnotatedEventHandlerInvoker annotatedEventHandlerInvoker () {
391
+ public static AnnotatedEventHandlerInvoker annotatedEventHandlerInvoker () {
393
392
return new AnnotatedEventHandlerInvoker ();
394
393
}
395
394
@@ -456,13 +455,17 @@ public ETagArgumentResolver eTagArgumentResolver() {
456
455
* @throws Exception
457
456
*/
458
457
@ Bean
459
- public RepositoryEntityLinks entityLinks (HateoasPageableHandlerMethodArgumentResolver pageableResolver ,
460
- Repositories repositories , RepositoryResourceMappings resourceMappings ,
461
- PluginRegistry <BackendIdConverter , Class <?>> backendIdConverterRegistry ,
462
- RepositoryRestConfiguration repositoryRestConfiguration , HateoasSortHandlerMethodArgumentResolver sortResolver ) {
458
+ public RepositoryEntityLinks entityLinks (ObjectFactory <HateoasPageableHandlerMethodArgumentResolver > pageableResolver , //
459
+ Repositories repositories , //
460
+ RepositoryResourceMappings resourceMappings , //
461
+ PluginRegistry <BackendIdConverter , //
462
+ Class <?>> backendIdConverterRegistry , //
463
+ RepositoryRestConfiguration repositoryRestConfiguration , //
464
+ ObjectFactory <HateoasSortHandlerMethodArgumentResolver > sortResolver ) {
463
465
464
- PagingAndSortingTemplateVariables templateVariables = new ArgumentResolverPagingAndSortingTemplateVariables (
465
- pageableResolver , sortResolver );
466
+ Lazy <PagingAndSortingTemplateVariables > templateVariables = Lazy
467
+ .of (() -> new ArgumentResolverPagingAndSortingTemplateVariables (pageableResolver .getObject (),
468
+ sortResolver .getObject ()));
466
469
467
470
return new RepositoryEntityLinks (repositories , resourceMappings , repositoryRestConfiguration , templateVariables ,
468
471
backendIdConverterRegistry );
@@ -497,7 +500,8 @@ public PersistentEntityToJsonSchemaConverter jsonSchemaConverter(PersistentEntit
497
500
Associations associationLinks , @ Qualifier RepositoryInvokerFactory repositoryInvokerFactory ,
498
501
RepositoryRestConfiguration repositoryRestConfiguration ) {
499
502
500
- return new PersistentEntityToJsonSchemaConverter (persistentEntities , associationLinks , resolver , objectMapper (),
503
+ return new PersistentEntityToJsonSchemaConverter (persistentEntities , associationLinks , resolver .getObject (),
504
+ objectMapper (),
501
505
repositoryRestConfiguration , new ValueTypeSchemaPropertyCustomizerFactory (repositoryInvokerFactory ));
502
506
}
503
507
@@ -569,11 +573,11 @@ public TypeConstrainedMappingJackson2HttpMessageConverter halJacksonHttpMessageC
569
573
570
574
public ObjectMapper halObjectMapper (LinkCollector linkCollector ) {
571
575
572
- LinkRelationProvider defaultedRelProvider = this .relProvider .orElseGet (EvoInflectorLinkRelationProvider ::new );
573
- HalConfiguration halConfiguration = this .halConfiguration .orElseGet (HalConfiguration ::new );
574
-
576
+ LinkRelationProvider defaultedRelProvider = this .relProvider .getIfUnique (EvoInflectorLinkRelationProvider ::new );
577
+ HalConfiguration halConfiguration = this .halConfiguration .getIfUnique (HalConfiguration ::new );
575
578
HalHandlerInstantiator instantiator = new HalHandlerInstantiator (defaultedRelProvider ,
576
- curieProvider .orElse (new DefaultCurieProvider (Collections .emptyMap ())), resolver , halConfiguration );
579
+ curieProvider .getIfUnique (() -> new DefaultCurieProvider (Collections .emptyMap ())), resolver .getObject (),
580
+ halConfiguration );
577
581
578
582
ObjectMapper mapper = basicObjectMapper ();
579
583
mapper .registerModule (persistentEntityJackson2Module (linkCollector ));
@@ -885,7 +889,7 @@ protected ObjectMapper basicObjectMapper() {
885
889
// Configure custom Modules
886
890
configurerDelegate .get ().configureJacksonObjectMapper (objectMapper );
887
891
888
- objectMapper .registerModule (geoModule );
892
+ objectMapper .registerModule (geoModule . getObject () );
889
893
890
894
if (repositoryRestConfiguration .get ().isEnableEnumTranslation ()) {
891
895
objectMapper .registerModule (new JacksonSerializers (enumTranslator .get ()));
@@ -926,7 +930,7 @@ public RootResourceInformationToAlpsDescriptorConverter alpsConverter(Repositori
926
930
Associations associationLinks , RepositoryRestConfiguration repositoryRestConfiguration ) {
927
931
928
932
return new RootResourceInformationToAlpsDescriptorConverter (associationLinks , repositories , persistentEntities ,
929
- entityLinks , resolver , repositoryRestConfiguration , objectMapper (), enumTranslator );
933
+ entityLinks , resolver . getObject () , repositoryRestConfiguration , objectMapper (), enumTranslator );
930
934
}
931
935
932
936
@ Bean
0 commit comments