@@ -115,6 +115,7 @@ void setUp() {
115
115
mappingContext .getPersistentEntity (WithCustomMappedPrimitiveCollection .class );
116
116
mappingContext .getPersistentEntity (BugModel .class );
117
117
mappingContext .getPersistentEntity (ArrayListHolder .class );
118
+ mappingContext .getPersistentEntity (MapWrapper .class );
118
119
mappingContext .afterPropertiesSet ();
119
120
120
121
this .entities = new PersistentEntities (Collections .singleton (mappingContext ));
@@ -742,6 +743,39 @@ void arraysCanRemoveElementsDuringMerge() throws Exception {
742
743
assertThat (updated .array ).containsExactly ("ancient" );
743
744
}
744
745
746
+ @ Test // GH-2350
747
+ void replacesArrays () throws Exception {
748
+
749
+ ArrayHolder holder = new ArrayHolder (new String [] { "original" });
750
+
751
+ ObjectMapper mapper = new ObjectMapper ();
752
+
753
+ JsonNode node = mapper .readTree ("{ \" array\" : [ \" first\" , \" update\" ] }" );
754
+ ArrayHolder result = reader .doMerge ((ObjectNode ) node , holder , mapper );
755
+
756
+ node = mapper .readTree ("{ \" array\" : [ \" second\" , \" update\" ] }" );
757
+ result = reader .doMerge ((ObjectNode ) node , holder , mapper );
758
+
759
+ assertThat (result .getArray ()).isEqualTo (new String [] { "second" , "update" });
760
+ }
761
+
762
+ @ Test // GH-2350
763
+ void replacesNestedArrays () throws Exception {
764
+
765
+ MapWrapper wrapper = new MapWrapper ();
766
+ wrapper .map .put ("array" , new String [] { "original" });
767
+
768
+ ObjectMapper mapper = new ObjectMapper ();
769
+
770
+ JsonNode node = mapper .readTree ("{ \" map\" : { \" array\" : [ \" first\" , \" update\" ] } }" );
771
+ MapWrapper result = reader .doMerge ((ObjectNode ) node , wrapper , mapper );
772
+
773
+ node = mapper .readTree ("{ \" map\" : { \" array\" : [ \" second\" , \" update\" ] } }" );
774
+ result = reader .doMerge ((ObjectNode ) node , wrapper , mapper );
775
+
776
+ assertThat (result .map .get ("array" )).isEqualTo (new String [] { "second" , "update" });
777
+ }
778
+
745
779
@ SuppressWarnings ("unchecked" )
746
780
private static <T > T as (Object source , Class <T > type ) {
747
781
@@ -1046,4 +1080,8 @@ public void setValues(Collection<String> values) {
1046
1080
this .values = values ;
1047
1081
}
1048
1082
}
1083
+
1084
+ static class MapWrapper {
1085
+ public Map <String , Object > map = new HashMap <>();
1086
+ }
1049
1087
}
0 commit comments