DATAREST-910 - Adopt interfaces for Pageable and Sort method argument resolvers.
Original pull request: #232.
This commit is contained in:
committed by
Oliver Gierke
parent
7855613415
commit
24d26943af
@@ -116,6 +116,7 @@ import org.springframework.data.rest.webmvc.support.RepositoryEntityLinks;
|
||||
import org.springframework.data.util.AnnotatedTypeScanner;
|
||||
import org.springframework.data.web.HateoasPageableHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.HateoasSortHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
||||
import org.springframework.data.web.config.HateoasAwareSpringDataWebConfiguration;
|
||||
import org.springframework.data.web.config.SpringDataJacksonConfiguration;
|
||||
@@ -801,7 +802,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
||||
persistentEntities(), selfLinkProvider(), config().getProjectionConfiguration(), projectionFactory,
|
||||
associationLinks());
|
||||
|
||||
HateoasPageableHandlerMethodArgumentResolver pageableResolver = pageableResolver();
|
||||
PageableHandlerMethodArgumentResolver pageableResolver = pageableResolver();
|
||||
|
||||
JacksonMappingAwareSortTranslator sortTranslator = new JacksonMappingAwareSortTranslator(objectMapper(),
|
||||
repositories(), DomainClassResolver.of(repositories(), resourceMappings(), baseUri()));
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Oliver Gierke
|
||||
* @since 2.6, 2.5.3
|
||||
* @since 2.6
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class MappingAwareDefaultedPageableArgumentResolver implements HandlerMethodArgumentResolver {
|
||||
|
||||
@@ -22,15 +22,15 @@ import org.springframework.core.MethodParameter;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
|
||||
import org.springframework.data.web.PageableArgumentResolver;
|
||||
import org.springframework.web.bind.support.WebDataBinderFactory;
|
||||
import org.springframework.web.context.request.NativeWebRequest;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
|
||||
/**
|
||||
* {@link HandlerMethodArgumentResolver} to resolve {@link Pageable} from a
|
||||
* {@link PageableHandlerMethodArgumentResolver} applying field to property mapping.
|
||||
* {@link HandlerMethodArgumentResolver} to resolve {@link Pageable} from a {@link PageableArgumentResolver} applying
|
||||
* field to property mapping.
|
||||
* <p>
|
||||
* A resolved {@link Pageable} is post-processed by applying Jackson field-to-property mapping if it contains a
|
||||
* {@link Sort} instance. Customized fields are resolved to their property names. Unknown properties are removed from
|
||||
@@ -38,13 +38,13 @@ import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Oliver Gierke
|
||||
* @since 2.6, 2.5.3
|
||||
* @since 2.6
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class MappingAwarePageableArgumentResolver implements HandlerMethodArgumentResolver {
|
||||
public class MappingAwarePageableArgumentResolver implements HandlerMethodArgumentResolver, PageableArgumentResolver {
|
||||
|
||||
private final @NonNull JacksonMappingAwareSortTranslator translator;
|
||||
private final @NonNull PageableHandlerMethodArgumentResolver delegate;
|
||||
private final @NonNull PageableArgumentResolver delegate;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
@@ -57,20 +57,19 @@ public class MappingAwarePageableArgumentResolver implements HandlerMethodArgume
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.web.method.support.HandlerMethodArgumentResolver#resolveArgument(org.springframework.core.MethodParameter, org.springframework.web.method.support.ModelAndViewContainer, org.springframework.web.context.request.NativeWebRequest, org.springframework.web.bind.support.WebDataBinderFactory)
|
||||
* @see org.springframework.data.web.PageableArgumentResolver#resolveArgument(org.springframework.core.MethodParameter, org.springframework.web.method.support.ModelAndViewContainer, org.springframework.web.context.request.NativeWebRequest, org.springframework.web.bind.support.WebDataBinderFactory)
|
||||
*/
|
||||
@Override
|
||||
public Pageable resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
|
||||
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
|
||||
public Pageable resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer,
|
||||
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
|
||||
|
||||
Pageable pageable = delegate.resolveArgument(parameter, mavContainer, webRequest, binderFactory);
|
||||
Pageable pageable = delegate.resolveArgument(methodParameter, mavContainer, webRequest, binderFactory);
|
||||
|
||||
if (pageable == null || pageable.getSort() == null) {
|
||||
return pageable;
|
||||
}
|
||||
|
||||
Sort translated = translator.translateSort(pageable.getSort(), parameter, webRequest);
|
||||
Sort translated = translator.translateSort(pageable.getSort(), methodParameter, webRequest);
|
||||
return new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), translated);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import lombok.RequiredArgsConstructor;
|
||||
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.web.SortArgumentResolver;
|
||||
import org.springframework.data.web.SortHandlerMethodArgumentResolver;
|
||||
import org.springframework.web.bind.support.WebDataBinderFactory;
|
||||
import org.springframework.web.context.request.NativeWebRequest;
|
||||
@@ -35,13 +36,13 @@ import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Oliver Gierke
|
||||
* @since 2.6, 2.5.3
|
||||
* @since 2.6
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class MappingAwareSortArgumentResolver implements HandlerMethodArgumentResolver {
|
||||
public class MappingAwareSortArgumentResolver implements HandlerMethodArgumentResolver, SortArgumentResolver {
|
||||
|
||||
private final @NonNull JacksonMappingAwareSortTranslator translator;
|
||||
private final @NonNull SortHandlerMethodArgumentResolver delegate;
|
||||
private final @NonNull SortArgumentResolver delegate;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
@@ -57,11 +58,11 @@ public class MappingAwareSortArgumentResolver implements HandlerMethodArgumentRe
|
||||
* @see org.springframework.web.method.support.HandlerMethodArgumentResolver#resolveArgument(org.springframework.core.MethodParameter, org.springframework.web.method.support.ModelAndViewContainer, org.springframework.web.context.request.NativeWebRequest, org.springframework.web.bind.support.WebDataBinderFactory)
|
||||
*/
|
||||
@Override
|
||||
public Sort resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
|
||||
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
|
||||
public Sort resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer,
|
||||
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
|
||||
|
||||
Sort sort = delegate.resolveArgument(parameter, mavContainer, webRequest, binderFactory);
|
||||
Sort sort = delegate.resolveArgument(methodParameter, mavContainer, webRequest, binderFactory);
|
||||
|
||||
return sort == null ? null : translator.translateSort(sort, parameter, webRequest);
|
||||
return sort == null ? null : translator.translateSort(sort, methodParameter, webRequest);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user