Skip to content

Commit 2226bd7

Browse files
committed
Refactoring to use CoercionConfigs so as not to need ValueInstantiator
1 parent 3971bef commit 2226bd7

File tree

5 files changed

+16
-79
lines changed

5 files changed

+16
-79
lines changed

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

+1-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import com.fasterxml.jackson.databind.AnnotationIntrospector;
44
import com.fasterxml.jackson.databind.module.SimpleModule;
5+
56
import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser;
67
import com.fasterxml.jackson.dataformat.xml.deser.XmlBeanDeserializerModifier;
7-
import com.fasterxml.jackson.dataformat.xml.deser.XmlBeanInstantiator;
88
import com.fasterxml.jackson.dataformat.xml.deser.XmlStringDeserializer;
99
import com.fasterxml.jackson.dataformat.xml.ser.XmlBeanSerializerModifier;
1010

@@ -72,9 +72,6 @@ public void setupModule(SetupContext context)
7272
// as well as AnnotationIntrospector
7373
context.insertAnnotationIntrospector(_constructIntrospector());
7474

75-
// 2.11 adds ValueInstantiator, too
76-
context.addValueInstantiators(new XmlBeanInstantiator.Provider());
77-
7875
// and finally inform XmlFactory about overrides, if need be:
7976
if (_cfgNameForTextElement != FromXmlParser.DEFAULT_UNNAMED_TEXT_PROPERTY) {
8077
XmlMapper m = (XmlMapper) context.getOwner();

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

+13-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.fasterxml.jackson.core.*;
1111
import com.fasterxml.jackson.core.type.TypeReference;
1212
import com.fasterxml.jackson.databind.*;
13+
import com.fasterxml.jackson.databind.cfg.CoercionAction;
14+
import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
1315
import com.fasterxml.jackson.databind.cfg.MapperBuilder;
1416
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
1517
import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
@@ -146,9 +148,8 @@ public XmlMapper(JacksonXmlModule module) {
146148

147149
public XmlMapper(XmlFactory xmlFactory, JacksonXmlModule module)
148150
{
149-
/* Need to override serializer provider (due to root name handling);
150-
* deserializer provider fine as is
151-
*/
151+
// Need to override serializer provider (due to root name handling);
152+
// deserializer provider fine as is
152153
super(xmlFactory, new XmlSerializerProvider(new XmlRootNameLookup()), null);
153154
_xmlModule = module;
154155
// but all the rest is done via Module interface!
@@ -165,6 +166,15 @@ public XmlMapper(XmlFactory xmlFactory, JacksonXmlModule module)
165166
// Base64 default as "MIME" (not MIME-NO-LINEFEEDS), to preserve pre-2.12
166167
// behavior
167168
setBase64Variant(Base64Variants.MIME);
169+
170+
// 04-Jun-2020, tatu: Use new (2.12) "CoercionConfigs" to support coercion
171+
// from empty and blank Strings to "empty" POJOs etc
172+
coercionConfigDefaults()
173+
// To allow indentation without problems, need to accept blank String as empty:
174+
.setAcceptBlankAsEmpty(Boolean.TRUE)
175+
// and then coercion from empty String to empty value, in general
176+
.setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty)
177+
;
168178
}
169179

170180
/**

src/main/java/com/fasterxml/jackson/dataformat/xml/deser/XmlBeanDeserializerModifier.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config,
100100
// coercion.
101101
// 30-Apr-2020, tatu: Complication from [dataformat-xml#318] as we now
102102
// have a delegate too...
103-
if ((inst instanceof XmlBeanInstantiator) || !inst.canCreateFromString()) {
103+
if (!inst.canCreateFromString()) {
104104
SettableBeanProperty textProp = _findSoleTextProp(config, deser.properties());
105105
if (textProp != null) {
106106
return new XmlTextDeserializer(deser, textProp);

src/main/java/com/fasterxml/jackson/dataformat/xml/deser/XmlBeanInstantiator.java

-71
This file was deleted.

src/test/java/com/fasterxml/jackson/dataformat/xml/failing/EmptyListDeser124Test.java

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55

66
import com.fasterxml.jackson.annotation.JsonProperty;
7+
78
import com.fasterxml.jackson.dataformat.xml.*;
89

910
// for [dataformat-xml#124]

0 commit comments

Comments
 (0)