diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HalLinkExtractor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HalLinkExtractor.java
index c3f28d73..eb55843a 100644
--- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HalLinkExtractor.java
+++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HalLinkExtractor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014-2015 the original author or authors.
+ * Copyright 2014-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -54,9 +54,9 @@ class HalLinkExtractor extends AbstractJsonLinkExtractor {
List links = new ArrayList<>();
if (object instanceof Collection) {
@SuppressWarnings("unchecked")
- Collection hrefObjects = (Collection) object;
- for (Object hrefObject : hrefObjects) {
- maybeAddLink(maybeCreateLink(rel, hrefObject), links);
+ Collection possibleLinkObjects = (Collection) object;
+ for (Object possibleLinkObject : possibleLinkObjects) {
+ maybeAddLink(maybeCreateLink(rel, possibleLinkObject), links);
}
}
else {
@@ -65,9 +65,12 @@ class HalLinkExtractor extends AbstractJsonLinkExtractor {
return links;
}
- private static Link maybeCreateLink(String rel, Object possibleHref) {
- if (possibleHref instanceof String) {
- return new Link(rel, (String) possibleHref);
+ private static Link maybeCreateLink(String rel, Object possibleLinkObject) {
+ if (possibleLinkObject instanceof Map) {
+ Object hrefObject = ((Map, ?>) possibleLinkObject).get("href");
+ if (hrefObject instanceof String) {
+ return new Link(rel, (String) hrefObject);
+ }
}
return null;
}
diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java
index 7353bbea..b26374e8 100644
--- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java
+++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014-2015 the original author or authors.
+ * Copyright 2014-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -53,7 +53,7 @@ public class LinkExtractorsPayloadTests {
private final String linkType;
- @Parameters
+ @Parameters(name = "{1}")
public static Collection data() {
return Arrays.asList(new Object[] { new HalLinkExtractor(), "hal" },
new Object[] { new AtomLinkExtractor(), "atom" });
diff --git a/spring-restdocs-core/src/test/resources/link-payloads/atom/wrong-format.json b/spring-restdocs-core/src/test/resources/link-payloads/atom/wrong-format.json
index 04a6d84b..a5e2e40f 100644
--- a/spring-restdocs-core/src/test/resources/link-payloads/atom/wrong-format.json
+++ b/spring-restdocs-core/src/test/resources/link-payloads/atom/wrong-format.json
@@ -1,5 +1,9 @@
{
- "_links": {
- "alpha": ["http://alpha.example.com/one", "http://alpha.example.com/two"]
+ "links": {
+ "alpha": [{
+ "href": "http://alpha.example.com/one"
+ }, {
+ "href": "http://alpha.example.com/two"
+ }]
}
}
\ No newline at end of file
diff --git a/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-different-rels.json b/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-different-rels.json
index 80d36d72..08d0f3ea 100644
--- a/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-different-rels.json
+++ b/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-different-rels.json
@@ -1,6 +1,10 @@
{
"_links": {
- "alpha": "http://alpha.example.com",
- "bravo": "http://bravo.example.com"
+ "alpha": {
+ "href": "http://alpha.example.com"
+ },
+ "bravo": {
+ "href": "http://bravo.example.com"
+ }
}
}
\ No newline at end of file
diff --git a/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-same-rels.json b/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-same-rels.json
index 04a6d84b..45ebca3c 100644
--- a/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-same-rels.json
+++ b/spring-restdocs-core/src/test/resources/link-payloads/hal/multiple-links-same-rels.json
@@ -1,5 +1,9 @@
{
"_links": {
- "alpha": ["http://alpha.example.com/one", "http://alpha.example.com/two"]
+ "alpha": [{
+ "href": "http://alpha.example.com/one"
+ }, {
+ "href": "http://alpha.example.com/two"
+ }]
}
}
\ No newline at end of file
diff --git a/spring-restdocs-core/src/test/resources/link-payloads/hal/single-link.json b/spring-restdocs-core/src/test/resources/link-payloads/hal/single-link.json
index be90b377..d19ca125 100644
--- a/spring-restdocs-core/src/test/resources/link-payloads/hal/single-link.json
+++ b/spring-restdocs-core/src/test/resources/link-payloads/hal/single-link.json
@@ -1,5 +1,7 @@
{
"_links": {
- "alpha": "http://alpha.example.com"
+ "alpha": {
+ "href": "http://alpha.example.com"
+ }
}
}
\ No newline at end of file