diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/DomainObjectReader.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/DomainObjectReader.java index ce86de0d0..7858327e3 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/DomainObjectReader.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/DomainObjectReader.java @@ -348,7 +348,7 @@ public class DomainObjectReader { private static Collection asCollection(Object source) { if (source == null) { - return Collections.emptyList(); + return new ArrayList(); } if (source instanceof Collection) { diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/DomainObjectReaderUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/DomainObjectReaderUnitTests.java index 1aab3ca3c..f1099e226 100644 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/DomainObjectReaderUnitTests.java +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/DomainObjectReaderUnitTests.java @@ -390,6 +390,24 @@ public class DomainObjectReaderUnitTests { assertThat(result.inner.items.get(0).some, is("value")); } + /** + * @see DATAREST-959 + */ + @Test + public void writesArrayOverUndefinedValueForPut() throws Exception { + + Parent source = new Parent(); + source.inner = new Child(); + source.inner.items = null; + + JsonNode node = new ObjectMapper().readTree("{ \"inner\" : { \"items\" : [ { \"some\" : \"value\" } ] } }"); + + Parent result = reader.readPut((ObjectNode) node, source, new ObjectMapper()); + + assertThat(result.inner.items.size(), is(1)); + assertThat(result.inner.items.get(0).some, is("value")); + } + @Test public void testname() throws Exception {