Skip to content

Commit 8b1e71a

Browse files
committed
Fix #678: allow configuring custom SerializerFactory via JacksonXmlModule
1 parent a4764b6 commit 8b1e71a

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

release-notes/VERSION-2.x

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Project: jackson-dataformat-xml
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
2.18.2 (not yet released)
8+
9+
#678: XML module not registered correctly when setting a custom `SerializerFactory`
10+
(reported by @SimonCockx)
11+
712
2.18.1 (28-Oct-2024)
813

914
No changes since 2.18.0

src/main/java/com/fasterxml/jackson/dataformat/xml/JacksonXmlModule.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.fasterxml.jackson.databind.AnnotationIntrospector;
44
import com.fasterxml.jackson.databind.module.SimpleModule;
5-
5+
import com.fasterxml.jackson.databind.ser.SerializerFactory;
66
import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser;
77
import com.fasterxml.jackson.dataformat.xml.deser.XmlBeanDeserializerModifier;
88
import com.fasterxml.jackson.dataformat.xml.ser.XmlBeanSerializerModifier;
@@ -39,13 +39,22 @@ public class JacksonXmlModule
3939
/**
4040
* Name used for pseudo-property used for returning XML Text value (which does
4141
* not have actual element name to use). Defaults to empty String, but
42-
* may be changed for interoperability reasons: JAXB, for example, uses
42+
* may be changed for inter-operability reasons: JAXB, for example, uses
4343
* "value" as name.
4444
*
4545
* @since 2.1
4646
*/
4747
protected String _cfgNameForTextElement = FromXmlParser.DEFAULT_UNNAMED_TEXT_PROPERTY;
48-
48+
49+
/**
50+
* Optional override for {@link SerializerFactory}
51+
* used by {@link XmlMapper}. Needed to allow proper override and configurability
52+
* using custom {@SerializerFactory} implementations.
53+
*
54+
* @since 2.18.2
55+
*/
56+
protected SerializerFactory _serializerFactoryOverride;
57+
4958
/*
5059
/**********************************************************************
5160
/* Life-cycle: construction
@@ -119,6 +128,29 @@ public void setDefaultUseWrapper(boolean state) {
119128
public void setXMLTextElementName(String name) {
120129
_cfgNameForTextElement = name;
121130
}
131+
132+
/**
133+
* Method to use for overriding default {@link SerializerFactory} used
134+
*
135+
* @since 2.18.2
136+
*/
137+
public JacksonXmlModule overrideSerializerFactory(SerializerFactory factory) {
138+
_serializerFactoryOverride = factory;
139+
return this;
140+
}
141+
142+
/*
143+
/**********************************************************************
144+
/* Accessors
145+
/**********************************************************************
146+
*/
147+
148+
/**
149+
* @since 2.18.2
150+
*/
151+
public SerializerFactory serializerFactoryOverride() {
152+
return _serializerFactoryOverride;
153+
}
122154

123155
/*
124156
/**********************************************************************

0 commit comments

Comments
 (0)