From 84f2fcebba6d7df6e72642ace89d8b4480228ee4 Mon Sep 17 00:00:00 2001 From: Attacktive Date: Tue, 27 May 2025 16:37:35 +0900 Subject: [PATCH 1/3] refactor: introduce two-args constructor to `PageImpl` https://github.com/spring-projects/spring-data-commons/issues/3296 Signed-off-by: Attacktive --- .../org/springframework/data/domain/PageImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/domain/PageImpl.java b/src/main/java/org/springframework/data/domain/PageImpl.java index ef8323a555..806f98bca3 100644 --- a/src/main/java/org/springframework/data/domain/PageImpl.java +++ b/src/main/java/org/springframework/data/domain/PageImpl.java @@ -54,6 +54,16 @@ public PageImpl(List content, Pageable pageable, long total) { .orElse(total); } + /** + * Creates a new {@link PageImpl} with the given content and pageable. + * + * @param content must not be {@literal null}. + * @param pageable the paging information, must not be {@literal null}. + */ + public PageImpl(List content, Pageable pageable) { + this(content, pageable, CollectionUtils.isEmpty(content) ? 0 : content.size()); + } + /** * Creates a new {@link PageImpl} with the given content. This will result in the created {@link Page} being identical * to the entire {@link List}. @@ -61,7 +71,7 @@ public PageImpl(List content, Pageable pageable, long total) { * @param content must not be {@literal null}. */ public PageImpl(List content) { - this(content, Pageable.unpaged(), CollectionUtils.isEmpty(content) ? 0 : content.size()); + this(content, Pageable.unpaged()); } @Override From ede8ced1a2639db2fc612a210a0be935437cd8c0 Mon Sep 17 00:00:00 2001 From: Attacktive Date: Tue, 27 May 2025 16:46:57 +0900 Subject: [PATCH 2/3] test: add unit test for new constructor https://github.com/spring-projects/spring-data-commons/issues/3296 Signed-off-by: Attacktive --- .../data/domain/PageImplUnitTests.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/org/springframework/data/domain/PageImplUnitTests.java b/src/test/java/org/springframework/data/domain/PageImplUnitTests.java index ba2969e4d2..62e6229c61 100755 --- a/src/test/java/org/springframework/data/domain/PageImplUnitTests.java +++ b/src/test/java/org/springframework/data/domain/PageImplUnitTests.java @@ -32,6 +32,22 @@ */ class PageImplUnitTests { + @Test + void createsPageWithContentAndPageable() { + + List content = Arrays.asList("foo", "bar", "baz"); + PageRequest pageable = PageRequest.of(1, 10); + + Page page = new PageImpl<>(content, pageable); + + assertThat(page.getContent()).isEqualTo(content); + assertThat(page.getPageable()).isEqualTo(pageable); + assertThat(page.getTotalElements()).isEqualTo(content.size()); + assertThat(page.getTotalPages()).isEqualTo(1); + assertThat(page.getNumber()).isEqualTo(1); + assertThat(page.getSize()).isEqualTo(10); + } + @Test void assertEqualsForSimpleSetup() { From 993cae7f00c492f91b1b973a9f04e89bac6db7f1 Mon Sep 17 00:00:00 2001 From: Attacktive Date: Wed, 28 May 2025 14:07:10 +0900 Subject: [PATCH 3/3] test: fix broken test https://github.com/spring-projects/spring-data-commons/issues/3296 Signed-off-by: Attacktive --- .../org/springframework/data/domain/PageImplUnitTests.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/springframework/data/domain/PageImplUnitTests.java b/src/test/java/org/springframework/data/domain/PageImplUnitTests.java index 62e6229c61..f4542af8dc 100755 --- a/src/test/java/org/springframework/data/domain/PageImplUnitTests.java +++ b/src/test/java/org/springframework/data/domain/PageImplUnitTests.java @@ -36,7 +36,7 @@ class PageImplUnitTests { void createsPageWithContentAndPageable() { List content = Arrays.asList("foo", "bar", "baz"); - PageRequest pageable = PageRequest.of(1, 10); + PageRequest pageable = PageRequest.of(0, 10); Page page = new PageImpl<>(content, pageable); @@ -44,7 +44,7 @@ void createsPageWithContentAndPageable() { assertThat(page.getPageable()).isEqualTo(pageable); assertThat(page.getTotalElements()).isEqualTo(content.size()); assertThat(page.getTotalPages()).isEqualTo(1); - assertThat(page.getNumber()).isEqualTo(1); + assertThat(page.getNumber()).isEqualTo(0); assertThat(page.getSize()).isEqualTo(10); }