Eclipselink moxy проблема с маршалингом и демаршаллингом ENUM
Я хотел маршаллировать и отменять маркер enum, используя eclipselink moxy, однако, когда я пытаюсь разобрать, я получаю ниже указанное исключение
xml после сортировки
<?xml version="1.0" encoding="UTF-8"?>
<Payload>
<customObj>PRIMARY</customObj>
<Payload>
Боб Класс
@XmlRootElement(name="Payload")
public class Customer {
@XmlElement(required = true)
protected Object customObj;
public Object getCustomObj() {
return customObj;
}
public void setCustomObj(Object customObj) {
this.customObj = customObj;
}
}
Enum
@XmlType(name = "UserType")
public class UserType {
@XmlType(name = "UserTypeEnum")
@XmlEnum
public static enum UserTypeEnum {
PRIMARY,
SECONDARY,
GENERAL;
public String getUserTypeEnum() {
return this.name();
}
}
}
Код для маршала и демаршала
JAXBContext jc = JAXBContext.newInstance(Customer.class, UserTypeEnum.class);
Customer customer = new Customer();
customer.setCustomObj(UserTypeEnum.PRIMARY);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(customer, System.out);
File file = new File("C:\\MISC\\enum.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class, UserTypeEnum.class,
MyEnum.class);
System.out.println("jaxbContext is=" + jaxbContext.toString());
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer111 = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(((UserTypeEnum) customer111.getCustomObj()));
jaxb.properties
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Я получаю ошибку
Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to org.test.UserType$UserTypeEnum