diff --git a/pom.xml b/pom.xml index 8ca1078f2..9b3848ed2 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,7 @@ 0.10.0 2.11.7 1.4.15 + 1.0.0.BUILD-SNAPSHOT spring.data.commons diff --git a/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java b/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java index 0ef7d899e..146c22d37 100644 --- a/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java +++ b/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java @@ -26,6 +26,7 @@ import org.springframework.core.MethodParameter; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.hateoas.IanaLinkRelation; import org.springframework.hateoas.Link; import org.springframework.hateoas.PagedResources; import org.springframework.hateoas.PagedResources.PageMetadata; @@ -220,27 +221,27 @@ public class PagedResourcesAssembler implements ResourceAssembler, Pa boolean isNavigable = page.hasPrevious() || page.hasNext(); if (isNavigable || forceFirstAndLastRels) { - resources.add(createLink(base, PageRequest.of(0, page.getSize(), page.getSort()), Link.REL_FIRST)); + resources.add(createLink(base, PageRequest.of(0, page.getSize(), page.getSort()), IanaLinkRelation.FIRST.value())); } if (page.hasPrevious()) { - resources.add(createLink(base, page.previousPageable(), Link.REL_PREVIOUS)); + resources.add(createLink(base, page.previousPageable(), IanaLinkRelation.PREV.value())); } Link selfLink = link.map(it -> it.withSelfRel())// - .orElseGet(() -> createLink(base, page.getPageable(), Link.REL_SELF)); + .orElseGet(() -> createLink(base, page.getPageable(), IanaLinkRelation.SELF.value())); resources.add(selfLink); if (page.hasNext()) { - resources.add(createLink(base, page.nextPageable(), Link.REL_NEXT)); + resources.add(createLink(base, page.nextPageable(), IanaLinkRelation.NEXT.value())); } if (isNavigable || forceFirstAndLastRels) { int lastIndex = page.getTotalPages() == 0 ? 0 : page.getTotalPages() - 1; - resources.add(createLink(base, PageRequest.of(lastIndex, page.getSize(), page.getSort()), Link.REL_LAST)); + resources.add(createLink(base, PageRequest.of(lastIndex, page.getSize(), page.getSort()), IanaLinkRelation.LAST.value())); } return resources; diff --git a/src/test/java/org/springframework/data/domain/jaxb/SpringDataJaxbUnitTests.java b/src/test/java/org/springframework/data/domain/jaxb/SpringDataJaxbUnitTests.java index dad96b168..b7e46a7a4 100755 --- a/src/test/java/org/springframework/data/domain/jaxb/SpringDataJaxbUnitTests.java +++ b/src/test/java/org/springframework/data/domain/jaxb/SpringDataJaxbUnitTests.java @@ -45,6 +45,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; +import org.springframework.hateoas.IanaLinkRelation; import org.springframework.hateoas.Link; /** @@ -159,7 +160,9 @@ public class SpringDataJaxbUnitTests { @Override protected List getLinks(Page source) { - return Arrays.asList(new Link(Link.REL_NEXT, "next"), new Link(Link.REL_PREVIOUS, "previous")); + return Arrays.asList( + new Link(IanaLinkRelation.NEXT.value(), IanaLinkRelation.NEXT.value()), + new Link(IanaLinkRelation.PREV.value(), IanaLinkRelation.PREVIOUS.value())); } } } diff --git a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java index 8cc45ec01..61f16bf43 100755 --- a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java +++ b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java @@ -30,6 +30,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.hateoas.IanaLinkRelation; import org.springframework.hateoas.Link; import org.springframework.hateoas.PagedResources; import org.springframework.hateoas.PagedResources.PageMetadata; @@ -65,9 +66,9 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(0)); - assertThat(resources.getLink(Link.REL_PREVIOUS)).isNull(); - assertThat(resources.getLink(Link.REL_SELF)).isNotNull(); - assertThat(resources.getLink(Link.REL_NEXT)).isNotNull(); + assertThat(resources.getLink(IanaLinkRelation.PREV.value())).isEmpty(); + assertThat(resources.getLink(IanaLinkRelation.SELF.value())).isNotEmpty(); + assertThat(resources.getLink(IanaLinkRelation.NEXT.value())).isNotEmpty(); } @Test @@ -75,9 +76,9 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(1)); - assertThat(resources.getLink(Link.REL_PREVIOUS)).isNotNull(); - assertThat(resources.getLink(Link.REL_SELF)).isNotNull(); - assertThat(resources.getLink(Link.REL_NEXT)).isNotNull(); + assertThat(resources.getLink(IanaLinkRelation.PREV.value())).isNotEmpty(); + assertThat(resources.getLink(IanaLinkRelation.SELF.value())).isNotEmpty(); + assertThat(resources.getLink(IanaLinkRelation.NEXT.value())).isNotEmpty(); } @Test @@ -85,9 +86,9 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(2)); - assertThat(resources.getLink(Link.REL_PREVIOUS)).isNotNull(); - assertThat(resources.getLink(Link.REL_SELF)).isNotNull(); - assertThat(resources.getLink(Link.REL_NEXT)).isNull(); + assertThat(resources.getLink(IanaLinkRelation.PREV.value())).isNotEmpty(); + assertThat(resources.getLink(IanaLinkRelation.SELF.value())).isNotEmpty(); + assertThat(resources.getLink(IanaLinkRelation.NEXT.value())).isEmpty(); } @Test @@ -98,9 +99,9 @@ public class PagedResourcesAssemblerUnitTests { PagedResourcesAssembler assembler = new PagedResourcesAssembler<>(resolver, baseUri); PagedResources> resources = assembler.toResource(createPage(1)); - assertThat(resources.getLink(Link.REL_PREVIOUS).getHref()).startsWith(baseUri.toUriString()); - assertThat(resources.getLink(Link.REL_SELF)).isNotNull(); - assertThat(resources.getLink(Link.REL_NEXT).getHref()).startsWith(baseUri.toUriString()); + assertThat(resources.getRequiredLink(IanaLinkRelation.PREV.value()).getHref()).startsWith(baseUri.toUriString()); + assertThat(resources.getRequiredLink(IanaLinkRelation.SELF.value())).isNotNull(); + assertThat(resources.getRequiredLink(IanaLinkRelation.NEXT.value()).getHref()).startsWith(baseUri.toUriString()); } @Test @@ -110,9 +111,9 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(1), link); - assertThat(resources.getLink(Link.REL_PREVIOUS).getHref()).startsWith(link.getHref()); - assertThat(resources.getLink(Link.REL_SELF)).isEqualTo(link.withSelfRel()); - assertThat(resources.getLink(Link.REL_NEXT).getHref()).startsWith(link.getHref()); + assertThat(resources.getRequiredLink(IanaLinkRelation.PREV.value()).getHref()).startsWith(link.getHref()); + assertThat(resources.getRequiredLink(IanaLinkRelation.SELF.value())).isEqualTo(link.withSelfRel()); + assertThat(resources.getRequiredLink(IanaLinkRelation.NEXT.value()).getHref()).startsWith(link.getHref()); } @Test // DATACMNS-358 @@ -131,7 +132,7 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(1)); - assertThat(resources.getLink(Link.REL_SELF).getHref()).doesNotContain("{").doesNotContain("}"); + assertThat(resources.getRequiredLink(IanaLinkRelation.SELF.value()).getHref()).doesNotContain("{").doesNotContain("}"); } @Test // DATACMNS-418 @@ -141,8 +142,8 @@ public class PagedResourcesAssemblerUnitTests { PagedResources resources = assembler.toResource(createPage(0), personAssembler); - assertThat(resources.hasLink(Link.REL_SELF)).isTrue(); - assertThat(resources.hasLink(Link.REL_NEXT)).isTrue(); + assertThat(resources.hasLink(IanaLinkRelation.SELF.value())).isTrue(); + assertThat(resources.hasLink(IanaLinkRelation.NEXT.value())).isTrue(); Collection content = resources.getContent(); assertThat(content).hasSize(1); assertThat(content.iterator().next().name).isEqualTo("Dave"); @@ -163,8 +164,8 @@ public class PagedResourcesAssemblerUnitTests { // 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"); + assertThat(getQueryParameters(resource.getRequiredLink("prev"))).containsEntry("page", "1"); + assertThat(getQueryParameters(resource.getRequiredLink("next"))).containsEntry("page", "3"); } @Test // DATACMNS-515 @@ -172,9 +173,9 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(1)); - assertThat(resources.getLink(Link.REL_SELF).getHref()).doesNotContain("{").doesNotContain("}"); - assertThat(resources.getLink(Link.REL_NEXT).getHref()).endsWith("?page=2&size=1"); - assertThat(resources.getLink(Link.REL_PREVIOUS).getHref()).endsWith("?page=0&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.SELF.value()).getHref()).doesNotContain("{").doesNotContain("}"); + assertThat(resources.getRequiredLink(IanaLinkRelation.NEXT.value()).getHref()).endsWith("?page=2&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.PREV.value()).getHref()).endsWith("?page=0&size=1"); } @Test // DATACMNS-699 @@ -205,8 +206,8 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(1)); - assertThat(resources.getLink(Link.REL_FIRST).getHref()).endsWith("?page=0&size=1"); - assertThat(resources.getLink(Link.REL_LAST).getHref()).endsWith("?page=2&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.FIRST.value()).getHref()).endsWith("?page=0&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.LAST.value()).getHref()).endsWith("?page=2&size=1"); } @Test // DATACMNS-701 @@ -214,8 +215,8 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(0)); - assertThat(resources.getLink(Link.REL_FIRST).getHref()).endsWith("?page=0&size=1"); - assertThat(resources.getLink(Link.REL_LAST).getHref()).endsWith("?page=2&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.FIRST.value()).getHref()).endsWith("?page=0&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.LAST.value()).getHref()).endsWith("?page=2&size=1"); } @Test // DATACMNS-701 @@ -223,8 +224,8 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(createPage(2)); - assertThat(resources.getLink(Link.REL_FIRST).getHref()).endsWith("?page=0&size=1"); - assertThat(resources.getLink(Link.REL_LAST).getHref()).endsWith("?page=2&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.FIRST.value()).getHref()).endsWith("?page=0&size=1"); + assertThat(resources.getRequiredLink(IanaLinkRelation.LAST.value()).getHref()).endsWith("?page=2&size=1"); } @Test // DATACMNS-701 @@ -235,8 +236,8 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resources = assembler.toResource(EMPTY_PAGE); - assertThat(resources.getLink(Link.REL_FIRST).getHref()).endsWith("?page=0&size=20"); - assertThat(resources.getLink(Link.REL_LAST).getHref()).endsWith("?page=0&size=20"); + assertThat(resources.getRequiredLink(IanaLinkRelation.FIRST.value()).getHref()).endsWith("?page=0&size=20"); + assertThat(resources.getRequiredLink(IanaLinkRelation.LAST.value()).getHref()).endsWith("?page=0&size=20"); } @Test // DATACMNS-802 @@ -253,7 +254,7 @@ public class PagedResourcesAssemblerUnitTests { PagedResources> resource = assembler.toResource(createPage(0)); - assertThat(resource.getLink(Link.REL_SELF).getHref()).endsWith("?page=0&size=1"); + assertThat(resource.getRequiredLink(IanaLinkRelation.SELF.value()).getHref()).endsWith("?page=0&size=1"); } private static Page createPage(int index) { diff --git a/src/test/java/org/springframework/data/web/config/PageableResourcesAssemblerIntegrationTests.java b/src/test/java/org/springframework/data/web/config/PageableResourcesAssemblerIntegrationTests.java index 2548a5f96..afba4bb9e 100755 --- a/src/test/java/org/springframework/data/web/config/PageableResourcesAssemblerIntegrationTests.java +++ b/src/test/java/org/springframework/data/web/config/PageableResourcesAssemblerIntegrationTests.java @@ -17,7 +17,6 @@ package org.springframework.data.web.config; import static org.assertj.core.api.Assertions.*; -import java.util.Arrays; import java.util.Collections; import org.junit.Before; @@ -32,7 +31,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PagedResourcesAssembler; import org.springframework.data.web.WebTestUtils; -import org.springframework.hateoas.Link; +import org.springframework.hateoas.IanaLinkRelation; import org.springframework.hateoas.PagedResources; import org.springframework.hateoas.Resource; import org.springframework.stereotype.Controller; @@ -71,9 +70,9 @@ public class PageableResourcesAssemblerIntegrationTests { PagedResources> resources = controller.sample(PageRequest.of(1, 1)); - assertThat(resources.getLink(Link.REL_PREVIOUS)).isNotNull(); - assertThat(resources.getLink(Link.REL_NEXT)).isNotNull(); - assertThat(resources.getLink(Link.REL_SELF)).isNotNull(); + assertThat(resources.getLink(IanaLinkRelation.PREV.value())).isNotNull(); + assertThat(resources.getLink(IanaLinkRelation.NEXT.value())).isNotNull(); + assertThat(resources.getLink(IanaLinkRelation.SELF.value())).isNotNull(); } @Test // DATACMNS-471