@@ -54,19 +54,30 @@ public static <T> Page<T> getPage(List<T> content, Pageable pageable, LongSuppli
54
54
Assert .notNull (pageable , "Pageable must not be null" );
55
55
Assert .notNull (totalSupplier , "TotalSupplier must not be null" );
56
56
57
- if (pageable .isUnpaged () || pageable .getOffset () == 0 ) {
58
-
59
- if (pageable .isUnpaged () || pageable .getPageSize () > content .size ()) {
60
- return new PageImpl <>(content , pageable , content .size ());
61
- }
57
+ if (pageable .isUnpaged ()) {
58
+ return new PageImpl <>(content , pageable , content .size ());
59
+ }
62
60
63
- return new PageImpl <>(content , pageable , totalSupplier .getAsLong ());
61
+ if (isFirstPage (pageable ) && isPartialPage (content , pageable )) {
62
+ return new PageImpl <>(content , pageable , content .size ());
64
63
}
65
64
66
- if (content . size () != 0 && pageable . getPageSize () > content . size ( )) {
65
+ if (isSubsequentPage ( pageable ) && ! content . isEmpty () && isPartialPage ( content , pageable )) {
67
66
return new PageImpl <>(content , pageable , pageable .getOffset () + content .size ());
68
67
}
69
68
70
69
return new PageImpl <>(content , pageable , totalSupplier .getAsLong ());
71
70
}
71
+
72
+ private static <T > boolean isPartialPage (List <T > content , Pageable pageable ) {
73
+ return pageable .getPageSize () > content .size ();
74
+ }
75
+
76
+ private static boolean isFirstPage (Pageable pageable ) {
77
+ return pageable .getOffset () == 0 ;
78
+ }
79
+
80
+ private static boolean isSubsequentPage (Pageable pageable ) {
81
+ return !isFirstPage (pageable );
82
+ }
72
83
}
0 commit comments