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 9db3d088..1b32b538 100644
--- a/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java
+++ b/src/main/java/org/springframework/hateoas/mediatype/hal/Jackson2HalModule.java
@@ -584,8 +584,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())) {
@@ -595,18 +593,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 989ced81..9e918097 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()