@@ -263,22 +263,25 @@ private void removeNestedFrom(final Value value) {
263
263
/*package-private*/ private Value insertInto (final Array array , final InsertMode mode , final Value newValue ) {
264
264
// basic idea: reuse findIn logic here? setIn(findIn(array), newValue)
265
265
final String field = path [0 ];
266
- if (path . length == 1 ) {
267
- if (field . equals ( ASTERISK ) ) {
266
+ if (field . equals ( ASTERISK ) ) {
267
+ if (path . length == 1 ) {
268
268
for (int i = 0 ; i < array .size (); ++i ) {
269
269
mode .apply (array , String .valueOf (i + 1 ), newValue );
270
270
}
271
271
}
272
272
else {
273
- mode . apply ( array , field , newValue );
273
+ array . add ( Value . newHash ( h -> new FixPath ( tail ( path )). insertInto ( h , mode , newValue )) );
274
274
}
275
275
}
276
276
else {
277
- final String [] tail = tail (path );
278
- if (isReference (field )) {
279
- return processRef (getReferencedValue (array , field ), mode , newValue , field , tail );
277
+ if (path .length == 1 ) {
278
+ mode .apply (array , field , newValue );
279
+ }
280
+ else {
281
+ if (isReference (field )) {
282
+ return processRef (getReferencedValue (array , field ), mode , newValue , field , tail (path ));
283
+ }
280
284
}
281
- array .add (Value .newHash (h -> new FixPath (path ).insertInto (h , mode , newValue )));
282
285
}
283
286
return new Value (array );
284
287
}
@@ -287,12 +290,7 @@ private void removeNestedFrom(final Value value) {
287
290
// basic idea: reuse findIn logic here? setIn(findIn(hash), newValue)
288
291
final String field = path [0 ];
289
292
if (path .length == 1 ) {
290
- if (field .equals (ASTERISK )) {
291
- hash .forEach ((k , v ) -> mode .apply (hash , k , newValue )); //TODO: WDCD? insert into each element?
292
- }
293
- else {
294
- mode .apply (hash , field , newValue );
295
- }
293
+ mode .apply (hash , field , newValue );
296
294
}
297
295
else {
298
296
final String [] tail = tail (path );
0 commit comments