diff --git a/src/main/java/org/springframework/hateoas/client/Hop.java b/src/main/java/org/springframework/hateoas/client/Hop.java index a28fd8da..49b020aa 100644 --- a/src/main/java/org/springframework/hateoas/client/Hop.java +++ b/src/main/java/org/springframework/hateoas/client/Hop.java @@ -79,6 +79,15 @@ public class Hop { return new Hop(rel, parameters); } + /** + * Returns whether the {@link Hop} has parameters declared. + * + * @return + */ + boolean hasParameters() { + return !this.parameters.isEmpty(); + } + /** * Create a new {@link Map} starting with the supplied template parameters. Then add the ones for this hop. This * allows a local hop to override global parameters. diff --git a/src/main/java/org/springframework/hateoas/client/Traverson.java b/src/main/java/org/springframework/hateoas/client/Traverson.java index 4a61b9e0..54249bdf 100644 --- a/src/main/java/org/springframework/hateoas/client/Traverson.java +++ b/src/main/java/org/springframework/hateoas/client/Traverson.java @@ -391,8 +391,9 @@ public class Traverson { } HttpEntity request = prepareRequest(headers); + UriTemplate template = new UriTemplate(uri); - ResponseEntity responseEntity = operations.exchange(uri, GET, request, String.class); + ResponseEntity responseEntity = operations.exchange(template.expand(), GET, request, String.class); MediaType contentType = responseEntity.getHeaders().getContentType(); String responseBody = responseEntity.getBody(); @@ -409,7 +410,7 @@ public class Traverson { /** * Don't expand if the parameters are empty */ - if (thisHop.getParameters().isEmpty()) { + if (!thisHop.hasParameters()) { return getAndFindLinkWithRel(link.getHref(), rels); } else { return getAndFindLinkWithRel(link.expand(thisHop.getMergedParameters(templateParameters)).getHref(), rels);