Git Product home page Git Product logo

Comments (7)

cowtowncoder avatar cowtowncoder commented on September 27, 2024 1

@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.

cowtowncoder avatar cowtowncoder commented on September 27, 2024

Ah. Good catch -- it is not calling super-class registration methods. Will fix this for 2.1.1.

from jackson-dataformat-xml.

cowtowncoder avatar cowtowncoder commented on September 27, 2024

Fixed; also affects 2.0 (fixed for 2.0.7).

from jackson-dataformat-xml.

felixWackernagel avatar felixWackernagel commented on September 27, 2024

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.

kbansod avatar kbansod commented on September 27, 2024

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.

kbansod avatar kbansod commented on September 27, 2024

Has anyone confirmed this? I sill see this issue on 2.11.1 version.

from jackson-dataformat-xml.

cowtowncoder avatar cowtowncoder commented on September 27, 2024

@kbansod I commented on #41 already, asking for reproduction. This will be needed for fix.

from jackson-dataformat-xml.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.