@@ -173,7 +173,7 @@ public void writeStartArray() throws IOException
173173 _filterContext = _filterContext .createChildArrayContext (_itemFilter , false );
174174 }
175175 }
176-
176+
177177 @ Override
178178 public void writeStartArray (int size ) throws IOException
179179 {
@@ -202,6 +202,64 @@ public void writeStartArray(int size) throws IOException
202202 _filterContext = _filterContext .createChildArrayContext (_itemFilter , false );
203203 }
204204 }
205+
206+ @ Override
207+ public void writeStartArray (Object forValue ) throws IOException
208+ {
209+ if (_itemFilter == null ) {
210+ _filterContext = _filterContext .createChildArrayContext (null , false );
211+ return ;
212+ }
213+ if (_itemFilter == TokenFilter .INCLUDE_ALL ) {
214+ _filterContext = _filterContext .createChildArrayContext (_itemFilter , true );
215+ delegate .writeStartArray (forValue );
216+ return ;
217+ }
218+ _itemFilter = _filterContext .checkValue (_itemFilter );
219+ if (_itemFilter == null ) {
220+ _filterContext = _filterContext .createChildArrayContext (null , false );
221+ return ;
222+ }
223+ if (_itemFilter != TokenFilter .INCLUDE_ALL ) {
224+ _itemFilter = _itemFilter .filterStartArray ();
225+ }
226+ if (_itemFilter == TokenFilter .INCLUDE_ALL ) {
227+ _checkParentPath ();
228+ _filterContext = _filterContext .createChildArrayContext (_itemFilter , true );
229+ delegate .writeStartArray (forValue );
230+ } else {
231+ _filterContext = _filterContext .createChildArrayContext (_itemFilter , false );
232+ }
233+ }
234+
235+ @ Override
236+ public void writeStartArray (Object forValue , int size ) throws IOException
237+ {
238+ if (_itemFilter == null ) {
239+ _filterContext = _filterContext .createChildArrayContext (null , false );
240+ return ;
241+ }
242+ if (_itemFilter == TokenFilter .INCLUDE_ALL ) {
243+ _filterContext = _filterContext .createChildArrayContext (_itemFilter , true );
244+ delegate .writeStartArray (forValue , size );
245+ return ;
246+ }
247+ _itemFilter = _filterContext .checkValue (_itemFilter );
248+ if (_itemFilter == null ) {
249+ _filterContext = _filterContext .createChildArrayContext (null , false );
250+ return ;
251+ }
252+ if (_itemFilter != TokenFilter .INCLUDE_ALL ) {
253+ _itemFilter = _itemFilter .filterStartArray ();
254+ }
255+ if (_itemFilter == TokenFilter .INCLUDE_ALL ) {
256+ _checkParentPath ();
257+ _filterContext = _filterContext .createChildArrayContext (_itemFilter , true );
258+ delegate .writeStartArray (forValue , size );
259+ } else {
260+ _filterContext = _filterContext .createChildArrayContext (_itemFilter , false );
261+ }
262+ }
205263
206264 @ Override
207265 public void writeEndArray () throws IOException
@@ -242,7 +300,7 @@ public void writeStartObject() throws IOException
242300 _filterContext = _filterContext .createChildObjectContext (f , false );
243301 }
244302 }
245-
303+
246304 @ Override
247305 public void writeStartObject (Object forValue ) throws IOException
248306 {
@@ -273,6 +331,36 @@ public void writeStartObject(Object forValue) throws IOException
273331 }
274332 }
275333
334+ @ Override
335+ public void writeStartObject (Object forValue , int size ) throws IOException
336+ {
337+ if (_itemFilter == null ) {
338+ _filterContext = _filterContext .createChildObjectContext (_itemFilter , false );
339+ return ;
340+ }
341+ if (_itemFilter == TokenFilter .INCLUDE_ALL ) {
342+ _filterContext = _filterContext .createChildObjectContext (_itemFilter , true );
343+ delegate .writeStartObject (forValue , size );
344+ return ;
345+ }
346+
347+ TokenFilter f = _filterContext .checkValue (_itemFilter );
348+ if (f == null ) {
349+ return ;
350+ }
351+
352+ if (f != TokenFilter .INCLUDE_ALL ) {
353+ f = f .filterStartObject ();
354+ }
355+ if (f == TokenFilter .INCLUDE_ALL ) {
356+ _checkParentPath ();
357+ _filterContext = _filterContext .createChildObjectContext (f , true );
358+ delegate .writeStartObject (forValue , size );
359+ } else {
360+ _filterContext = _filterContext .createChildObjectContext (f , false );
361+ }
362+ }
363+
276364 @ Override
277365 public void writeEndObject () throws IOException
278366 {
@@ -322,6 +410,12 @@ public void writeFieldName(SerializableString name) throws IOException
322410 }
323411 }
324412
413+ // 02-Dec-2019, tatu: Not sure what else to do... so use default impl from base class
414+ @ Override
415+ public void writeFieldId (long id ) throws IOException {
416+ writeFieldName (Long .toString (id ));
417+ }
418+
325419 /*
326420 /**********************************************************
327421 /* Public API, write methods, text/String values
0 commit comments