From 5a1fd27fa8ef8a88b2a7e28d7c253a7178acb4d7 Mon Sep 17 00:00:00 2001
From: Gavin King <gavin@hibernate.org>
Date: Thu, 29 Feb 2024 13:29:21 +0100
Subject: [PATCH] add boolean Page.hasNextPage()

so that iteration works via page.hasNextPage() instead
of more verbosely page.nextPageRequest() != null
---
 api/src/main/java/jakarta/data/page/Page.java            | 7 +++++++
 api/src/main/java/jakarta/data/page/impl/PageRecord.java | 5 +++++
 2 files changed, 12 insertions(+)

diff --git a/api/src/main/java/jakarta/data/page/Page.java b/api/src/main/java/jakarta/data/page/Page.java
index 24625b3df..0d3691e15 100644
--- a/api/src/main/java/jakarta/data/page/Page.java
+++ b/api/src/main/java/jakarta/data/page/Page.java
@@ -41,6 +41,13 @@
  */
 public interface Page<T> extends Slice<T> {
 
+    /**
+     * Returns {@code true} if it is known that there are more results, so that
+     * {@link #nextPageRequest()} will definitely not return {@code null}.
+     * @return {@code false} if this the last page of results
+     */
+    boolean hasNextPage();
+
     /**
      * Returns the total number of elements across all pages that can be requested for the query.
      * @return the total number of elements across all pages.
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 56075a3d7..7f39c6748 100644
--- a/api/src/main/java/jakarta/data/page/impl/PageRecord.java
+++ b/api/src/main/java/jakarta/data/page/impl/PageRecord.java
@@ -55,6 +55,11 @@ public int numberOfElements() {
         return content.size();
     }
 
+    @Override
+    public boolean hasNextPage() {
+        return moreResults;
+    }
+
     @Override
     @SuppressWarnings("unchecked")
     public <E> PageRequest<E> pageRequest(Class<E> entityClass) {