From 1dea5f61b9eedf75ac09587b95969f19b56476a6 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 11 Feb 2019 10:41:25 +0100 Subject: [PATCH] =?UTF-8?q?#805=20-=20Added=20Links.getRequiredLink(?= =?UTF-8?q?=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springframework/hateoas/Links.java | 13 +++++++++++++ .../hateoas/LinksUnitTest.java | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/main/java/org/springframework/hateoas/Links.java b/src/main/java/org/springframework/hateoas/Links.java index a8afb751..ec957f43 100644 --- a/src/main/java/org/springframework/hateoas/Links.java +++ b/src/main/java/org/springframework/hateoas/Links.java @@ -71,6 +71,19 @@ public class Links implements Iterable { .filter(link -> link.getRel().equals(rel)).findFirst(); } + /** + * Returns the {@link Link} with the given relation. + * + * @param rel the relation type to lookup a link for. + * @return + * @throws IllegalArgumentException if no link with the given relation was present. + * @since 1.0 + */ + public Link getRequiredLink(String rel) { + + return getLink(rel) // + .orElseThrow(() -> new IllegalArgumentException(String.format("Couldn't find link with rel '%s'!", rel))); + } /** * Returns all {@link Links} with the given relation type. * diff --git a/src/test/java/org/springframework/hateoas/LinksUnitTest.java b/src/test/java/org/springframework/hateoas/LinksUnitTest.java index 78c30bc2..66a8bb0e 100755 --- a/src/test/java/org/springframework/hateoas/LinksUnitTest.java +++ b/src/test/java/org/springframework/hateoas/LinksUnitTest.java @@ -102,4 +102,23 @@ public class LinksUnitTest { public void parsesLinksWithWhitespace() { assertThat(Links.valueOf(WITH_WHITESPACE)).isEqualTo(reference); } + + @Test // #805 + public void returnsRequiredLink() { + + Link reference = new Link("http://localhost", "someRel"); + Links links = new Links(reference); + + assertThat(links.getRequiredLink("someRel")).isEqualTo(reference); + } + + @Test // #805 + public void rejectsMissingLinkWithIllegalArgumentException() { + + Links links = new Links(); + + assertThatExceptionOfType(IllegalArgumentException.class) // + .isThrownBy(() -> links.getRequiredLink("self")) // + .withMessageContaining("self"); + } }