diff --git a/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java b/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java index e7f54b84..6fd9a6fc 100644 --- a/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java +++ b/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java @@ -128,12 +128,18 @@ public class Jackson2HalModule extends SimpleModule { // sort links according to their relation Map> sortedLinks = new LinkedHashMap>(); + boolean prefixingRequired = curieProvider != null; + boolean curiedLinkPresent = false; for (Link link : value) { String rel = prefixingRequired ? curieProvider.getNamespacedRelFrom(link) : link.getRel(); + if (!link.getRel().equals(rel)) { + curiedLinkPresent = true; + } + if (sortedLinks.get(rel) == null) { sortedLinks.put(rel, new ArrayList()); } @@ -141,7 +147,7 @@ public class Jackson2HalModule extends SimpleModule { sortedLinks.get(rel).add(link); } - if (prefixingRequired) { + if (prefixingRequired && curiedLinkPresent) { Object curieInformation = curieProvider.getCurieInformation(); List curies = new ArrayList(); curies.add(Arrays.asList(curieInformation)); diff --git a/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java b/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java index 11690731..a7723edf 100644 --- a/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java @@ -61,6 +61,7 @@ public class Jackson2HalIntegrationTest extends AbstractJackson2MarshallingInteg static final Links PAGINATION_LINKS = new Links(new Link("foo", Link.REL_NEXT), new Link("bar", Link.REL_PREVIOUS)); static final String CURIED_DOCUMENT = "{\"_links\":{\"self\":{\"href\":\"foo\"},\"foo:myrel\":{\"href\":\"bar\"},\"curies\":[{\"href\":\"http://localhost:8080/rels/{rel}\",\"name\":\"foo\",\"templated\":true}]}}"; + static final String SINGLE_NON_CURIE_LINK = "{\"_links\":{\"self\":{\"href\":\"foo\"}}}"; static final String EMPTY_DOCUMENT = "{}"; @Before @@ -295,6 +296,18 @@ public class Jackson2HalIntegrationTest extends AbstractJackson2MarshallingInteg assertThat(getCuriedObjectMapper().writeValueAsString(resources), is(EMPTY_DOCUMENT)); } + /** + * @see #125 + */ + @Test + public void doesNotRenderCuriesIfNoCurieLinkIsPresent() throws Exception { + + Resources resources = new Resources(Collections.emptySet()); + resources.add(new Link("foo")); + + assertThat(getCuriedObjectMapper().writeValueAsString(resources), is(SINGLE_NON_CURIE_LINK)); + } + private static Resources> setupAnnotatedPagedResources() { List> content = new ArrayList>();