Можно ли использовать класс по умолчанию unmarshall при использовании значения узла Moxy @XmlDiscriminator? - PullRequest
0 голосов
/ 24 октября 2018

При использовании правила наследования Moxy @XmlDiscriminatorNode и @XmlDiscriminatorValue мы всегда должны указывать все возможные преобразования @XmlDiscriminatorValue в класс.Если входной XML имеет неопределенное значение в нашем коде, мы получим исключение ниже:

Exception [EclipseLink-43] (Eclipse Persistence Services -     2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [XXXX] of type [class java.lang.String].

Есть ли способ указать класс по умолчанию для сопоставления с неизвестным значением?

Пример вситуация ниже:

@XmlDiscriminatorNode("myNode")
@XmlSeeAlso({TypeA.class,TypeB.class}
public class BaseType {
    ...
}

@XmlDiscriminatorValue("typeA")
public class TypeA {
    ...
}

@XmlDiscriminatorValue("typeB")
public class TypeB {
...
}

@XmlRootElement
public class Root {
    ...
    @XmlElement
    public List<BaseType> baseTypes;
    ...
}

Теперь, если у нас есть элемент XML с атрибутом myNode="typeC", это сломает unmarshaller.Есть ли способ игнорировать неизвестные / неопределенные типы, так что если в будущем мы добавим в XML новый BaseType, это не нарушит точный код?

...