@@ -388,25 +388,15 @@ protected JsonGenerator _createGenerator(ObjectWriteContext writeCtxt,
388388 {
389389 // Only care about features and pretty-printer, for now;
390390 // may add CharacterEscapes in future?
391-
392- return new ToXmlGenerator (writeCtxt , ioCtxt ,
393- writeCtxt .getStreamWriteFeatures (_streamWriteFeatures ),
394- writeCtxt .getFormatWriteFeatures (_formatWriteFeatures ),
395- _createXmlWriter (out ),
396- _xmlPrettyPrinter (writeCtxt ),
397- _nameProcessor );
398- }
399391
392+ return _toXmlGenerator (writeCtxt , ioCtxt , _createXmlWriter (out ));
393+ }
394+
400395 @ Override
401396 protected JsonGenerator _createUTF8Generator (ObjectWriteContext writeCtxt ,
402397 IOContext ioCtxt , OutputStream out )
403398 {
404- return new ToXmlGenerator (writeCtxt , ioCtxt ,
405- writeCtxt .getStreamWriteFeatures (_streamWriteFeatures ),
406- writeCtxt .getFormatWriteFeatures (_formatWriteFeatures ),
407- _createXmlWriter (out ),
408- _xmlPrettyPrinter (writeCtxt ),
409- _nameProcessor );
399+ return _toXmlGenerator (writeCtxt , ioCtxt , _createXmlWriter (out ));
410400 }
411401
412402 private final XmlPrettyPrinter _xmlPrettyPrinter (ObjectWriteContext writeCtxt )
@@ -423,6 +413,19 @@ private final XmlPrettyPrinter _xmlPrettyPrinter(ObjectWriteContext writeCtxt)
423413 return (XmlPrettyPrinter ) pp ;
424414 }
425415
416+ /**
417+ * Overridable method to allow using custom FromXmlParser sub-classes.
418+ */
419+ protected ToXmlGenerator _toXmlGenerator (ObjectWriteContext writeCtxt , IOContext ioCtxt ,
420+ XMLStreamWriter sw ) {
421+ return new ToXmlGenerator (writeCtxt , ioCtxt ,
422+ writeCtxt .getStreamWriteFeatures (_streamWriteFeatures ),
423+ writeCtxt .getFormatWriteFeatures (_formatWriteFeatures ),
424+ sw ,
425+ _xmlPrettyPrinter (writeCtxt ),
426+ _nameProcessor );
427+ }
428+
426429 /*
427430 /**********************************************************************
428431 /* Extended public API, mostly for XmlMapper
@@ -442,11 +445,9 @@ public FromXmlParser createParser(ObjectReadContext readCtxt,
442445 }
443446
444447 // false -> not managed
445- return new FromXmlParser (readCtxt ,
448+ return _fromXmlParser (readCtxt ,
446449 _createContext (_createContentReference (sr ), false ),
447- readCtxt .getStreamReadFeatures (_streamReadFeatures ),
448- readCtxt .getFormatReadFeatures (_formatReadFeatures ),
449- sr , _nameProcessor , _cfgNameForTextElement );
450+ sr );
450451 }
451452
452453 /**
@@ -459,11 +460,7 @@ public ToXmlGenerator createGenerator(ObjectWriteContext writeCtxt,
459460 {
460461 sw = _initializeXmlWriter (sw );
461462 IOContext ioCtxt = _createContext (_createContentReference (sw ), false );
462- return new ToXmlGenerator (writeCtxt , ioCtxt ,
463- writeCtxt .getStreamWriteFeatures (_streamWriteFeatures ),
464- writeCtxt .getFormatWriteFeatures (_formatWriteFeatures ),
465- sw ,
466- _xmlPrettyPrinter (writeCtxt ), _nameProcessor );
463+ return _toXmlGenerator (writeCtxt , ioCtxt , sw );
467464 }
468465
469466 /*
@@ -482,11 +479,7 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
482479 } catch (XMLStreamException e ) {
483480 return StaxUtil .throwAsReadException (e , null );
484481 }
485- sr = _initializeXmlReader (sr );
486- return new FromXmlParser (readCtxt , ioCtxt ,
487- readCtxt .getStreamReadFeatures (_streamReadFeatures ),
488- readCtxt .getFormatReadFeatures (_formatReadFeatures ),
489- sr , _nameProcessor , _cfgNameForTextElement );
482+ return _fromXmlParser (readCtxt , ioCtxt , _initializeXmlReader (sr ));
490483 }
491484
492485 @ Override
@@ -499,11 +492,7 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
499492 } catch (XMLStreamException e ) {
500493 return StaxUtil .throwAsReadException (e , null );
501494 }
502- sr = _initializeXmlReader (sr );
503- return new FromXmlParser (readCtxt , ioCtxt ,
504- readCtxt .getStreamReadFeatures (_streamReadFeatures ),
505- readCtxt .getFormatReadFeatures (_formatReadFeatures ),
506- sr , _nameProcessor , _cfgNameForTextElement );
495+ return _fromXmlParser (readCtxt , ioCtxt , _initializeXmlReader (sr ));
507496 }
508497
509498 @ Override
@@ -525,11 +514,7 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
525514 } catch (XMLStreamException e ) {
526515 return StaxUtil .throwAsReadException (e , null );
527516 }
528- sr = _initializeXmlReader (sr );
529- return new FromXmlParser (readCtxt , ioCtxt ,
530- readCtxt .getStreamReadFeatures (_streamReadFeatures ),
531- readCtxt .getFormatReadFeatures (_formatReadFeatures ),
532- sr , _nameProcessor , _cfgNameForTextElement );
517+ return _fromXmlParser (readCtxt , ioCtxt , _initializeXmlReader (sr ));
533518 }
534519
535520 @ Override
@@ -548,7 +533,14 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
548533 } catch (XMLStreamException e ) {
549534 return StaxUtil .throwAsReadException (e , null );
550535 }
551- sr = _initializeXmlReader (sr );
536+ return _fromXmlParser (readCtxt , ioCtxt , _initializeXmlReader (sr ));
537+ }
538+
539+ /**
540+ * Overridable method to allow using custom FromXmlParser sub-classes.
541+ */
542+ protected FromXmlParser _fromXmlParser (ObjectReadContext readCtxt , IOContext ioCtxt ,
543+ XMLStreamReader sr ) {
552544 return new FromXmlParser (readCtxt , ioCtxt ,
553545 readCtxt .getStreamReadFeatures (_streamReadFeatures ),
554546 readCtxt .getFormatReadFeatures (_formatReadFeatures ),
0 commit comments