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()