diff --git a/src/main/java/org/springframework/hateoas/client/Traverson.java b/src/main/java/org/springframework/hateoas/client/Traverson.java index a8164438..f0776b26 100644 --- a/src/main/java/org/springframework/hateoas/client/Traverson.java +++ b/src/main/java/org/springframework/hateoas/client/Traverson.java @@ -285,6 +285,18 @@ public class Traverson { return operations.exchange(traverseToFinalUrl(), GET, prepareRequest(headers), type); } + /** + * Returns the {@link Link} found for the last rel int the rels configured to follow. + * + * @return + * @since 0.15 + */ + public Link asLink() { + + Assert.isTrue(rels.size() > 0, "At least one rel needs to be provided!"); + return new Link(traverseToFinalUrl(), rels.get(rels.size() - 1)); + } + private String traverseToFinalUrl() { String uri = getAndFindLinkWithRel(baseUri.toString(), rels.iterator()); diff --git a/src/test/java/org/springframework/hateoas/client/TraversonTests.java b/src/test/java/org/springframework/hateoas/client/TraversonTests.java index a84e60ce..8eaeeb16 100644 --- a/src/test/java/org/springframework/hateoas/client/TraversonTests.java +++ b/src/test/java/org/springframework/hateoas/client/TraversonTests.java @@ -197,6 +197,18 @@ public class TraversonTests { assertThat(value, is("value")); } + /** + * @see #212 + */ + @Test + public void shouldReturnLastLinkFound() { + + Link result = traverson.follow("movies").asLink(); + + assertThat(result.getHref(), endsWith("/movies")); + assertThat(result.getRel(), is("movies")); + } + private void setUpActors() { Resource actor = new Resource(new Actor("Keanu Reaves"));