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 c44af44b..39cd4348 100644 --- a/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java +++ b/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java @@ -600,8 +600,6 @@ public class Jackson2HalModule extends SimpleModule { public List deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { List result = new ArrayList<>(); - String relation; - Link link; // links is an object, so we parse till we find its end. while (!JsonToken.END_OBJECT.equals(jp.nextToken())) { @@ -611,18 +609,14 @@ public class Jackson2HalModule extends SimpleModule { } // save the relation in case the link does not contain it - relation = jp.getText(); + String relation = jp.getText(); if (JsonToken.START_ARRAY.equals(jp.nextToken())) { while (!JsonToken.END_ARRAY.equals(jp.nextToken())) { - link = jp.readValueAs(Link.class); - result.add(Link.of(link.getHref(), relation).withHreflang(link.getHreflang()).withTitle(link.getTitle()) - .withType(link.getType()).withDeprecation(link.getDeprecation())); + result.add(jp.readValueAs(Link.class).withRel(relation)); } } else { - link = jp.readValueAs(Link.class); - result.add(Link.of(link.getHref(), relation).withHreflang(link.getHreflang()).withTitle(link.getTitle()) - .withType(link.getType()).withDeprecation(link.getDeprecation())); + result.add(jp.readValueAs(Link.class).withRel(relation)); } } diff --git a/src/main/java/org/springframework/hateoas/mediatype/hal/LinkMixin.java b/src/main/java/org/springframework/hateoas/mediatype/hal/LinkMixin.java index 26d2845a..d898238c 100644 --- a/src/main/java/org/springframework/hateoas/mediatype/hal/LinkMixin.java +++ b/src/main/java/org/springframework/hateoas/mediatype/hal/LinkMixin.java @@ -18,9 +18,11 @@ package org.springframework.hateoas.mediatype.hal; import org.springframework.hateoas.Link; import org.springframework.hateoas.mediatype.hal.Jackson2HalModule.TrueOnlyBooleanSerializer; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** @@ -35,6 +37,11 @@ public abstract class LinkMixin extends Link { private static final long serialVersionUID = 4720588561299667409L; + @JsonCreator + public static Link of(@JsonProperty("href") String href) { + return Link.of(href); + } + /* * (non-Javadoc) * @see org.springframework.hateoas.Link#getHreflang()