diff --git a/src/main/java/io/openapitools/jackson/dataformat/hal/ser/HALBeanSerializer.java b/src/main/java/io/openapitools/jackson/dataformat/hal/ser/HALBeanSerializer.java
index 5d170c3..bcb4295 100755
--- a/src/main/java/io/openapitools/jackson/dataformat/hal/ser/HALBeanSerializer.java
+++ b/src/main/java/io/openapitools/jackson/dataformat/hal/ser/HALBeanSerializer.java
@@ -4,6 +4,8 @@
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.type.WritableTypeId;
import com.fasterxml.jackson.databind.BeanDescription;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
@@ -16,13 +18,20 @@
import io.openapitools.jackson.dataformat.hal.annotation.Curies;
import io.openapitools.jackson.dataformat.hal.annotation.EmbeddedResource;
import io.openapitools.jackson.dataformat.hal.annotation.Link;
-import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
/**
* Serializer to handle {@link io.openapitools.jackson.dataformat.hal.annotation.Resource} beans ensuring they are serialized according to the HAL
* specification. This implies placing links inside the _links property and embedded objects inside the _embedded
@@ -200,7 +209,7 @@ public void serialize(Object bean, JsonGenerator jgen, SerializerProvider provid
jgen.writeStartObject();
for (String rel : links.keySet()) {
jgen.writeFieldName(rel);
- links.get(rel).serialize(jgen);
+ links.get(rel).serialize(jgen, provider);
}
jgen.writeEndObject();
}
@@ -285,22 +294,30 @@ public LinkProperty(Collection links) {
this.links = links == null ? new HashSet() : links;
}
- public void serialize(JsonGenerator jgen) throws IOException {
+ public void serialize(JsonGenerator jgen, SerializerProvider provider) throws IOException {
if (link != null) {
- writeLinkObject(jgen, link);
+ writeLinkObject(jgen, provider, link);
} else if (links != null) {
jgen.writeStartArray();
for (HALLink curLink : links) {
- writeLinkObject(jgen, curLink);
+ writeLinkObject(jgen, provider, curLink);
}
jgen.writeEndArray();
}
}
- private void writeLinkObject(JsonGenerator jgen, HALLink link) throws IOException {
- jgen.writeObject(link);
+ private void writeLinkObject(JsonGenerator jgen, SerializerProvider provider, HALLink link) throws IOException {
+ _findSerializer(link, provider).serialize(link, jgen, provider);
}
+ protected JsonSerializer