File tree 2 files changed +55
-0
lines changed
main/java/com/fasterxml/jackson/core/filter
test/java/com/fasterxml/jackson/core/filter
2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change @@ -243,6 +243,36 @@ public void writeStartObject() throws IOException
243
243
}
244
244
}
245
245
246
+ @ Override
247
+ public void writeStartObject (Object forValue ) throws IOException
248
+ {
249
+ if (_itemFilter == null ) {
250
+ _filterContext = _filterContext .createChildObjectContext (_itemFilter , false );
251
+ return ;
252
+ }
253
+ if (_itemFilter == TokenFilter .INCLUDE_ALL ) {
254
+ _filterContext = _filterContext .createChildObjectContext (_itemFilter , true );
255
+ delegate .writeStartObject (forValue );
256
+ return ;
257
+ }
258
+
259
+ TokenFilter f = _filterContext .checkValue (_itemFilter );
260
+ if (f == null ) {
261
+ return ;
262
+ }
263
+
264
+ if (f != TokenFilter .INCLUDE_ALL ) {
265
+ f = f .filterStartObject ();
266
+ }
267
+ if (f == TokenFilter .INCLUDE_ALL ) {
268
+ _checkParentPath ();
269
+ _filterContext = _filterContext .createChildObjectContext (f , true );
270
+ delegate .writeStartObject (forValue );
271
+ } else { // filter out
272
+ _filterContext = _filterContext .createChildObjectContext (f , false );
273
+ }
274
+ }
275
+
246
276
@ Override
247
277
public void writeEndObject () throws IOException
248
278
{
Original file line number Diff line number Diff line change @@ -305,4 +305,29 @@ public void testIndexMatchWithPath2() throws Exception
305
305
writeJsonDoc (JSON_F , JSON , gen );
306
306
assertEquals (aposToQuotes ("{'array':[1,2]}" ), w .toString ());
307
307
}
308
+
309
+ public void testWriteStartObjectWithObject () throws Exception
310
+ {
311
+ StringWriter w = new StringWriter ();
312
+
313
+ JsonGenerator gen = new FilteringGeneratorDelegate (JSON_F .createGenerator (w ),
314
+ TokenFilter .INCLUDE_ALL ,
315
+ true , true );
316
+
317
+ String value = "val" ;
318
+
319
+ gen .writeStartObject (new Object ());
320
+ gen .writeFieldName ("field1" );
321
+ {
322
+ gen .writeStartObject (value );
323
+ gen .writeEndObject ();
324
+ }
325
+
326
+ gen .writeFieldName ("field2" );
327
+ gen .writeString ("val2" );
328
+
329
+ gen .writeEndObject ();
330
+ gen .close ();
331
+ assertEquals (aposToQuotes ("{'field1':{},'field2':'val2'}" ), w .toString ());
332
+ }
308
333
}
You can’t perform that action at this time.
0 commit comments