Closed SimonCockx closed 3 weeks ago
I think that overriding of SerializerFactory
is very rare thing, this is probably the first time I've heard users doing that. So I don't think the problem here was anticipated.
It might help if I understood your use case better: why are you overriding SerializerFactory
?
See my comment in https://github.com/FasterXML/jackson-dataformat-xml/issues/676#issuecomment-2438049500.
At the moment I'm using a custom SerializerFactory
to "hack in" some solutions to that issue. :)
Ah ok. Yes, we should make it possible to configure SerializerFactory
even with XML module. Right now I am bit overloaded with Jackson work so I may not have time to work on this, BUT, if you had time to maybe propose a pr, I'd make sure find time to review and help with it.
Without remembering full details, I suspect JacksonXmlModule
should expose configurability of SerializerFactory
-- it seems to be passed to XmlSerializerProvider
(sub-class of default SerializerProvider
) as it's, well, required.
But I guess I am not sure which aspects of SerializerFactory
configuration you are referring to? No custom factory is used, and although some set methods probably set things on that factory indirectly, I don't see immediate paths.
But I guess I am not sure which aspects of
SerializerFactory
configuration you are referring to? No custom factory is used, and although some set methods probably set things on that factory indirectly, I don't see immediate paths.
Just to clarify the issue: the JacksonXmlModule
adds the following two modifiers:
context.addBeanSerializerModifier(new XmlBeanSerializerModifier());
context.addBeanDeserializerModifier(new XmlBeanDeserializerModifier(_cfgNameForTextElement));
When setting the SerializerFactory
after this module is registered, these modifiers are lost.
BUT, if you had time to maybe propose a pr, I'd make sure find time to review and help with it.
Thanks. I'll see if I find a moment, but can't make any promise either. :)
Ah. Yes, flow of configuration gets bit hairy, since SerializerFactory
is amongst oldest extant abstractions and its configuration was not as well-thought-out as newer additions.
This does explain the problem well fwtw.
And yes, pr would be great but we all have limited time so I take whatever I can get. :)
I did #680 and I think it might be the best small thing I can do; will merge.
I'm using a custom
SerializerFactory
as follows.I noticed that in the constructor of
XmlMapper
, the defaultXML_MODULE
is registered, which also configures theSerializerFactory
. Since I'm overriding it after constructing, this configuration is lost, resulting in different behaviour, which is very confusing.I currently don't see any way for registering my custom
SerializerFactory
before theXML_MODULE
is registered. Is this intended? It seems error-prone.My current workaround: