DATAREST-910 - Adopt interfaces for Pageable and Sort method argument resolvers.

Original pull request: #232.
This commit is contained in:
Mark Paluch
2016-09-27 11:06:25 +02:00
committed by Oliver Gierke
parent 7855613415
commit 24d26943af
4 changed files with 22 additions and 21 deletions

View File

@@ -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()));

View File

@@ -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 {

View File

@@ -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);
}
}

View File

@@ -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);
}
}