Skip to content

Commit 2b4d173

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 57a42ab commit 2b4d173

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,11 @@ public Pageable resolveArgument(MethodParameter methodParameter, ModelAndViewCon
246246
pageSize = pageSize > maxPageSize ? maxPageSize : pageSize;
247247

248248
Sort sort = sortResolver.resolveArgument(methodParameter, mavContainer, webRequest, binderFactory);
249-
return new PageRequest(page, pageSize, sort == null ? defaultOrFallback.getSort() : sort);
249+
250+
// Default if necessary and default configured
251+
sort = sort == null && defaultOrFallback != null ? defaultOrFallback.getSort() : sort;
252+
253+
return new PageRequest(page, pageSize, sort);
250254
}
251255

252256
/**

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

+20
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)