Skip to content

Commit 67697f6

Browse files
committed
DATACMNS-640 - Fixed potential NullPointerException in PageableHandlerMethodArgumentResolver.
We now double check the fallback Pageable for being null before trying to lookup the Sort to fall back.
1 parent 394d82c commit 67697f6

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolver.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,11 @@ public Pageable resolveArgument(MethodParameter methodParameter, ModelAndViewCon
235235
pageSize = pageSize > maxPageSize ? maxPageSize : pageSize;
236236

237237
Sort sort = sortResolver.resolveArgument(methodParameter, mavContainer, webRequest, binderFactory);
238-
return new PageRequest(page, pageSize, sort == null ? defaultOrFallback.getSort() : sort);
238+
239+
// Default if necessary and default configured
240+
sort = sort == null && defaultOrFallback != null ? defaultOrFallback.getSort() : sort;
241+
242+
return new PageRequest(page, pageSize, sort);
239243
}
240244

241245
/**

src/test/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverUnitTests.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,26 @@ public void considersOneIndexedParametersSetting() {
216216
.getPageNumber(), is(0));
217217
}
218218

219+
/**
220+
* @see DATACMNS-640
221+
*/
222+
@Test
223+
public void usesNullSortIfNoDefaultIsConfiguredAndPageAndSizeAreGiven() {
224+
225+
PageableHandlerMethodArgumentResolver resolver = getResolver();
226+
resolver.setFallbackPageable(null);
227+
228+
MockHttpServletRequest request = new MockHttpServletRequest();
229+
request.addParameter("page", "0");
230+
request.addParameter("size", "10");
231+
232+
Pageable result = resolver.resolveArgument(supportedMethodParameter, null, new ServletWebRequest(request), null);
233+
234+
assertThat(result.getPageNumber(), is(0));
235+
assertThat(result.getPageSize(), is(10));
236+
assertThat(result.getSort(), is(nullValue()));
237+
}
238+
219239
@Override
220240
protected PageableHandlerMethodArgumentResolver getResolver() {
221241
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();

0 commit comments

Comments
 (0)