@@ -109,6 +109,7 @@ void setUp() {
109
109
mappingContext .getPersistentEntity (WithCustomMappedPrimitiveCollection .class );
110
110
mappingContext .getPersistentEntity (BugModel .class );
111
111
mappingContext .getPersistentEntity (ArrayListHolder .class );
112
+ mappingContext .getPersistentEntity (MapWrapper .class );
112
113
mappingContext .afterPropertiesSet ();
113
114
114
115
this .entities = new PersistentEntities (Collections .singleton (mappingContext ));
@@ -736,6 +737,39 @@ void arraysCanRemoveElementsDuringMerge() throws Exception {
736
737
assertThat (updated .array ).containsExactly ("ancient" );
737
738
}
738
739
740
+ @ Test // GH-2350
741
+ void replacesArrays () throws Exception {
742
+
743
+ ArrayHolder holder = new ArrayHolder (new String [] { "original" });
744
+
745
+ ObjectMapper mapper = new ObjectMapper ();
746
+
747
+ JsonNode node = mapper .readTree ("{ \" array\" : [ \" first\" , \" update\" ] }" );
748
+ ArrayHolder result = reader .doMerge ((ObjectNode ) node , holder , mapper );
749
+
750
+ node = mapper .readTree ("{ \" array\" : [ \" second\" , \" update\" ] }" );
751
+ result = reader .doMerge ((ObjectNode ) node , holder , mapper );
752
+
753
+ assertThat (result .getArray ()).isEqualTo (new String [] { "second" , "update" });
754
+ }
755
+
756
+ @ Test // GH-2350
757
+ void replacesNestedArrays () throws Exception {
758
+
759
+ MapWrapper wrapper = new MapWrapper ();
760
+ wrapper .map .put ("array" , new String [] { "original" });
761
+
762
+ ObjectMapper mapper = new ObjectMapper ();
763
+
764
+ JsonNode node = mapper .readTree ("{ \" map\" : { \" array\" : [ \" first\" , \" update\" ] } }" );
765
+ MapWrapper result = reader .doMerge ((ObjectNode ) node , wrapper , mapper );
766
+
767
+ node = mapper .readTree ("{ \" map\" : { \" array\" : [ \" second\" , \" update\" ] } }" );
768
+ result = reader .doMerge ((ObjectNode ) node , wrapper , mapper );
769
+
770
+ assertThat (result .map .get ("array" )).isEqualTo (new String [] { "second" , "update" });
771
+ }
772
+
739
773
@ SuppressWarnings ("unchecked" )
740
774
private static <T > T as (Object source , Class <T > type ) {
741
775
@@ -1128,4 +1162,8 @@ public void setValues(Collection<String> values) {
1128
1162
this .values = values ;
1129
1163
}
1130
1164
}
1165
+
1166
+ static class MapWrapper {
1167
+ public Map <String , Object > map = new HashMap <>();
1168
+ }
1131
1169
}
0 commit comments