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