From 6c99760621b102f8bbe6e24c5e769e3ab2d7e109 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 7 Dec 2016 18:33:13 +0100 Subject: [PATCH] DATAREST-953 - Added test case to verify this is fixed. Seems the change for DATAREST-938 has also fixed this one. Added a test case similar to what was provided in the example for the original ticket. --- .../json/DomainObjectReaderUnitTests.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) 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 01d44f388..a8675ab36 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 @@ -81,6 +81,7 @@ public class DomainObjectReaderUnitTests { mappingContext.getPersistentEntity(User.class); mappingContext.getPersistentEntity(Inner.class); mappingContext.getPersistentEntity(Outer.class); + mappingContext.getPersistentEntity(Parent.class); mappingContext.afterPropertiesSet(); PersistentEntities entities = new PersistentEntities(Collections.singleton(mappingContext)); @@ -352,6 +353,26 @@ public class DomainObjectReaderUnitTests { assertThat(result.temporary, is("new temp")); } + /** + * @see DATAREST-953 + */ + @Test + public void writesArrayForPut() throws Exception { + + Child inner = new Child(); + inner.items = new ArrayList(); + inner.items.add(new Item()); + + Parent source = new Parent(); + source.inner = inner; + + JsonNode node = new ObjectMapper().readTree("{ \"inner\" : { \"items\" : [ { \"some\" : \"value\" } ] } }"); + + Parent result = reader.readPut((ObjectNode) node, source, new ObjectMapper()); + + assertThat(result.inner.items.get(0).some, is("value")); + } + @JsonAutoDetect(fieldVisibility = Visibility.ANY) static class TypeWithGenericMap { @@ -407,4 +428,19 @@ public class DomainObjectReaderUnitTests { String name; String prop; } + + @JsonAutoDetect(fieldVisibility = Visibility.ANY) + static class Parent { + Child inner; + } + + @JsonAutoDetect(fieldVisibility = Visibility.ANY) + static class Child { + List items; + } + + @JsonAutoDetect(fieldVisibility = Visibility.ANY) + static class Item { + String some; + } }