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 {