33
44package com .azure .core .implementation .jackson ;
55
6- import com .azure .core .implementation .ReflectiveInvoker ;
76import com .azure .core .implementation .ReflectionUtils ;
7+ import com .azure .core .implementation .ReflectiveInvoker ;
88import com .azure .core .util .logging .ClientLogger ;
99import com .azure .core .util .logging .LogLevel ;
1010import com .fasterxml .jackson .databind .ObjectMapper ;
1111import com .fasterxml .jackson .databind .cfg .MapperBuilder ;
1212import com .fasterxml .jackson .databind .cfg .PackageVersion ;
1313
14- import java .lang .reflect .Array ;
15-
1614/**
1715 * Constructs and configures {@link ObjectMapper} instances that handle XML.
1816 */
@@ -25,9 +23,9 @@ public final class XmlMapperFactory {
2523 private static final String TO_XML_GENERATOR = "com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator$Feature" ;
2624 private final ReflectiveInvoker createXmlMapperBuilder ;
2725 private final ReflectiveInvoker defaultUseWrapper ;
28- private final ReflectiveInvoker enableWriteXmlDeclaration ;
26+ private final ReflectiveInvoker configureWriteXmlDeclaration ;
2927 private final Object writeXmlDeclaration ;
30- private final ReflectiveInvoker enableEmptyElementAsNull ;
28+ private final ReflectiveInvoker configureEmptyElementAsNull ;
3129 private final Object emptyElementAsNull ;
3230
3331 final boolean useJackson212 ;
@@ -43,9 +41,9 @@ private XmlMapperFactory() {
4341
4442 ReflectiveInvoker createXmlMapperBuilder ;
4543 ReflectiveInvoker defaultUseWrapper ;
46- ReflectiveInvoker enableWriteXmlDeclaration ;
44+ ReflectiveInvoker configureWriteXmlDeclaration ;
4745 Object writeXmlDeclaration ;
48- ReflectiveInvoker enableEmptyElementAsNull ;
46+ ReflectiveInvoker configureEmptyElementAsNull ;
4947 Object emptyElementAsNull ;
5048 try {
5149 Class <?> xmlMapper = Class .forName (XML_MAPPER , true , thisClassLoader );
@@ -58,11 +56,11 @@ private XmlMapperFactory() {
5856 defaultUseWrapper = ReflectionUtils .getMethodInvoker (xmlMapperBuilder ,
5957 xmlMapperBuilder .getDeclaredMethod ("defaultUseWrapper" , boolean .class ), false );
6058
61- enableWriteXmlDeclaration = ReflectionUtils .getMethodInvoker (xmlMapperBuilder ,
62- xmlMapperBuilder .getDeclaredMethod ("enable " , Array . newInstance ( toXmlGenerator , 0 ). getClass () ), false );
59+ configureWriteXmlDeclaration = ReflectionUtils .getMethodInvoker (xmlMapperBuilder ,
60+ xmlMapperBuilder .getDeclaredMethod ("configure " , toXmlGenerator , boolean . class ), false );
6361 writeXmlDeclaration = toXmlGenerator .getDeclaredField ("WRITE_XML_DECLARATION" ).get (null );
64- enableEmptyElementAsNull = ReflectionUtils .getMethodInvoker (xmlMapperBuilder ,
65- xmlMapperBuilder .getDeclaredMethod ("enable " , Array . newInstance ( fromXmlParser , 0 ). getClass () ), false );
62+ configureEmptyElementAsNull = ReflectionUtils .getMethodInvoker (xmlMapperBuilder ,
63+ xmlMapperBuilder .getDeclaredMethod ("configure " , fromXmlParser , boolean . class ), false );
6664 emptyElementAsNull = fromXmlParser .getDeclaredField ("EMPTY_ELEMENT_AS_NULL" ).get (null );
6765 } catch (Throwable ex ) {
6866 // Throw the Error only if it isn't a LinkageError.
@@ -79,9 +77,9 @@ private XmlMapperFactory() {
7977
8078 this .createXmlMapperBuilder = createXmlMapperBuilder ;
8179 this .defaultUseWrapper = defaultUseWrapper ;
82- this .enableWriteXmlDeclaration = enableWriteXmlDeclaration ;
80+ this .configureWriteXmlDeclaration = configureWriteXmlDeclaration ;
8381 this .writeXmlDeclaration = writeXmlDeclaration ;
84- this .enableEmptyElementAsNull = enableEmptyElementAsNull ;
82+ this .configureEmptyElementAsNull = configureEmptyElementAsNull ;
8583 this .emptyElementAsNull = emptyElementAsNull ;
8684
8785 this .useJackson212 = PackageVersion .VERSION .getMinorVersion () >= 12 ;
@@ -99,13 +97,13 @@ public ObjectMapper createXmlMapper() {
9997 .initializeMapperBuilder ((MapperBuilder <?, ?>) createXmlMapperBuilder .invokeStatic ());
10098
10199 defaultUseWrapper .invokeWithArguments (xmlMapperBuilder , false );
102- enableWriteXmlDeclaration .invokeWithArguments (xmlMapperBuilder , writeXmlDeclaration );
100+ configureWriteXmlDeclaration .invokeWithArguments (xmlMapperBuilder , writeXmlDeclaration , true );
103101
104102 /*
105103 * In Jackson 2.12 the default value of this feature changed from true to false.
106104 * https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.12#xml-module
107105 */
108- enableEmptyElementAsNull .invokeWithArguments (xmlMapperBuilder , emptyElementAsNull );
106+ configureEmptyElementAsNull .invokeWithArguments (xmlMapperBuilder , emptyElementAsNull , true );
109107
110108 xmlMapper = xmlMapperBuilder .build ();
111109 } catch (Exception exception ) {
0 commit comments