DATACMNS-1736 - Switch away from overrideable methods.
This commit is contained in:
committed by
Oliver Drotbohm
parent
c10072c96f
commit
9d12ac7324
@@ -22,11 +22,15 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||
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.core.convert.ConversionService;
|
||||
import org.springframework.data.util.Lazy;
|
||||
import org.springframework.data.web.HateoasPageableHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.HateoasSortHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.PagedResourcesAssembler;
|
||||
import org.springframework.data.web.PagedResourcesAssemblerArgumentResolver;
|
||||
import org.springframework.data.web.SortHandlerMethodArgumentResolver;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
|
||||
/**
|
||||
@@ -52,6 +56,11 @@ public class HateoasAwareSpringDataWebConfiguration extends SpringDataWebConfigu
|
||||
@Qualifier("mvcConversionService") ObjectFactory<ConversionService> conversionService) {
|
||||
super(context, conversionService);
|
||||
this.context = context;
|
||||
this.sortResolver = Lazy
|
||||
.of(() -> context.getBean("hateoasSortResolver", HateoasSortHandlerMethodArgumentResolver.class));
|
||||
this.pageableResolver = Lazy
|
||||
.of(() -> context.getBean("hateoasPageableResolver", HateoasPageableHandlerMethodArgumentResolver.class));
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -59,11 +68,10 @@ public class HateoasAwareSpringDataWebConfiguration extends SpringDataWebConfigu
|
||||
* @see org.springframework.data.web.config.SpringDataWebConfiguration#pageableResolver()
|
||||
*/
|
||||
@Bean
|
||||
@Override
|
||||
public HateoasPageableHandlerMethodArgumentResolver pageableResolver() {
|
||||
public HateoasPageableHandlerMethodArgumentResolver hateoasPageableResolver() {
|
||||
|
||||
HateoasPageableHandlerMethodArgumentResolver pageableResolver = new HateoasPageableHandlerMethodArgumentResolver(
|
||||
getSortResolverBean());
|
||||
(HateoasSortHandlerMethodArgumentResolver) this.sortResolver.get());
|
||||
customizePageableResolver(pageableResolver);
|
||||
return pageableResolver;
|
||||
}
|
||||
@@ -73,8 +81,7 @@ public class HateoasAwareSpringDataWebConfiguration extends SpringDataWebConfigu
|
||||
* @see org.springframework.data.web.config.SpringDataWebConfiguration#sortResolver()
|
||||
*/
|
||||
@Bean
|
||||
@Override
|
||||
public HateoasSortHandlerMethodArgumentResolver sortResolver() {
|
||||
public HateoasSortHandlerMethodArgumentResolver hateoasSortResolver() {
|
||||
|
||||
HateoasSortHandlerMethodArgumentResolver sortResolver = new HateoasSortHandlerMethodArgumentResolver();
|
||||
customizeSortResolver(sortResolver);
|
||||
@@ -82,13 +89,15 @@ public class HateoasAwareSpringDataWebConfiguration extends SpringDataWebConfigu
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PagedResourcesAssembler<?> pagedResourcesAssembler() {
|
||||
return new PagedResourcesAssembler<>(getPageableResolverBean(), null);
|
||||
public PagedResourcesAssembler<?> pagedResourcesAssembler(
|
||||
HateoasPageableHandlerMethodArgumentResolver pageableResolver) {
|
||||
return new PagedResourcesAssembler<>(pageableResolver, null);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PagedResourcesAssemblerArgumentResolver pagedResourcesAssemblerArgumentResolver() {
|
||||
return new PagedResourcesAssemblerArgumentResolver(getPageableResolverBean(), null);
|
||||
public PagedResourcesAssemblerArgumentResolver pagedResourcesAssemblerArgumentResolver(
|
||||
HateoasPageableHandlerMethodArgumentResolver pageableResolver) {
|
||||
return new PagedResourcesAssemblerArgumentResolver(pageableResolver, null);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -101,20 +110,4 @@ public class HateoasAwareSpringDataWebConfiguration extends SpringDataWebConfigu
|
||||
argumentResolvers
|
||||
.add(context.getBean("pagedResourcesAssemblerArgumentResolver", PagedResourcesAssemblerArgumentResolver.class));
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.data.web.config.SpringDataWebConfiguration#getSortResolverBean()
|
||||
*/
|
||||
protected HateoasSortHandlerMethodArgumentResolver getSortResolverBean() {
|
||||
return context.getBean("sortResolver", HateoasSortHandlerMethodArgumentResolver.class);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.data.web.config.SpringDataWebConfiguration#getPageableResolverBean()
|
||||
*/
|
||||
protected HateoasPageableHandlerMethodArgumentResolver getPageableResolverBean() {
|
||||
return context.getBean("pageableResolver", HateoasPageableHandlerMethodArgumentResolver.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.geo.format.DistanceFormatter;
|
||||
import org.springframework.data.geo.format.PointFormatter;
|
||||
import org.springframework.data.repository.support.DomainClassConverter;
|
||||
import org.springframework.data.util.Lazy;
|
||||
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.ProjectingJackson2HttpMessageConverter;
|
||||
import org.springframework.data.web.ProxyingHandlerMethodArgumentResolver;
|
||||
@@ -62,6 +63,9 @@ public class SpringDataWebConfiguration implements WebMvcConfigurer, BeanClassLo
|
||||
private final ObjectFactory<ConversionService> conversionService;
|
||||
private @Nullable ClassLoader beanClassLoader = ClassUtils.getDefaultClassLoader();
|
||||
|
||||
protected Lazy<SortHandlerMethodArgumentResolver> sortResolver;
|
||||
protected Lazy<PageableHandlerMethodArgumentResolver> pageableResolver;
|
||||
|
||||
private @Autowired Optional<PageableHandlerMethodArgumentResolverCustomizer> pageableResolverCustomizer;
|
||||
private @Autowired Optional<SortHandlerMethodArgumentResolverCustomizer> sortResolverCustomizer;
|
||||
|
||||
@@ -73,6 +77,9 @@ public class SpringDataWebConfiguration implements WebMvcConfigurer, BeanClassLo
|
||||
|
||||
this.context = context;
|
||||
this.conversionService = conversionService;
|
||||
this.sortResolver = Lazy.of(() -> context.getBean("sortResolver", SortHandlerMethodArgumentResolver.class));
|
||||
this.pageableResolver = Lazy
|
||||
.of(() -> context.getBean("pageableResolver", PageableHandlerMethodArgumentResolver.class));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -89,10 +96,10 @@ public class SpringDataWebConfiguration implements WebMvcConfigurer, BeanClassLo
|
||||
* @see org.springframework.data.web.config.SpringDataWebConfiguration#pageableResolver()
|
||||
*/
|
||||
@Bean
|
||||
public PageableHandlerMethodArgumentResolver pageableResolver() {
|
||||
public PageableHandlerMethodArgumentResolver pageableResolver(SortHandlerMethodArgumentResolver sortResolver) {
|
||||
|
||||
PageableHandlerMethodArgumentResolver pageableResolver = //
|
||||
new PageableHandlerMethodArgumentResolver(getSortResolverBean());
|
||||
new PageableHandlerMethodArgumentResolver(sortResolver);
|
||||
customizePageableResolver(pageableResolver);
|
||||
return pageableResolver;
|
||||
}
|
||||
@@ -136,8 +143,8 @@ public class SpringDataWebConfiguration implements WebMvcConfigurer, BeanClassLo
|
||||
@Override
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
|
||||
|
||||
argumentResolvers.add(getSortResolverBean());
|
||||
argumentResolvers.add(getPageableResolverBean());
|
||||
argumentResolvers.add(this.sortResolver.get());
|
||||
argumentResolvers.add(this.pageableResolver.get());
|
||||
|
||||
ProxyingHandlerMethodArgumentResolver resolver = new ProxyingHandlerMethodArgumentResolver(conversionService, true);
|
||||
resolver.setBeanFactory(context);
|
||||
@@ -172,14 +179,6 @@ public class SpringDataWebConfiguration implements WebMvcConfigurer, BeanClassLo
|
||||
}
|
||||
}
|
||||
|
||||
protected SortHandlerMethodArgumentResolver getSortResolverBean() {
|
||||
return context.getBean("sortResolver", SortHandlerMethodArgumentResolver.class);
|
||||
}
|
||||
|
||||
protected PageableHandlerMethodArgumentResolver getPageableResolverBean() {
|
||||
return context.getBean("pageableResolver", PageableHandlerMethodArgumentResolver.class);
|
||||
}
|
||||
|
||||
protected void customizePageableResolver(PageableHandlerMethodArgumentResolver pageableResolver) {
|
||||
pageableResolverCustomizer.ifPresent(c -> c.customize(pageableResolver));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user