package com.fasterxml.jackson.dataformat.xml.failing; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.fasterxml.jackson.dataformat.xml.XmlTestBase; public class TestEnums extends XmlTestBase { static enum TestEnum { A, B, C; } static class UntypedEnumBean { @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="__type") // this would actually work: // @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.WRAPPER_OBJECT) public Object value; public UntypedEnumBean() { } public UntypedEnumBean(TestEnum v) { value = v; } } /* /********************************************************** /* Unit tests /********************************************************** */ private final XmlMapper MAPPER = new XmlMapper(); public void testUntypedEnum() throws Exception { ObjectMapper mapper = new XmlMapper(); String xml = mapper.writeValueAsString(new UntypedEnumBean(TestEnum.B)); UntypedEnumBean result = mapper.readValue(xml, UntypedEnumBean.class); assertNotNull(result); assertNotNull(result.value); Object ob = result.value; if (TestEnum.class != ob.getClass()) { fail("Failed to deserialize TestEnum (got "+ob.getClass()+getName()+") from: "+xml); } assertEquals(TestEnum.B, result.value); } // [dataformat-xml#121] public void testRootEnumIssue121() throws Exception { String xml = MAPPER.writeValueAsString(TestEnum.B); TestEnum result = MAPPER.readValue(xml, TestEnum.class); assertNotNull(result); assertEquals(TestEnum.B, result); } }