34
34
/**
35
35
* Base class providing methods for handler method argument resolvers to create paging information from web requests and
36
36
* thus allows injecting {@link Pageable} instances into controller methods. Request properties to be parsed can be
37
- * configured.
37
+ * configured defaulting to {@code page} for the page number and {@code size} for the page size.
38
+ * <p>
39
+ * Parameters can be {@link #setPrefix(String) prefixed} to disambiguate from other parameters in the request if
40
+ * necessary.
38
41
*
39
42
* @author Mark Paluch
40
43
* @author Vedran Pavic
@@ -153,7 +156,7 @@ protected String getSizeParameterName() {
153
156
*
154
157
* @param prefix the prefix to be used or {@literal null} to reset to the default.
155
158
*/
156
- public void setPrefix (String prefix ) {
159
+ public void setPrefix (@ Nullable String prefix ) {
157
160
this .prefix = prefix == null ? DEFAULT_PREFIX : prefix ;
158
161
}
159
162
@@ -163,7 +166,7 @@ public void setPrefix(String prefix) {
163
166
*
164
167
* @param qualifierDelimiter the delimiter to be used or {@literal null} to reset to the default.
165
168
*/
166
- public void setQualifierDelimiter (String qualifierDelimiter ) {
169
+ public void setQualifierDelimiter (@ Nullable String qualifierDelimiter ) {
167
170
this .qualifierDelimiter = qualifierDelimiter == null ? DEFAULT_QUALIFIER_DELIMITER : qualifierDelimiter ;
168
171
}
169
172
@@ -198,7 +201,7 @@ protected Pageable getPageable(MethodParameter methodParameter, @Nullable String
198
201
Optional <Integer > page = parseAndApplyBoundaries (pageString , Integer .MAX_VALUE , true );
199
202
Optional <Integer > pageSize = parseAndApplyBoundaries (pageSizeString , maxPageSize , false );
200
203
201
- if (!(page .isPresent () && pageSize .isPresent ()) && ! defaultOrFallback .isPresent ()) {
204
+ if (!(page .isPresent () && pageSize .isPresent ()) && defaultOrFallback .isEmpty ()) {
202
205
return Pageable .unpaged ();
203
206
}
204
207
@@ -210,7 +213,7 @@ protected Pageable getPageable(MethodParameter methodParameter, @Nullable String
210
213
// Limit lower bound
211
214
ps = ps < 1 ? defaultOrFallback .map (Pageable ::getPageSize ).orElseThrow (IllegalStateException ::new ) : ps ;
212
215
// Limit upper bound
213
- ps = ps > maxPageSize ? maxPageSize : ps ;
216
+ ps = Math . min ( ps , maxPageSize ) ;
214
217
215
218
return PageRequest .of (p , ps , defaultOrFallback .map (Pageable ::getSort ).orElseGet (Sort ::unsorted ));
216
219
}
@@ -286,7 +289,7 @@ private Optional<Integer> parseAndApplyBoundaries(@Nullable String parameter, in
286
289
287
290
try {
288
291
int parsed = Integer .parseInt (parameter ) - (oneIndexedParameters && shiftIndex ? 1 : 0 );
289
- return Optional .of (parsed < 0 ? 0 : parsed > upper ? upper : parsed );
292
+ return Optional .of (parsed < 0 ? 0 : Math . min ( parsed , upper ) );
290
293
} catch (NumberFormatException e ) {
291
294
return Optional .of (0 );
292
295
}
0 commit comments