diff --git a/src/main/java/com/fasterxml/jackson/dataformat/xml/JacksonXmlAnnotationIntrospector.java b/src/main/java/com/fasterxml/jackson/dataformat/xml/JacksonXmlAnnotationIntrospector.java index 8080d540f..a86914fca 100644 --- a/src/main/java/com/fasterxml/jackson/dataformat/xml/JacksonXmlAnnotationIntrospector.java +++ b/src/main/java/com/fasterxml/jackson/dataformat/xml/JacksonXmlAnnotationIntrospector.java @@ -4,9 +4,12 @@ import java.util.List; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.PropertyName; import com.fasterxml.jackson.databind.cfg.MapperConfig; import com.fasterxml.jackson.databind.introspect.*; +import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder; import com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder; import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; import com.fasterxml.jackson.dataformat.xml.annotation.*; @@ -225,6 +228,11 @@ protected StdTypeResolverBuilder _constructStdTypeResolverBuilder() { return new XmlTypeResolverBuilder(); } + @Override + protected TypeResolverBuilder _constructStdTypeResolverBuilder(MapperConfig config, JsonTypeInfo.Value typeInfo, JavaType baseType) { + return new XmlTypeResolverBuilder(typeInfo); + } + /* /********************************************************************** /* Internal methods diff --git a/src/main/java/com/fasterxml/jackson/dataformat/xml/XmlTypeResolverBuilder.java b/src/main/java/com/fasterxml/jackson/dataformat/xml/XmlTypeResolverBuilder.java index 6f7f21aea..a90f0697d 100644 --- a/src/main/java/com/fasterxml/jackson/dataformat/xml/XmlTypeResolverBuilder.java +++ b/src/main/java/com/fasterxml/jackson/dataformat/xml/XmlTypeResolverBuilder.java @@ -24,6 +24,13 @@ */ public class XmlTypeResolverBuilder extends StdTypeResolverBuilder { + public XmlTypeResolverBuilder() { + } + + public XmlTypeResolverBuilder(JsonTypeInfo.Value settings) { + super(settings); + } + @Override public StdTypeResolverBuilder init(JsonTypeInfo.Id idType, TypeIdResolver idRes) { @@ -35,6 +42,15 @@ public StdTypeResolverBuilder init(JsonTypeInfo.Id idType, TypeIdResolver idRes) return this; } + @Override + public StdTypeResolverBuilder init(JsonTypeInfo.Value settings, TypeIdResolver idRes) { + super.init(settings, idRes); + if (_typeProperty != null) { + _typeProperty = StaxUtil.sanitizeXmlTypeName(_typeProperty); + } + return this; + } + @Override public StdTypeResolverBuilder typeProperty(String typeIdPropName) {