3434/**
3535 * Base class providing methods for handler method argument resolvers to create paging information from web requests and
3636 * 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.
3841 *
3942 * @author Mark Paluch
4043 * @author Vedran Pavic
@@ -153,7 +156,7 @@ protected String getSizeParameterName() {
153156 *
154157 * @param prefix the prefix to be used or {@literal null} to reset to the default.
155158 */
156- public void setPrefix (String prefix ) {
159+ public void setPrefix (@ Nullable String prefix ) {
157160 this .prefix = prefix == null ? DEFAULT_PREFIX : prefix ;
158161 }
159162
@@ -163,7 +166,7 @@ public void setPrefix(String prefix) {
163166 *
164167 * @param qualifierDelimiter the delimiter to be used or {@literal null} to reset to the default.
165168 */
166- public void setQualifierDelimiter (String qualifierDelimiter ) {
169+ public void setQualifierDelimiter (@ Nullable String qualifierDelimiter ) {
167170 this .qualifierDelimiter = qualifierDelimiter == null ? DEFAULT_QUALIFIER_DELIMITER : qualifierDelimiter ;
168171 }
169172
@@ -198,7 +201,7 @@ protected Pageable getPageable(MethodParameter methodParameter, @Nullable String
198201 Optional <Integer > page = parseAndApplyBoundaries (pageString , Integer .MAX_VALUE , true );
199202 Optional <Integer > pageSize = parseAndApplyBoundaries (pageSizeString , maxPageSize , false );
200203
201- if (!(page .isPresent () && pageSize .isPresent ()) && ! defaultOrFallback .isPresent ()) {
204+ if (!(page .isPresent () && pageSize .isPresent ()) && defaultOrFallback .isEmpty ()) {
202205 return Pageable .unpaged ();
203206 }
204207
@@ -210,7 +213,7 @@ protected Pageable getPageable(MethodParameter methodParameter, @Nullable String
210213 // Limit lower bound
211214 ps = ps < 1 ? defaultOrFallback .map (Pageable ::getPageSize ).orElseThrow (IllegalStateException ::new ) : ps ;
212215 // Limit upper bound
213- ps = ps > maxPageSize ? maxPageSize : ps ;
216+ ps = Math . min ( ps , maxPageSize ) ;
214217
215218 return PageRequest .of (p , ps , defaultOrFallback .map (Pageable ::getSort ).orElseGet (Sort ::unsorted ));
216219 }
@@ -286,7 +289,7 @@ private Optional<Integer> parseAndApplyBoundaries(@Nullable String parameter, in
286289
287290 try {
288291 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 ) );
290293 } catch (NumberFormatException e ) {
291294 return Optional .of (0 );
292295 }
0 commit comments