From eafbda0c8ae84604d4e6ef154872df070def5ae4 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 1 May 2014 17:57:04 +0200 Subject: [PATCH] #172 - Made types contained in Link implement Serializable. --- .../hateoas/TemplateVariable.java | 5 ++++- .../hateoas/TemplateVariables.java | 5 ++++- .../springframework/hateoas/UriTemplate.java | 4 +++- .../springframework/hateoas/LinkUnitTest.java | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/TemplateVariable.java b/src/main/java/org/springframework/hateoas/TemplateVariable.java index 7074053c..2be80edc 100644 --- a/src/main/java/org/springframework/hateoas/TemplateVariable.java +++ b/src/main/java/org/springframework/hateoas/TemplateVariable.java @@ -15,6 +15,7 @@ */ package org.springframework.hateoas; +import java.io.Serializable; import java.util.Arrays; import java.util.List; @@ -26,7 +27,9 @@ import org.springframework.util.StringUtils; * * @author Oliver Gierke */ -public final class TemplateVariable { +public final class TemplateVariable implements Serializable { + + private static final long serialVersionUID = -2731446749851863774L; private final String name; private final TemplateVariable.VariableType type; diff --git a/src/main/java/org/springframework/hateoas/TemplateVariables.java b/src/main/java/org/springframework/hateoas/TemplateVariables.java index fc1be367..2812b196 100644 --- a/src/main/java/org/springframework/hateoas/TemplateVariables.java +++ b/src/main/java/org/springframework/hateoas/TemplateVariables.java @@ -15,6 +15,7 @@ */ package org.springframework.hateoas; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -29,9 +30,10 @@ import org.springframework.util.Assert; * * @author Oliver Gierke */ -public final class TemplateVariables implements Iterable { +public final class TemplateVariables implements Iterable, Serializable { public static TemplateVariables NONE = new TemplateVariables(); + private static final long serialVersionUID = -7736592281223783079L; private final List variables; @@ -112,6 +114,7 @@ public final class TemplateVariables implements Iterable { * (non-Javadoc) * @see java.lang.Object#toString() */ + @Override public String toString() { if (variables.isEmpty()) { diff --git a/src/main/java/org/springframework/hateoas/UriTemplate.java b/src/main/java/org/springframework/hateoas/UriTemplate.java index c0bfc809..c96d4dd7 100644 --- a/src/main/java/org/springframework/hateoas/UriTemplate.java +++ b/src/main/java/org/springframework/hateoas/UriTemplate.java @@ -15,6 +15,7 @@ */ package org.springframework.hateoas; +import java.io.Serializable; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; @@ -36,9 +37,10 @@ import org.springframework.web.util.UriComponentsBuilder; * @see http://tools.ietf.org/html/rfc6570 * @since 0.9 */ -public class UriTemplate implements Iterable { +public class UriTemplate implements Iterable, Serializable { private static final Pattern VARIABLE_REGEX = Pattern.compile("\\{([\\?\\&#/]?)([\\w\\,]+)\\}"); + private static final long serialVersionUID = -1007874653930162262L; private final TemplateVariables variables;; private String baseUri; diff --git a/src/test/java/org/springframework/hateoas/LinkUnitTest.java b/src/test/java/org/springframework/hateoas/LinkUnitTest.java index ffa209a5..99abac04 100644 --- a/src/test/java/org/springframework/hateoas/LinkUnitTest.java +++ b/src/test/java/org/springframework/hateoas/LinkUnitTest.java @@ -18,6 +18,10 @@ package org.springframework.hateoas; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; +import java.io.IOException; +import java.io.ObjectOutputStream; + +import org.apache.commons.io.output.ByteArrayOutputStream; import org.junit.Test; /** @@ -146,4 +150,17 @@ public class LinkUnitTest { assertThat(link.isTemplated(), is(false)); assertThat(link.getVariableNames(), hasSize(0)); } + + /** + * @see #172 + */ + @Test + public void serializesCorrectly() throws IOException { + + Link link = new Link("http://foobar{?foo,bar}"); + + ObjectOutputStream stream = new ObjectOutputStream(new ByteArrayOutputStream()); + stream.writeObject(link); + stream.close(); + } }