При использовании правила наследования 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, это не нарушит точный код?