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 be159dd..232e953 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 @@ -16,6 +16,7 @@ import io.openapitools.jackson.dataformat.hal.annotation.EmbeddedResource; import io.openapitools.jackson.dataformat.hal.annotation.Link; import java.io.IOException; +import java.net.URI; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -127,6 +128,10 @@ public FilteredProperties(Object bean, SerializerProvider provider, addLinks(relation, (Collection) prop.get(bean), curie); } else if (value instanceof HALLink) { addLink(relation, (HALLink) prop.get(bean), curie); + } else if (value instanceof String) { + addLink(relation, new HALLink.Builder((String) value).build(), curie); + } else if (value instanceof URI) { + addLink(relation, new HALLink.Builder((URI) value).build(), curie); } } else { diff --git a/src/test/java/io/openapitoools/jackson/dataformat/hal/ser/HALBeanSerializerIT.java b/src/test/java/io/openapitoools/jackson/dataformat/hal/ser/HALBeanSerializerIT.java index e5c67b8..48d6622 100755 --- a/src/test/java/io/openapitoools/jackson/dataformat/hal/ser/HALBeanSerializerIT.java +++ b/src/test/java/io/openapitoools/jackson/dataformat/hal/ser/HALBeanSerializerIT.java @@ -2,6 +2,7 @@ import java.net.URI; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -28,7 +29,9 @@ public void testSerialization() throws Exception { + "\"child\":[{\"href\":\"/top/1/child/1\"},{\"href\":\"/top/1/child/2\"}]," + "\"empty:list\":[]," + "\"self\":{\"href\":\"/top/1\"}," - + "\"templated\":{\"href\":\"/uri/{id}\",\"templated\":true}" + + "\"stringLink\":{\"href\":\"http://something.com\",\"templated\":false}," + + "\"templated\":{\"href\":\"/uri/{id}\",\"templated\":true}," + + "\"uriLink\":{\"href\":\"http://something.else.com\"}" + "}," + "\"_embedded\":{" + "\"child\":[" @@ -50,6 +53,12 @@ public static class TopResource { @Link("child") public HALLink childLink = new HALLink.Builder(URI.create("/should/be/overridden")).build(); + @Link + public String stringLink = "http://something.com"; + + @Link + public URI uriLink = new URI("http://something.else.com"); + @Link public HALLink templated = new HALLink.Builder("/uri/{id}").build(); @@ -75,6 +84,9 @@ public static class TopResource { @EmbeddedResource public String nullString = null; + + public TopResource() throws URISyntaxException { + } } @Resource