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

0 ответов

Другие вопросы по тегам