From 3b41fc9149488a6dbe4030046fef182c37918bf3 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Sun, 29 Dec 2013 16:01:43 +0100 Subject: [PATCH] #132 - Added guard to Resource to shield it from being used with Collection content. Fixed ticket links in Jackson2HalIntegrationTests. --- src/main/java/org/springframework/hateoas/Resource.java | 2 ++ .../java/org/springframework/hateoas/ResourceUnitTest.java | 7 +++++++ .../hateoas/hal/Jackson2HalIntegrationTest.java | 5 ++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/hateoas/Resource.java b/src/main/java/org/springframework/hateoas/Resource.java index 216f3689..2442b597 100644 --- a/src/main/java/org/springframework/hateoas/Resource.java +++ b/src/main/java/org/springframework/hateoas/Resource.java @@ -16,6 +16,7 @@ package org.springframework.hateoas; import java.util.Arrays; +import java.util.Collection; import javax.xml.bind.annotation.XmlAnyElement; import javax.xml.bind.annotation.XmlRootElement; @@ -58,6 +59,7 @@ public class Resource extends ResourceSupport { public Resource(T content, Iterable links) { Assert.notNull(content, "Content must not be null!"); + Assert.isTrue(!(content instanceof Collection), "Content must not be a collection! Use Resources instead!"); this.content = content; this.add(links); } diff --git a/src/test/java/org/springframework/hateoas/ResourceUnitTest.java b/src/test/java/org/springframework/hateoas/ResourceUnitTest.java index 25c5c560..d6d72c5f 100644 --- a/src/test/java/org/springframework/hateoas/ResourceUnitTest.java +++ b/src/test/java/org/springframework/hateoas/ResourceUnitTest.java @@ -18,6 +18,8 @@ package org.springframework.hateoas; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; +import java.util.Collections; + import org.junit.Test; /** @@ -64,4 +66,9 @@ public class ResourceUnitTest { assertThat(left, is(not(right))); assertThat(right, is(not(left))); } + + @Test(expected = IllegalArgumentException.class) + public void rejectsCollectionContent() { + new Resource(Collections.emptyList()); + } } diff --git a/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java b/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java index d2fd5c77..11690731 100644 --- a/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java +++ b/src/test/java/org/springframework/hateoas/hal/Jackson2HalIntegrationTest.java @@ -274,7 +274,7 @@ public class Jackson2HalIntegrationTest extends AbstractJackson2MarshallingInteg } /** - * @see #126 + * @see #125 */ @Test public void rendersCuriesCorrectly() throws Exception { @@ -285,6 +285,9 @@ public class Jackson2HalIntegrationTest extends AbstractJackson2MarshallingInteg assertThat(getCuriedObjectMapper().writeValueAsString(resources), is(CURIED_DOCUMENT)); } + /** + * @see #125 + */ @Test public void doesNotRenderCuriesIfNoLinkIsPresent() throws Exception {