DATACMNS-477 - PageableHandlerMethodArgumentResolver now handles null default.

We now explicitly check for the configured default being null and subsequently return that value if we don't have both the page and the size parameter configured.
This commit is contained in:
Oliver Gierke
2014-03-26 18:15:16 +01:00
parent de1e9ac684
commit f33f57b887
3 changed files with 65 additions and 3 deletions

View File

@@ -51,7 +51,8 @@ public abstract class PageableDefaultUnitTests {
static final AbstractPageRequest REFERENCE_WITHOUT_SORT = new PageRequest(PAGE_NUMBER, PAGE_SIZE);
static final AbstractPageRequest REFERENCE_WITH_SORT = new PageRequest(PAGE_NUMBER, PAGE_SIZE, SORT);
static final AbstractPageRequest REFERENCE_WITH_SORT_FIELDS = new PageRequest(PAGE_NUMBER, PAGE_SIZE, new Sort(SORT_FIELDS));
static final AbstractPageRequest REFERENCE_WITH_SORT_FIELDS = new PageRequest(PAGE_NUMBER, PAGE_SIZE, new Sort(
SORT_FIELDS));
@Rule public ExpectedException exception = ExpectedException.none();
@@ -140,7 +141,12 @@ public abstract class PageableDefaultUnitTests {
protected void assertSupportedAndResult(MethodParameter parameter, Pageable pageable, NativeWebRequest request)
throws Exception {
HandlerMethodArgumentResolver resolver = getResolver();
assertSupportedAndResult(parameter, pageable, request, getResolver());
}
protected void assertSupportedAndResult(MethodParameter parameter, Pageable pageable, NativeWebRequest request,
HandlerMethodArgumentResolver resolver) throws Exception {
assertThat(resolver.supportsParameter(parameter), is(true));
assertThat(resolver.resolveArgument(parameter, null, request, null), is((Object) pageable));
}

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.data.web;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.springframework.data.web.PageableHandlerMethodArgumentResolver.*;
import org.junit.Before;
@@ -26,6 +28,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.web.SortDefault.SortDefaults;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.web.context.request.ServletWebRequest;
/**
* Unit tests for {@link PageableHandlerMethodArgumentResolver}. Pulls in defaulting tests from
@@ -152,6 +155,51 @@ public class PageableHandlerMethodArgumentResolverUnitTests extends PageableDefa
assertSupportedAndResult(supportedMethodParameter, DEFAULT_PAGE_REQUEST, request);
}
/**
* @see DATACMNS-477
*/
@Test
public void returnsNullIfFallbackIsNullAndNoParametersGiven() throws Exception {
PageableHandlerMethodArgumentResolver resolver = getResolver();
resolver.setFallbackPageable(null);
assertSupportedAndResult(supportedMethodParameter, null, new ServletWebRequest(new MockHttpServletRequest()),
resolver);
}
/**
* @see DATACMNS-477
*/
@Test
public void returnsNullIfFallbackIsNullAndOnlyPageIsGiven() throws Exception {
PageableHandlerMethodArgumentResolver resolver = getResolver();
resolver.setFallbackPageable(null);
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("page", "20");
assertThat(resolver.resolveArgument(supportedMethodParameter, null, new ServletWebRequest(request), null),
is(nullValue()));
}
/**
* @see DATACMNS-477
*/
@Test
public void returnsNullIfFallbackIsNullAndOnlySizeIsGiven() throws Exception {
PageableHandlerMethodArgumentResolver resolver = getResolver();
resolver.setFallbackPageable(null);
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("size", "10");
assertThat(resolver.resolveArgument(supportedMethodParameter, null, new ServletWebRequest(request), null),
is(nullValue()));
}
@Override
protected PageableHandlerMethodArgumentResolver getResolver() {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();