diff --git a/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java b/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java index 76eab5d8..fb7bfc43 100644 --- a/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java +++ b/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java @@ -49,20 +49,8 @@ import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.DeserializationConfig; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.KeyDeserializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.PropertyNamingStrategy.PropertyNamingStrategyBase; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.cfg.HandlerInstantiator; import com.fasterxml.jackson.databind.cfg.MapperConfig; import com.fasterxml.jackson.databind.deser.ContextualDeserializer; @@ -187,13 +175,12 @@ public class Jackson2HalModule extends SimpleModule { } LinkRelation rel = prefixingRequired ? curieProvider.getNamespacedRelFrom(link) : link.getRel(); + HalLinkRelation relation = transformingMapper.map(rel); - if (!link.hasRel(rel)) { + if (relation.isCuried()) { curiedLinkPresent = true; } - HalLinkRelation relation = transformingMapper.map(rel); - sortedLinks // .computeIfAbsent(relation, key -> new ArrayList<>())// .add(toHalLink(link, relation)); diff --git a/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java b/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java index 108914ed..51e88ed8 100755 --- a/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/mediatype/hal/Jackson2HalIntegrationTest.java @@ -17,6 +17,8 @@ package org.springframework.hateoas.mediatype.hal; import static org.assertj.core.api.Assertions.*; +import net.minidev.json.JSONArray; + import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -610,6 +612,16 @@ class Jackson2HalIntegrationTest { assertThat(result.getContent().name).isEqualTo("Dave"); } + @Test // #1399 + void rendersCurieInformationIfCuriedLinkIsGiven() throws Exception { + + RepresentationModel model = new RepresentationModel<>().add(Link.of("/href", LinkRelation.of("foo:bar"))); + + DocumentContext document = JsonPath.parse(getCuriedObjectMapper().writeValueAsString(model)); + + assertThat(document.read("$._links.curies", JSONArray.class)).isNotEmpty(); + } + @Relation(collectionRelation = "someSample") static class SomeSample { @JsonProperty String name;