From da163fc9e4eb2bd33326b1fc51df467551726d7f Mon Sep 17 00:00:00 2001 From: Marcel Overdijk Date: Fri, 29 Dec 2017 15:02:30 +0100 Subject: [PATCH] DATACMNS-563 - PagedResourcesAssembler now correctly forwards one-index settings to PageMetadata. Original pull request: #267. --- .../springframework/data/web/PagedResourcesAssembler.java | 5 +++-- .../data/web/PagedResourcesAssemblerUnitTests.java | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java b/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java index ac859ff6a..89cd8468f 100644 --- a/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java +++ b/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java @@ -290,10 +290,11 @@ public class PagedResourcesAssembler implements ResourceAssembler, Pa * @param page must not be {@literal null}. * @return */ - private static PageMetadata asPageMetadata(Page page) { + private PageMetadata asPageMetadata(Page page) { Assert.notNull(page, "Page must not be null!"); - return new PageMetadata(page.getSize(), page.getNumber(), page.getTotalElements(), page.getTotalPages()); + boolean isOneIndexedParameters = pageableResolver.isOneIndexedParameters(); + return new PageMetadata(page.getSize(), isOneIndexedParameters ? page.getNumber() + 1 : page.getNumber(), page.getTotalElements(), page.getTotalPages()); } private String baseUriOrCurrentRequest() { diff --git a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java index b91a1349c..31f668931 100755 --- a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java +++ b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java @@ -159,6 +159,9 @@ public class PagedResourcesAssemblerUnitTests { assertThat(resource.hasLink("prev")).isTrue(); assertThat(resource.hasLink("next")).isTrue(); + // We expect 2 as the created page has index 1. Pages itself are always 0 indexed, so we created page 2 above. + assertThat(resource.getMetadata().getNumber()).isEqualTo(2); + assertThat(getQueryParameters(resource.getLink("prev"))).containsEntry("page", "1"); assertThat(getQueryParameters(resource.getLink("next"))).containsEntry("page", "3"); }