Comments (7)
@felixWackernagel There is unit test (TestSerializerCustom.java
) that checks:
public void testIssue42() throws Exception
{
XmlMapper xmlMapper = new XmlMapper();
SimpleModule m = new SimpleModule("module", new Version(1,0,0,null,null,null));
m.addSerializer(Item.class, new ItemSerializer());
m.addDeserializer(Item.class, new ItemDeserializer());
xmlMapper.registerModule(m);
....
so I would need more information on how your case differs.
But for issue tracking purposes, could you open a new issue? It is likely that underlying cause is different, and it is easier to create release notes when fixes are not spread across multiple releases (that is, fix for this problem was in 2.0.7; fix for remaining issue would go in 2.5.2)
from jackson-dataformat-xml.
Ah. Good catch -- it is not calling super-class registration methods. Will fix this for 2.1.1.
from jackson-dataformat-xml.
Fixed; also affects 2.0 (fixed for 2.0.7).
from jackson-dataformat-xml.
Still open. I write
final ObjectMapper mapper = new XmlMapper();
final SimpleModule = new JacksonXmlModule();
module.addSerializer(Item.class, new ItemSerializer());
mapper.registerModule( module );
And got a Infinite recursion (StackOverflowError).
I test it in 2.4.5 and 2.5.1
from jackson-dataformat-xml.
We have upgraded to jersey 2.29.1 and so jackson to lastest 2.10.0. It seems like XmlMapper still ignores custom serializer.
My code is exactly as below. It is being invoked via XMLContextResolver. But _serializers = null in XmlMapper object.
@Provider
@Produces({ MediaType.TEXT_XML, MediaType.APPLICATION_XML })
public class XmlMapperContextResolver implements ContextResolver<XmlMapper> {
private Map<String, XmlMapper> xmlMapperMap = new HashMap<>(2);
@Override
public XmlMapper getContext(Class<?> type) {
return xmlMapperMap.get("model");
}
public XmlMapperContextResolver() {
XMLInputFactory xMLInputFactory = XMLInputFactory.newInstance();
xMLInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false); // This disables DTDs entirely for that factory
xMLInputFactory.setProperty("javax.xml.stream.isSupportingExternalEntities", false); // disable external entities
final XmlMapper modelXmlMapper = new XmlMapper(xMLInputFactory);
final XmlMapper defaultXmlMapper = new XmlMapper(xMLInputFactory);
xmlMapperMap.put("model", modelXmlMapper);
JacksonXmlModule module = new JacksonXmlModule();
module.setDefaultUseWrapper(false);
module.addSerializer(PropertyMap.class, new PropertyMapSerializer());
module.addSerializer(OptionList.class, new OptionListSerializer());
module.addSerializer(MessageBeanList.class, new MessageBeanSerializer());
module.addSerializer(PropertyPoolMap.class, new PropertyPoolMapSerializer());
module.addSerializer(ModelAndModelGroupList.class, new ModelGroupSerializer());
modelXmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
modelXmlMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
modelXmlMapper.registerModule(module);
modelXmlMapper.setAnnotationIntrospector(new XmlAnnotationIntrospector());
modelXmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.PASCAL_CASE_TO_CAMEL_CASE);
}
}
It seems XmlMapper still ignores custom serializer.
I tried using ObjectMapper with SimpleModule, but it does give me desired xml. I get desried xml using JacksonXmlModule, but I want to do some additional work using custom serializer.
Can someone help me enforce custom serializer in above code? I want to use JacksonXmlModule only.
from jackson-dataformat-xml.
Has anyone confirmed this? I sill see this issue on 2.11.1 version.
from jackson-dataformat-xml.
@kbansod I commented on #41 already, asking for reproduction. This will be needed for fix.
from jackson-dataformat-xml.
Related Issues (20)
- Java bean serialization XML encoding problem HOT 1
- Without setting `@JsonCreator` for the POJO, the `required` attribute in `@JsonProperty` is not checked HOT 1
- Disabling wrapper on list (e.g. defaultUseWrapper = false) does not serialize/deserialize null lists as expected HOT 2
- When the `localName` property of `@JacksonXmlProperty` is not set, the `required` of `@JsonProperty` does not detect the property name of POJO HOT 10
- java.lang.IllegalArgumentException: Cannot deserialize value of type `java.util.ArrayList<RetInfArryDTO> from Object value (token `JsonToken.START_OBJECT`) HOT 8
- Add `XmlMapper.createGenerator(XMLStreamWriter)` and `XmlMapper.createParser(XMLStreamReader)` overloads
- Support use of xsi:type for polymorphic deserialization (FromXmlParser.Feature.AUTO_DETECT_XSI_TYPE)
- Support Encoding option when writing XML HOT 1
- `JacksonXmlAnnotationIntrospector.findNamespace()` should properly merge namespace information
- xmlMapper.readValue( xmlString , Bean.class ) for Single Boolean Value does not get the value defaults with false HOT 1
- XML serialization of floating-point infinity is incompatible with JAXB and XML Schema HOT 2
- native compilation error with version 2.17.0 of com.fasterxml.jackson.dataformat:jackson-dataformat-xml HOT 3
- Deserializing fails when using builder classes with `Iterable` Collection setters HOT 11
- Deserialization into collection does not respect namespaces HOT 4
- Cannot construct instance of `PEPSchema.MEMBER` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('Yes1') HOT 8
- Conflicting Getter Definitions for Different List Properties with Same Element as Content (dup of #27) HOT 4
- Nesting depth in `XmlReadContext` is not incremented/decremented on JsonToken.START_OBJECT/JsonToken.END_OBJECT HOT 5
- Class attribute annotation with "@" stopped working in 2.17.+, parsing says "name expected" HOT 4
- @JacksonXmlProperty appears to behave differently than @JsonProperty when used on java records HOT 1
- How to avoid wstxns1: prefix HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jackson-dataformat-xml.