diff --git a/api/src/main/java/jakarta/data/Limit.java b/api/src/main/java/jakarta/data/Limit.java index 39e9fafbf..030e836d5 100644 --- a/api/src/main/java/jakarta/data/Limit.java +++ b/api/src/main/java/jakarta/data/Limit.java @@ -104,15 +104,35 @@ public int maxResults() { // Override to provide method documentation: /** - *
Offset at which to start when returning query results. - * The first query result is position {@code 1}.
+ *The position at which to start when returning query results.
+ *The first query result is at position one. If the start position + * is greater than one, some results at the beginning of the result set + * are skipped.
* - * @return offset of the first result. + * @return position of the first result. + * + * @apiNote Positions are indexed from one; + * {@linkplain #startOffset offsets} are indexed from zero. */ public long startAt() { return startAt; } + /** + *The offset at which to start when returning query results.
+ *The first query result is at offset zero. If the start offset + * is strictly positive, some results at the beginning of the result + * set are skipped.
+ * + * @return offset of the first result. + * + * @apiNote Offsets are indexed from zero; + * {@linkplain #startAt positions} are indexed from one. + */ + public long startOffset() { + return startAt() - 1; + } + /** *Create a limit that caps the number of results at the * specified maximum, starting from the first result.
@@ -126,6 +146,36 @@ public static Limit of(int maxResults) { return new Limit(maxResults, DEFAULT_START_AT); } + /** + *Specify the position at which to start returning query results.
+ *The first query result is at position one. If the start position + * is greater than one, some results at the beginning of the result set + * are skipped.
+ * + * @param startAt position of the first result. + * + * @apiNote Positions are indexed from one; + * {@linkplain #withStartOffset offsets} are indexed from zero. + */ + public Limit withStartAt(int startAt) { + return new Limit(maxResults, startAt); + } + + /** + *Specify the offset at which to start returning query results.
+ *The first query result is at offset zero. If the start offset + * is strictly positive, some results at the beginning of the result + * set are skipped.
+ * + * @param startOffset offset of the first result. + * + * @apiNote Offsets are indexed from zero; + * {@linkplain #withStartAt positions} are indexed from one. + */ + public Limit withStartOffset(long startOffset) { + return new Limit(maxResults, startOffset+1); + } + /** *Create a limit that restricts the results to a range, * beginning with the {@code startAt} position and ending after the diff --git a/api/src/main/java/jakarta/data/page/CursoredPage.java b/api/src/main/java/jakarta/data/page/CursoredPage.java index 3004ba63d..9fa808310 100644 --- a/api/src/main/java/jakarta/data/page/CursoredPage.java +++ b/api/src/main/java/jakarta/data/page/CursoredPage.java @@ -93,7 +93,7 @@ *
{@code
* Employee emp = ...
* PageRequest pageRequest =
- * PageRequest.ofPage(5)
+ * PageRequest.ofSize(10).atPageNumber(5)
* .size(50)
* .afterCursor(Cursor.forKey(emp.lastName, emp.firstName, emp.id));
* page = employees.withHoursOver(40, pageRequest);
diff --git a/api/src/main/java/jakarta/data/page/PageRequest.java b/api/src/main/java/jakarta/data/page/PageRequest.java
index 10fe0313a..23fec3732 100644
--- a/api/src/main/java/jakarta/data/page/PageRequest.java
+++ b/api/src/main/java/jakarta/data/page/PageRequest.java
@@ -84,7 +84,10 @@ public interface PageRequest {
* {@code null}.
* @throws IllegalArgumentException when the page number is negative or
* zero.
+ * @deprecated Use {@link #ofPage(long, int, boolean)}
+ * or {@link #ofSize} and {@link #atPageNumber}.
*/
+ @Deprecated(since = "1.1", forRemoval = true)
static PageRequest ofPage(long pageNumber) {
return new Pagination(pageNumber, 10, Mode.OFFSET, null, true);
}
@@ -223,11 +226,40 @@ static PageRequest beforeCursor(Cursor cursor, long pageNumber, int maxPageSize,
Mode mode();
/**
- * Returns the page to be returned.
+ * Returns the page number of the page to be returned.
*
* @return the page to be returned.
+ * @since 1.1
+ *
+ * @apiNote Page numbers are indexed from one;
+ * page {@linkplain #pageOffset offsets} are indexed from zero.
+ */
+ long pageNumber();
+
+ /**
+ * Returns the page offset of the page to be returned.
+ *
+ * @return the page to be returned.
+ * @since 1.1
+ *
+ * @apiNote Page offsets are indexed from zero;
+ * page {@linkplain #pageNumber numbers} are indexed from one.
+ */
+ default long pageOffset() {
+ return pageNumber() - 1;
+ }
+
+ /**
+ * Returns the page number of the page to be returned.
+ *
+ * @return the page to be returned.
+ *
+ * @deprecated Use {@link #pageNumber}
*/
- long page();
+ @Deprecated(since = "1.1", forRemoval = true)
+ default long page() {
+ return pageNumber();
+ }
/**
* Returns the requested size of each page
@@ -266,8 +298,27 @@ static PageRequest beforeCursor(Cursor cursor, long pageNumber, int maxPageSize,
* @return a new instance of {@code PageRequest}. This method never returns
* {@code null}.
* @since 1.1
+ *
+ * @apiNote Page numbers are indexed from one;
+ * page {@linkplain #atPageOffset offsets} are indexed from zero.
+ */
+ PageRequest atPageNumber(long pageNumber);
+
+ /**
+ * Creates a new page request with the same pagination information,
+ * but with the specified page offset.
+ *
+ * @param pageOffset the page offset.
+ * @return a new instance of {@code PageRequest}. This method never returns
+ * {@code null}.
+ * @since 1.1
+ *
+ * @apiNote Page offsets are indexed from zero;
+ * page {@linkplain #atPageNumber numbers} are indexed from one.
*/
- PageRequest page(long pageNumber);
+ default PageRequest atPageOffset(long pageOffset) {
+ return atPageNumber(pageOffset + 1);
+ }
/**
* Creates a new page request with the same pagination information,
diff --git a/api/src/main/java/jakarta/data/page/Pagination.java b/api/src/main/java/jakarta/data/page/Pagination.java
index 80b953641..d47a4cae2 100644
--- a/api/src/main/java/jakarta/data/page/Pagination.java
+++ b/api/src/main/java/jakarta/data/page/Pagination.java
@@ -24,12 +24,12 @@
/**
* Built-in implementation of PageRequest.
*/
-record Pagination(long page, int size, Mode mode, Cursor type,
+record Pagination(long pageNumber, int size, Mode mode, Cursor type,
boolean requestTotal) implements PageRequest {
Pagination {
- if (page < 1) {
- throw new IllegalArgumentException("pageNumber: " + page);
+ if (pageNumber < 1) {
+ throw new IllegalArgumentException("pageNumber: " + pageNumber);
} else if (size < 1) {
throw new IllegalArgumentException("maxPageSize: " + size);
}
@@ -42,22 +42,22 @@ record Pagination(long page, int size, Mode mode, Cursor type,
@Override
public PageRequest withoutTotal() {
- return new Pagination(page, size, mode, type, false);
+ return new Pagination(pageNumber, size, mode, type, false);
}
@Override
public PageRequest withTotal() {
- return new Pagination(page, size, mode, type, true);
+ return new Pagination(pageNumber, size, mode, type, true);
}
@Override
public PageRequest afterCursor(Cursor cursor) {
- return new Pagination(page, size, Mode.CURSOR_NEXT, cursor, requestTotal);
+ return new Pagination(pageNumber, size, Mode.CURSOR_NEXT, cursor, requestTotal);
}
@Override
public PageRequest beforeCursor(Cursor cursor) {
- return new Pagination(page, size, Mode.CURSOR_PREVIOUS, cursor, requestTotal);
+ return new Pagination(pageNumber, size, Mode.CURSOR_PREVIOUS, cursor, requestTotal);
}
@Override
@@ -68,7 +68,7 @@ public Optional cursor() {
@Override
public String toString() {
StringBuilder s = new StringBuilder(mode == Mode.OFFSET ? 100 : 150)
- .append("PageRequest{page=").append(page)
+ .append("PageRequest{pageNumber=").append(pageNumber)
.append(", size=").append(size)
.append(", mode=").append(mode);
if (type != null) {
@@ -79,11 +79,11 @@ public String toString() {
@Override
public PageRequest size(int maxPageSize) {
- return new Pagination(page, maxPageSize, mode, type, requestTotal);
+ return new Pagination(pageNumber, maxPageSize, mode, type, requestTotal);
}
@Override
- public PageRequest page(long pageNumber) {
+ public PageRequest atPageNumber(long pageNumber) {
return new Pagination(pageNumber, size, mode, type, requestTotal);
}
diff --git a/api/src/main/java/jakarta/data/page/impl/CursoredPageRecord.java b/api/src/main/java/jakarta/data/page/impl/CursoredPageRecord.java
index e13ea0420..57ba2e293 100644
--- a/api/src/main/java/jakarta/data/page/impl/CursoredPageRecord.java
+++ b/api/src/main/java/jakarta/data/page/impl/CursoredPageRecord.java
@@ -82,12 +82,12 @@ public CursoredPageRecord(List content,
this(content, cursors, totalElements, pageRequest,
lastPage ? null : PageRequest.afterCursor(
cursors.get(cursors.size() - 1),
- pageRequest.page() + 1,
+ pageRequest.pageNumber() + 1,
pageRequest.size(),
pageRequest.requestTotal()),
firstPage ? null : PageRequest.beforeCursor(
cursors.get(0),
- pageRequest.page() == 1 ? 1 : pageRequest.page() - 1,
+ pageRequest.pageNumber() == 1 ? 1 : pageRequest.pageNumber() - 1,
pageRequest.size(),
pageRequest.requestTotal()));
}
diff --git a/api/src/main/java/jakarta/data/page/impl/PageRecord.java b/api/src/main/java/jakarta/data/page/impl/PageRecord.java
index 73e2688f0..ab18de40d 100644
--- a/api/src/main/java/jakarta/data/page/impl/PageRecord.java
+++ b/api/src/main/java/jakarta/data/page/impl/PageRecord.java
@@ -59,7 +59,7 @@ public PageRecord(PageRequest pageRequest,
* as {@code true} if the page {@code content} is a full page of results and
* the {@code totalElements} is either unavailable (indicated by a negative
* value) or it exceeds the current
- * {@linkplain PageRequest#page() page number} multiplied by the
+ * {@linkplain PageRequest#pageNumber() page number} multiplied by the
* {@link PageRequest#size() size} of a full page.
*
* @param pageRequest The {@link PageRequest page request} for which this
@@ -74,7 +74,7 @@ public PageRecord(PageRequest pageRequest, List content, long totalElements)
this(pageRequest, content, totalElements,
content.size() == pageRequest.size()
&& (totalElements < 0
- || totalElements > pageRequest.size() * pageRequest.page()));
+ || totalElements > pageRequest.size() * pageRequest.pageNumber()));
}
@Override
@@ -98,14 +98,14 @@ public PageRequest nextPageRequest() {
throw new NoSuchElementException();
}
- return PageRequest.ofPage(pageRequest.page() + 1,
+ return PageRequest.ofPage(pageRequest.pageNumber() + 1,
pageRequest.size(),
pageRequest.requestTotal());
}
@Override
public boolean hasPrevious() {
- return pageRequest.page() > 1;
+ return pageRequest.pageNumber() > 1;
}
@Override
@@ -114,7 +114,7 @@ public PageRequest previousPageRequest() {
throw new NoSuchElementException();
}
- return PageRequest.ofPage(pageRequest.page() - 1,
+ return PageRequest.ofPage(pageRequest.pageNumber() - 1,
pageRequest.size(),
pageRequest.requestTotal());
}
diff --git a/api/src/test/java/jakarta/data/page/PageRequestCursorTest.java b/api/src/test/java/jakarta/data/page/PageRequestCursorTest.java
index d39b89b9e..a102d6613 100644
--- a/api/src/test/java/jakarta/data/page/PageRequestCursorTest.java
+++ b/api/src/test/java/jakarta/data/page/PageRequestCursorTest.java
@@ -36,7 +36,7 @@ void shouldCreatePageRequestAfterKeys() {
assertSoftly(softly -> {
softly.assertThat(pageRequest.size()).isEqualTo(20);
- softly.assertThat(pageRequest.page()).isEqualTo(1L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(1L);
softly.assertThat(pageRequest.requestTotal()).isEqualTo(false);
softly.assertThat(pageRequest.mode()).isEqualTo(PageRequest.Mode.CURSOR_NEXT);
softly.assertThat(pageRequest.cursor()).get().extracting(PageRequest.Cursor::size).isEqualTo(3);
@@ -54,7 +54,7 @@ void shouldCreatePageRequestAfterCursor() {
assertSoftly(softly -> {
softly.assertThat(pageRequest.size()).isEqualTo(35);
- softly.assertThat(pageRequest.page()).isEqualTo(1L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(1L);
softly.assertThat(pageRequest.mode()).isEqualTo(PageRequest.Mode.CURSOR_NEXT);
softly.assertThat(pageRequest.cursor()).get().extracting(PageRequest.Cursor::size).isEqualTo(2);
softly.assertThat(pageRequest.cursor()).get().extracting(c -> c.get(0)).isEqualTo("me");
@@ -70,7 +70,7 @@ void shouldCreatePageRequestBeforeKey() {
assertSoftly(softly -> {
softly.assertThat(pageRequest.size()).isEqualTo(30);
- softly.assertThat(pageRequest.page()).isEqualTo(10L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(10L);
softly.assertThat(pageRequest.requestTotal()).isEqualTo(false);
softly.assertThat(pageRequest.mode()).isEqualTo(PageRequest.Mode.CURSOR_PREVIOUS);
softly.assertThat(pageRequest.cursor()).get().extracting(PageRequest.Cursor::size).isEqualTo(2);
@@ -83,11 +83,11 @@ void shouldCreatePageRequestBeforeKey() {
@DisplayName("Should include key values in previous PageRequest from Cursor")
void shouldCreatePageRequestBeforeKeysetCursor() {
PageRequest.Cursor cursor = new PageRequestCursor(900L, 300, "testing", 120, 'T');
- PageRequest pageRequest = PageRequest.ofPage(8).beforeCursor(cursor);
+ PageRequest pageRequest = PageRequest.ofSize(10).atPageNumber(8).beforeCursor(cursor);
assertSoftly(softly -> {
softly.assertThat(pageRequest.size()).isEqualTo(10);
- softly.assertThat(pageRequest.page()).isEqualTo(8L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(8L);
softly.assertThat(pageRequest.mode()).isEqualTo(PageRequest.Mode.CURSOR_PREVIOUS);
softly.assertThat(pageRequest.cursor()).get().extracting(PageRequest.Cursor::size).isEqualTo(5);
softly.assertThat(pageRequest.cursor()).get().extracting(c -> c.get(0)).isEqualTo(900L);
@@ -130,10 +130,10 @@ void shouldPageRequestDisplayAsString() {
assertSoftly(softly -> {
softly.assertThat(afterKeySet.toString())
- .isEqualTo("PageRequest{page=1, size=200, mode=CURSOR_NEXT, cursor size=2}");
+ .isEqualTo("PageRequest{pageNumber=1, size=200, mode=CURSOR_NEXT, cursor size=2}");
softly.assertThat(beforeKeySet.toString())
- .isEqualTo("PageRequest{page=1, size=100, mode=CURSOR_PREVIOUS, cursor size=2}");
+ .isEqualTo("PageRequest{pageNumber=1, size=100, mode=CURSOR_PREVIOUS, cursor size=2}");
});
}
@@ -144,7 +144,7 @@ void shouldBeEqualWithSameKeyValues() {
PageRequest pageRequest25P1S0A1 = PageRequest.ofSize(25).afterCursor(PageRequest.Cursor.forKey("keyval1", '2', 3));
PageRequest pageRequest25P1S0B1 = PageRequest.ofSize(25).beforeCursor(PageRequest.Cursor.forKey("keyval1", '2', 3));
PageRequest pageRequest25P1S0A1Match = PageRequest.ofSize(25).afterCursor(new PageRequestCursor("keyval1", '2', 3));
- PageRequest pageRequest25P2S0A1 = PageRequest.ofPage(2).size(25).afterCursor(new PageRequestCursor("keyval1", '2', 3));
+ PageRequest pageRequest25P2S0A1 = PageRequest.ofSize(10).atPageNumber(2).size(25).afterCursor(new PageRequestCursor("keyval1", '2', 3));
PageRequest pageRequest25P1S0A2 = PageRequest.ofSize(25).afterCursor(PageRequest.Cursor.forKey("keyval2", '2', 3));
PageRequest.Cursor cursor1 = new PageRequestCursor("keyval1", '2', 3);
@@ -201,7 +201,7 @@ void shouldRaiseErrorForMissingKeysetValues() {
@Test
@DisplayName("Cursor should be replaced on new instance of PageRequest")
void shouldReplaceCursor() {
- PageRequest p1 = PageRequest.ofPage(12).size(30).afterCursor(PageRequest.Cursor.forKey("last1", "fname1", 100));
+ PageRequest p1 = PageRequest.ofSize(10).atPageNumber(12).size(30).afterCursor(PageRequest.Cursor.forKey("last1", "fname1", 100));
PageRequest p2 = p1.beforeCursor(PageRequest.Cursor.forKey("lname2", "fname2", 200));
assertSoftly(softly -> {
@@ -215,8 +215,8 @@ void shouldReplaceCursor() {
softly.assertThat(p2.cursor()).get().extracting(c -> c.get(1)).isEqualTo("fname2");
softly.assertThat(p2.cursor()).get().extracting(c -> c.get(2)).isEqualTo(200);
- softly.assertThat(p1.page()).isEqualTo(12L);
- softly.assertThat(p2.page()).isEqualTo(12L);
+ softly.assertThat(p1.pageNumber()).isEqualTo(12L);
+ softly.assertThat(p2.pageNumber()).isEqualTo(12L);
softly.assertThat(p1.size()).isEqualTo(30);
softly.assertThat(p2.size()).isEqualTo(30);
});
diff --git a/api/src/test/java/jakarta/data/page/PageRequestTest.java b/api/src/test/java/jakarta/data/page/PageRequestTest.java
index 59c5bcf4c..9ddeeb4c3 100644
--- a/api/src/test/java/jakarta/data/page/PageRequestTest.java
+++ b/api/src/test/java/jakarta/data/page/PageRequestTest.java
@@ -28,10 +28,10 @@ class PageRequestTest {
@Test
@DisplayName("Should correctly paginate")
void shouldCreatePageRequest() {
- PageRequest pageRequest = PageRequest.ofPage(2).size(6);
+ PageRequest pageRequest = PageRequest.ofSize(10).atPageNumber(2).size(6);
assertSoftly(softly -> {
- softly.assertThat(pageRequest.page()).isEqualTo(2L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(2L);
softly.assertThat(pageRequest.size()).isEqualTo(6);
});
}
@@ -42,7 +42,7 @@ void shouldCreatePageRequestWithSize() {
PageRequest pageRequest = PageRequest.ofSize(50);
assertSoftly(softly -> {
- softly.assertThat(pageRequest.page()).isEqualTo(1L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(1L);
softly.assertThat(pageRequest.size()).isEqualTo(50);
});
}
@@ -50,10 +50,10 @@ void shouldCreatePageRequestWithSize() {
@Test
@DisplayName("Should create a new PageRequest at the given page with a default size of 10")
void shouldCreatePage() {
- PageRequest pageRequest = PageRequest.ofPage(5);
+ PageRequest pageRequest = PageRequest.ofSize(10).atPageNumber(5);
assertSoftly(softly -> {
- softly.assertThat(pageRequest.page()).isEqualTo(5L);
+ softly.assertThat(pageRequest.pageNumber()).isEqualTo(5L);
softly.assertThat(pageRequest.size()).isEqualTo(10);
});
}
@@ -63,28 +63,28 @@ void shouldCreatePage() {
void shouldPageRequestDisplayAsString() {
assertSoftly(softly -> {
softly.assertThat(PageRequest.ofSize(60).toString())
- .isEqualTo("PageRequest{page=1, size=60, mode=OFFSET}");
+ .isEqualTo("PageRequest{pageNumber=1, size=60, mode=OFFSET}");
softly.assertThat(PageRequest.ofSize(80).toString())
- .isEqualTo("PageRequest{page=1, size=80, mode=OFFSET}");
+ .isEqualTo("PageRequest{pageNumber=1, size=80, mode=OFFSET}");
});
}
@Test
@DisplayName("The requestTotal configuration must be preserved when adding subsequent configuration.")
void shouldRequestTotalConfigBePreserved() {
- PageRequest pageRequest1 = PageRequest.ofPage(1).withTotal().size(70);
+ PageRequest pageRequest1 = PageRequest.ofSize(10).atPageNumber(1).withTotal().size(70);
assertSoftly(softly -> {
- softly.assertThat(pageRequest1.page()).isEqualTo(1L);
+ softly.assertThat(pageRequest1.pageNumber()).isEqualTo(1L);
softly.assertThat(pageRequest1.size()).isEqualTo(70);
softly.assertThat(pageRequest1.requestTotal()).isEqualTo(true);
});
- PageRequest pageRequest2 = PageRequest.ofPage(2).size(80).withoutTotal();
+ PageRequest pageRequest2 = PageRequest.ofSize(10).atPageNumber(2).size(80).withoutTotal();
assertSoftly(softly -> {
- softly.assertThat(pageRequest2.page()).isEqualTo(2L);
+ softly.assertThat(pageRequest2.pageNumber()).isEqualTo(2L);
softly.assertThat(pageRequest2.size()).isEqualTo(80);
softly.assertThat(pageRequest2.requestTotal()).isEqualTo(false);
});
@@ -93,10 +93,10 @@ void shouldRequestTotalConfigBePreserved() {
@Test
@DisplayName("Should throw IllegalArgumentException when page is not present")
void shouldReturnErrorWhenThereIsIllegalArgument() {
- PageRequest p1 = PageRequest.ofPage(1);
+ PageRequest p1 = PageRequest.ofSize(10).atPageNumber(1);
- assertThatIllegalArgumentException().isThrownBy(() -> PageRequest.ofPage(0));
- assertThatIllegalArgumentException().isThrownBy(() -> PageRequest.ofPage(-1));
+ assertThatIllegalArgumentException().isThrownBy(() -> PageRequest.ofSize(10).atPageNumber(0));
+ assertThatIllegalArgumentException().isThrownBy(() -> PageRequest.ofSize(10).atPageNumber(-1));
assertThatIllegalArgumentException().isThrownBy(() -> p1.size(-1));
assertThatIllegalArgumentException().isThrownBy(() -> p1.size(0));
assertThatIllegalArgumentException().isThrownBy(() -> PageRequest.ofSize(0));
@@ -106,14 +106,14 @@ void shouldReturnErrorWhenThereIsIllegalArgument() {
@Test
@DisplayName("Size should be replaced on new instance of PageRequest")
void shouldReplaceSize() {
- PageRequest s90 = PageRequest.ofPage(4).size(90);
+ PageRequest s90 = PageRequest.ofSize(10).atPageNumber(4).size(90);
PageRequest s80 = s90.size(80);
assertSoftly(softly -> {
softly.assertThat(s80.size()).isEqualTo(80);
softly.assertThat(s90.size()).isEqualTo(90);
- softly.assertThat(s90.page()).isEqualTo(4L);
- softly.assertThat(s80.page()).isEqualTo(4L);
+ softly.assertThat(s90.pageNumber()).isEqualTo(4L);
+ softly.assertThat(s80.pageNumber()).isEqualTo(4L);
});
}
diff --git a/api/src/test/java/jakarta/data/page/PaginationTest.java b/api/src/test/java/jakarta/data/page/PaginationTest.java
index 1f9495f5b..7801bb890 100644
--- a/api/src/test/java/jakarta/data/page/PaginationTest.java
+++ b/api/src/test/java/jakarta/data/page/PaginationTest.java
@@ -97,7 +97,7 @@ void shouldUpdatePageSize() {
@DisplayName("should override page number")
void shouldUpdatePageNumber() {
var pagination = new Pagination(1, 10, PageRequest.Mode.OFFSET, null, false);
- var updated = pagination.page(5);
+ var updated = pagination.atPageNumber(5);
assertThat(updated).hasFieldOrPropertyWithValue("page", 5L);
}
@@ -109,7 +109,7 @@ void shouldPrintToStringWithCursorInfo() {
var pagination = new Pagination(2, 50, PageRequest.Mode.CURSOR_NEXT, cursor, true);
assertThat(pagination.toString())
- .contains("page=2", "size=50", "mode=CURSOR_NEXT", "cursor size=2");
+ .contains("pageNumber=2", "size=50", "mode=CURSOR_NEXT", "cursor size=2");
}
diff --git a/api/src/test/java/jakarta/data/page/impl/CursoredPageRecordTest.java b/api/src/test/java/jakarta/data/page/impl/CursoredPageRecordTest.java
index 0ff6247f7..77123e397 100644
--- a/api/src/test/java/jakarta/data/page/impl/CursoredPageRecordTest.java
+++ b/api/src/test/java/jakarta/data/page/impl/CursoredPageRecordTest.java
@@ -42,27 +42,27 @@ class CursoredPageRecordTest {
void shouldBeImmutable() {
PageRequest page2Request =
- PageRequest.ofPage(2).size(5).withoutTotal()
+ PageRequest.ofSize(10).atPageNumber(2).size(5).withoutTotal()
.beforeCursor(Cursor.forKey("100"));
PageRequest page3Request =
- PageRequest.ofPage(3).size(5).withoutTotal()
+ PageRequest.ofSize(10).atPageNumber(3).size(5).withoutTotal()
.afterCursor(Cursor.forKey("99"));
PageRequest page4Request =
- PageRequest.ofPage(4).size(5).withoutTotal()
+ PageRequest.ofSize(10).atPageNumber(4).size(5).withoutTotal()
.afterCursor(Cursor.forKey("104"));
PageRequest originalPage2Request =
- PageRequest.ofPage(2).size(5).withoutTotal()
+ PageRequest.ofSize(10).atPageNumber(2).size(5).withoutTotal()
.beforeCursor(Cursor.forKey("100"));
PageRequest originalPage3Request =
- PageRequest.ofPage(3).size(5).withoutTotal()
+ PageRequest.ofSize(10).atPageNumber(3).size(5).withoutTotal()
.afterCursor(Cursor.forKey("99"));
PageRequest originalPage4Request =
- PageRequest.ofPage(4).size(5).withoutTotal()
+ PageRequest.ofSize(10).atPageNumber(4).size(5).withoutTotal()
.afterCursor(Cursor.forKey("104"));
List page3Content = BookSimulator.mock(5);
@@ -85,9 +85,9 @@ void shouldBeImmutable() {
// Modify the values that were supplied to the CursoredPageRecord
// constructor
- page2Request.page(5);
- page3Request.page(6);
- page4Request.page(7);
+ page2Request.atPageNumber(5);
+ page3Request.atPageNumber(6);
+ page4Request.atPageNumber(7);
page2Request.size(9);
page3Request.size(6);
@@ -119,17 +119,17 @@ void shouldBeImmutable() {
// Modify (or attempt to modify) values returned by the
// CursoredPageRecord
- page3.previousPageRequest().page(1);
+ page3.previousPageRequest().atPageNumber(1);
page3.previousPageRequest().size(8);
page3.previousPageRequest().withTotal();
page3.previousPageRequest().beforeCursor(Cursor.forKey("50"));
- page3.pageRequest().page(4);
+ page3.pageRequest().atPageNumber(4);
page3.pageRequest().size(7);
page3.pageRequest().withTotal();
page3.pageRequest().afterCursor(Cursor.forKey("101"));
- page3.nextPageRequest().page(5);
+ page3.nextPageRequest().atPageNumber(5);
page3.nextPageRequest().size(3);
page3.nextPageRequest().withTotal();
page3.nextPageRequest().afterCursor(Cursor.forKey("115"));
@@ -161,7 +161,7 @@ void shouldReportContentAndSize() {
List.of("A", "B"),
List.of(PageRequest.Cursor.forKey("a"), PageRequest.Cursor.forKey("b")),
10,
- PageRequest.ofPage(1).size(2),
+ PageRequest.ofSize(10).atPageNumber(1).size(2),
true,
false
);
@@ -183,7 +183,7 @@ void shouldReturnCursorByIndex() {
List.of("A", "B"),
List.of(cursorA, cursorB),
10,
- PageRequest.ofPage(1).size(2),
+ PageRequest.ofSize(10).atPageNumber(1).size(2),
true,
false
);
@@ -201,7 +201,7 @@ void shouldDetectNavigationPossibilities() {
List.of("X"),
List.of(PageRequest.Cursor.forKey("x")),
10,
- PageRequest.ofPage(2).size(1),
+ PageRequest.ofSize(10).atPageNumber(2).size(1),
false,
false
);
@@ -219,7 +219,7 @@ void shouldThrowWhenPageNavigationUnavailable() {
List.of("X"),
List.of(PageRequest.Cursor.forKey("x")),
10,
- PageRequest.ofPage(1).size(1),
+ PageRequest.ofSize(10).atPageNumber(1).size(1),
true,
true
);
@@ -237,7 +237,7 @@ void shouldComputeTotalPages() {
List.of("A", "B"),
List.of(PageRequest.Cursor.forKey("a"), PageRequest.Cursor.forKey("b")),
10,
- PageRequest.ofPage(1).size(3),
+ PageRequest.ofSize(10).atPageNumber(1).size(3),
true,
false
);
@@ -254,7 +254,7 @@ void shouldThrowIfTotalUnavailable() {
List.of("A"),
List.of(PageRequest.Cursor.forKey("a")),
-1,
- PageRequest.ofPage(1).size(1),
+ PageRequest.ofSize(10).atPageNumber(1).size(1),
true,
true
);
diff --git a/api/src/test/java/jakarta/data/page/impl/PageRecordTest.java b/api/src/test/java/jakarta/data/page/impl/PageRecordTest.java
index f25216391..e41074543 100644
--- a/api/src/test/java/jakarta/data/page/impl/PageRecordTest.java
+++ b/api/src/test/java/jakarta/data/page/impl/PageRecordTest.java
@@ -42,10 +42,10 @@ class PageRecordTest {
void shouldBeImmutable() {
PageRequest page4Request =
- PageRequest.ofPage(4).size(5).withTotal();
+ PageRequest.ofSize(10).atPageNumber(4).size(5).withTotal();
PageRequest originalPage4Request =
- PageRequest.ofPage(4).size(5).withTotal();
+ PageRequest.ofSize(10).atPageNumber(4).size(5).withTotal();
List page4Content = BookSimulator.mock(5);
@@ -57,7 +57,7 @@ void shouldBeImmutable() {
Page page4 = new PageRecord<>(page4Request, page4Content, 44);
// Modify the values that were supplied to the PageRecord constructor
- page4Request.page(5);
+ page4Request.atPageNumber(5);
page4Request.size(6);
page4Request.withoutTotal();
page4Request.afterCursor(Cursor.forKey("104"));
@@ -73,7 +73,7 @@ void shouldBeImmutable() {
});
// Modify values returned by the PageRecord
- page4.pageRequest().page(3);
+ page4.pageRequest().atPageNumber(3);
page4.pageRequest().size(7);
page4.pageRequest().withoutTotal();
page4.pageRequest().beforeCursor(Cursor.forKey("100"));
@@ -96,7 +96,7 @@ void shouldBeImmutable() {
@DisplayName("The custom constructor can create instances where moreResults is inferred from the other record components.")
void shouldCreateInstanceWithCustomConstructor() {
- PageRequest page2Request = PageRequest.ofPage(2).size(4);
+ PageRequest page2Request = PageRequest.ofSize(10).atPageNumber(2).size(4);
List page2Content = List.of("E", "F", "G", "H");
PageRecord page2 = new PageRecord<>(page2Request, page2Content, -1L); // unknown total elements
@@ -107,14 +107,14 @@ void shouldCreateInstanceWithCustomConstructor() {
softly.assertThat(page2.hasPrevious()).isEqualTo(true);
softly.assertThat(page2.hasTotals()).isEqualTo(false);
softly.assertThat(page2.moreResults()).isEqualTo(true);
- softly.assertThat(page2.nextPageRequest()).isEqualTo(PageRequest.ofPage(3).size(4));
+ softly.assertThat(page2.nextPageRequest()).isEqualTo(PageRequest.ofSize(10).atPageNumber(3).size(4));
softly.assertThat(page2.numberOfElements()).isEqualTo(4);
- softly.assertThat(page2.previousPageRequest()).isEqualTo(PageRequest.ofPage(1).size(4));
+ softly.assertThat(page2.previousPageRequest()).isEqualTo(PageRequest.ofSize(10).atPageNumber(1).size(4));
});
assertThatThrownBy(page2::totalElements).isInstanceOf(IllegalStateException.class);
assertThatThrownBy(page2::totalPages).isInstanceOf(IllegalStateException.class);
- PageRequest page5Request = PageRequest.ofPage(5).size(4);
+ PageRequest page5Request = PageRequest.ofSize(10).atPageNumber(5).size(4);
List page5Content = List.of("Q", "R");
PageRecord page5 = new PageRecord<>(page5Request, page5Content, -999L); // unknown total elements
@@ -126,7 +126,7 @@ void shouldCreateInstanceWithCustomConstructor() {
softly.assertThat(page5.hasTotals()).isEqualTo(false);
softly.assertThat(page5.moreResults()).isEqualTo(false);
softly.assertThat(page5.numberOfElements()).isEqualTo(2);
- softly.assertThat(page5.previousPageRequest()).isEqualTo(PageRequest.ofPage(4).size(4));
+ softly.assertThat(page5.previousPageRequest()).isEqualTo(PageRequest.ofSize(10).atPageNumber(4).size(4));
});
assertThatThrownBy(page5::nextPageRequest).isInstanceOf(NoSuchElementException.class);
assertThatThrownBy(page5::totalElements).isInstanceOf(IllegalStateException.class);
@@ -137,7 +137,7 @@ void shouldCreateInstanceWithCustomConstructor() {
@DisplayName("Instances created by the record constructor must adhere to the requirements of the Page interface.")
void shouldCreateInstanceWithRecordConstructor() {
- PageRequest page1Request = PageRequest.ofPage(1).size(5);
+ PageRequest page1Request = PageRequest.ofSize(10).atPageNumber(1).size(5);
List page1Content = List.of("A", "B", "C", "D", "E");
PageRecord page1 = new PageRecord<>(page1Request, page1Content, 18L, true);
@@ -148,14 +148,14 @@ void shouldCreateInstanceWithRecordConstructor() {
softly.assertThat(page1.hasPrevious()).isEqualTo(false);
softly.assertThat(page1.hasTotals()).isEqualTo(true);
softly.assertThat(page1.moreResults()).isEqualTo(true);
- softly.assertThat(page1.nextPageRequest()).isEqualTo(PageRequest.ofPage(2).size(5));
+ softly.assertThat(page1.nextPageRequest()).isEqualTo(PageRequest.ofSize(10).atPageNumber(2).size(5));
softly.assertThat(page1.numberOfElements()).isEqualTo(5);
softly.assertThat(page1.totalElements()).isEqualTo(18L);
softly.assertThat(page1.totalPages()).isEqualTo(4);
});
assertThatThrownBy(page1::previousPageRequest).isInstanceOf(NoSuchElementException.class);
- PageRequest page3Request = PageRequest.ofPage(3).size(5);
+ PageRequest page3Request = PageRequest.ofSize(10).atPageNumber(3).size(5);
List page3Content = List.of("K", "L", "M", "N", "O");
PageRecord page3 = new PageRecord<>(page3Request, page3Content, 18L, true);
@@ -166,9 +166,9 @@ void shouldCreateInstanceWithRecordConstructor() {
softly.assertThat(page3.hasPrevious()).isEqualTo(true);
softly.assertThat(page3.hasTotals()).isEqualTo(true);
softly.assertThat(page3.moreResults()).isEqualTo(true);
- softly.assertThat(page3.nextPageRequest()).isEqualTo(PageRequest.ofPage(4).size(5));
+ softly.assertThat(page3.nextPageRequest()).isEqualTo(PageRequest.ofSize(10).atPageNumber(4).size(5));
softly.assertThat(page3.numberOfElements()).isEqualTo(5);
- softly.assertThat(page3.previousPageRequest()).isEqualTo(PageRequest.ofPage(2).size(5));
+ softly.assertThat(page3.previousPageRequest()).isEqualTo(PageRequest.ofSize(10).atPageNumber(2).size(5));
softly.assertThat(page3.totalElements()).isEqualTo(18L);
softly.assertThat(page3.totalPages()).isEqualTo(4);
});
diff --git a/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/EntityTests.java b/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/EntityTests.java
index 5ce8dc5ca..b411ae654 100644
--- a/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/EntityTests.java
+++ b/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/EntityTests.java
@@ -389,7 +389,7 @@ public void testBasicRepositoryMethods() {
@Assertion(id = "133", strategy = "Request a Page higher than the final Page, expecting an empty Page with 0 results.")
public void testBeyondFinalPage() {
- PageRequest sixth = PageRequest.ofPage(6).size(10);
+ PageRequest sixth = PageRequest.ofSize(10).atPageNumber(6).size(10);
Page page;
try {
page = characters.findByNumericValueBetween(48, 90, sixth, Order.by(_AsciiCharacter.numericValue.asc()));
@@ -421,7 +421,7 @@ public void testBeyondFinalPage() {
@Assertion(id = "133", strategy = "Request a Slice higher than the final Slice, expecting an empty Slice with 0 results.")
public void testBeyondFinalSlice() {
- PageRequest sixth = PageRequest.ofPage(6).size(5).withoutTotal();
+ PageRequest sixth = PageRequest.ofSize(10).atPageNumber(6).size(5).withoutTotal();
Page page;
try {
page = numbers.findByNumTypeAndFloorOfSquareRootLessThanEqual(
@@ -651,7 +651,7 @@ public void testFalse() {
@Assertion(id = "133", strategy = "Request the last Page of up to 10 results, expecting to find the final 3.")
public void testFinalPageOfUpTo10() {
- PageRequest fifthPageRequest = PageRequest.ofPage(5).size(10);
+ PageRequest fifthPageRequest = PageRequest.ofSize(10).atPageNumber(5).size(10);
Page page;
try {
page = characters.findByNumericValueBetween(48, 90, fifthPageRequest,
@@ -696,7 +696,7 @@ public void testFinalPageOfUpTo10() {
assertFalse(it.hasNext());
- assertEquals(5, page.pageRequest().page());
+ assertEquals(5, page.pageRequest().pageNumber());
assertTrue(page.hasContent());
assertEquals(3, page.numberOfElements());
try {
@@ -711,7 +711,7 @@ public void testFinalPageOfUpTo10() {
@Assertion(id = "133", strategy = "Request the last Slice of up to 5 results, expecting to find the final 2.")
public void testFinalSliceOfUpTo5() {
- PageRequest fifth = PageRequest.ofPage(5).size(5).withoutTotal();
+ PageRequest fifth = PageRequest.ofSize(10).atPageNumber(5).size(5).withoutTotal();
Page page;
try {
page = numbers.findByNumTypeAndFloorOfSquareRootLessThanEqual(
@@ -730,7 +730,7 @@ public void testFinalSliceOfUpTo5() {
}
}
assertTrue(page.hasContent());
- assertEquals(5, page.pageRequest().page());
+ assertEquals(5, page.pageRequest().pageNumber());
assertEquals(2, page.numberOfElements());
Iterator it = page.iterator();
@@ -762,7 +762,7 @@ public void testFinalSliceOfUpTo5() {
"ascending and descending sort. Verify the page contains all 12 expected entities, " +
"sorted according to the mixture of ascending and descending sort orders specified.")
public void testFindAllWithPagination() {
- PageRequest page2request = PageRequest.ofPage(2).size(12);
+ PageRequest page2request = PageRequest.ofSize(10).atPageNumber(2).size(12);
Page page2;
try {
page2 = positives.findAll(page2request,
@@ -779,7 +779,7 @@ public void testFindAllWithPagination() {
}
assertEquals(12, page2.numberOfElements());
- assertEquals(2, page2.pageRequest().page());
+ assertEquals(2, page2.pageRequest().pageNumber());
assertEquals(List.of(11L, 10L, 9L, // square root rounds down to 3
24L, 23L, 22L, 21L, 20L, 19L, 18L, 17L, 16L), // square root rounds down to 4
@@ -832,7 +832,7 @@ public void testFindEntityAsRecordReturnOptional() {
the names of record components. Results are return as a Page of record.
""")
public void testFindEntityAsRecordReturnPage() {
- PageRequest page8Request = PageRequest.ofPage(8).size(10);
+ PageRequest page8Request = PageRequest.ofSize(10).atPageNumber(8).size(10);
@SuppressWarnings("unchecked")
Sort[] numAscending =
@@ -1215,7 +1215,7 @@ public void testFirstPageOf10() {
}
}
- assertEquals(1, page.pageRequest().page());
+ assertEquals(1, page.pageRequest().pageNumber());
assertTrue(page.hasContent());
assertEquals(10, page.numberOfElements());
try {
@@ -1472,7 +1472,7 @@ public void testCursoredPageOfNothing() {
CursoredPage page;
try {
// There are no positive integers less than 4 which have a square root that rounds down to something other than 1.
- page = positives.findByFloorOfSquareRootNotAndIdLessThanOrderByNumBitsRequiredDesc(1L, 4L, PageRequest.ofPage(1L), Order.by());
+ page = positives.findByFloorOfSquareRootNotAndIdLessThanOrderByNumBitsRequiredDesc(1L, 4L, PageRequest.ofSize(10).atPageNumber(1L), Order.by());
} catch (UnsupportedOperationException x) {
if (type.capableOfAnd() &&
type.capableOfConstraintsOnNonIdAttributes() &&
@@ -2340,7 +2340,7 @@ public void testQueryWithSelectReturnsOptionalOfRecord() {
and returns a Page of Java record results.
""")
public void testQueryWithSelectReturnsPageOfRecord() {
- PageRequest page3Req = PageRequest.ofPage(3).size(6);
+ PageRequest page3Req = PageRequest.ofSize(10).atPageNumber(3).size(6);
Page page3;
try {
page3 = numbers.numberPage(page3Req);
@@ -2495,7 +2495,7 @@ public void testRecordComponentsChooseAttributeReturnOptional() {
Page of records.
""")
public void testRecordComponentsChooseAttributeReturnPage() {
- PageRequest page2Req = PageRequest.ofPage(2).size(5);
+ PageRequest page2Req = PageRequest.ofSize(10).atPageNumber(2).size(5);
Page page2;
try {
page2 = numbers.infoPaginated(true, page2Req);
@@ -2815,7 +2815,7 @@ public void testSelectEntityAttributeAsOptional() {
public void testSelectEntityAttributeAsPage() {
final boolean odd = true;
- PageRequest page4Request = PageRequest.ofPage(4).size(5);
+ PageRequest page4Request = PageRequest.ofSize(10).atPageNumber(4).size(5);
Page page4;
try {
page4 = positives.withParity(odd, page4Request);
@@ -3022,7 +3022,7 @@ public void testSelectEntityAttributesAsOptionalOfRecord() {
to retrieve as a Page of record.
""")
public void testSelectEntityAttributesAsPageOfRecord() {
- PageRequest page3Req = PageRequest.ofPage(3).size(4);
+ PageRequest page3Req = PageRequest.ofSize(10).atPageNumber(3).size(4);
Page page3;
try {
page3 = numbers.wholeNumberPage(NumberType.PRIME.ordinal(),
@@ -3304,7 +3304,7 @@ public void testStreamsFromList() {
"Request the next Page via nextPageRequest, expecting page number 4 and another 10 results.")
public void testThirdAndFourthPagesOf10() {
Order order = Order.by(_AsciiCharacter.numericValue.asc());
- PageRequest third10 = PageRequest.ofPage(3).size(10);
+ PageRequest third10 = PageRequest.ofSize(10).atPageNumber(3).size(10);
Page page;
try {
page = characters.findByNumericValueBetween(48, 90, third10, order); // 'D' to 'M'
@@ -3319,7 +3319,7 @@ public void testThirdAndFourthPagesOf10() {
}
}
- assertEquals(3, page.pageRequest().page());
+ assertEquals(3, page.pageRequest().pageNumber());
assertTrue(page.hasContent());
assertEquals(10, page.numberOfElements());
try {
@@ -3342,7 +3342,7 @@ public void testThirdAndFourthPagesOf10() {
PageRequest fourth10 = page.nextPageRequest();
page = characters.findByNumericValueBetween(48, 90, fourth10, order); // 'N' to 'W'
- assertEquals(4, page.pageRequest().page());
+ assertEquals(4, page.pageRequest().pageNumber());
assertTrue(page.hasContent());
assertEquals(10, page.numberOfElements());
try {
@@ -3366,7 +3366,7 @@ public void testThirdAndFourthPagesOf10() {
strategy = "Request the third Slice of 5 results, expecting to find all 5. "
+ "Request the next Slice via nextPageRequest, expecting page number 4 and another 5 results.")
public void testThirdAndFourthSlicesOf5() {
- PageRequest third5 = PageRequest.ofPage(3).size(5).withoutTotal();
+ PageRequest third5 = PageRequest.ofSize(10).atPageNumber(3).size(5).withoutTotal();
Sort sort = Sort.desc("id");
Page page;
try {
@@ -3382,7 +3382,7 @@ public void testThirdAndFourthSlicesOf5() {
}
}
- assertEquals(3, page.pageRequest().page());
+ assertEquals(3, page.pageRequest().pageNumber());
assertEquals(5, page.numberOfElements());
assertEquals(Arrays.toString(new Long[]{37L, 31L, 29L, 23L, 19L}),
@@ -3395,7 +3395,7 @@ public void testThirdAndFourthSlicesOf5() {
page = numbers.findByNumTypeAndFloorOfSquareRootLessThanEqual(NumberType.PRIME, 8L, fourth5, sort);
- assertEquals(4, page.pageRequest().page());
+ assertEquals(4, page.pageRequest().pageNumber());
assertEquals(5, page.numberOfElements());
assertEquals(Arrays.toString(new Long[]{17L, 13L, 11L, 7L, 5L}),
diff --git a/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/SortNullableTests.java b/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/SortNullableTests.java
index 5329e0aea..dd447b630 100644
--- a/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/SortNullableTests.java
+++ b/tck/src/main/java/ee/jakarta/tck/data/standalone/entity/SortNullableTests.java
@@ -625,7 +625,7 @@ public void testMixedOrderByAndSortWithNullOrdering() {
"OZ",
Order.by(_Country.daylightTimeBegins.desc().nullsFirst(),
_Country.code.asc()),
- PageRequest.ofSize(25).page(2));
+ PageRequest.ofSize(25).atPageNumber(2));
} catch (IllegalArgumentException x) {
if (type.capableOfSortingNullsFirst()) {
throw x;