@@ -1653,14 +1653,19 @@ private static Object makeObjectForSetValue(Object value, final String key,
16531653 @ SuppressWarnings ("unchecked" )
16541654 public static Map <String , Object > update (final Map <String , Object > map1 , final Map <String , Object > map2 ) {
16551655 Map <String , Object > outMap = newLinkedHashMap ();
1656- for (String key : map2 .keySet ()) {
1657- Object value2 = map2 .get (key );
1656+ for (Map .Entry <String , Object > entry : map2 .entrySet ()) {
1657+ String key = entry .getKey ();
1658+ Object value2 = entry .getValue ();
16581659 if (map1 .containsKey (key )) {
16591660 Object value1 = map1 .get (key );
16601661 if (value1 instanceof Map && value2 instanceof Map ) {
16611662 outMap .put (key , update ((Map <String , Object >) value1 , (Map <String , Object >) value2 ));
16621663 } else if (value1 instanceof List && value2 instanceof List ) {
16631664 outMap .put (key , merge ((List <Object >) value1 , (List <Object >) value2 ));
1665+ } else if (value1 instanceof List ) {
1666+ outMap .put (key , merge ((List <Object >) value1 , newArrayList (value2 )));
1667+ } else if (value2 instanceof List ) {
1668+ outMap .put (key , merge (newArrayList (value1 ), (List <Object >) value2 ));
16641669 } else {
16651670 outMap .put (key , value2 );
16661671 }
0 commit comments