MOXy JAXB нулевые элементы при демаршаллинге с использованием графов объектов - PullRequest
0 голосов
/ 17 октября 2019

Предположим, у меня есть следующие классы:

@XmlNamedObjectGraph(
        name = "summary-doc",
        attributeNodes = [
                @XmlNamedAttributeNode("figure"),
                @XmlNamedAttributeNode("table")
        ]
)
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement
public class Document {

    @XmlElement
    Conclusion conclusion;


    @XmlElement
    Table table

    @XmlElement
    String figure

    @XmlElement
    String title

    @XmlElement
    String quote

}


@XmlAccessorType(XmlAccessType.NONE)
@XmlType(propOrder = ["rowsCount", "columnsCount"])
class Table {

    @XmlElement
    Integer rowsCount
    @XmlElement
    Integer columnsCount
}

@XmlAccessorType(XmlAccessType.NONE)
@XmlType
class Conclusion {

    @XmlElement
    String description

}

И следующий xml, из которого следует выполнить демаршаллинг:

    <?xml version="1.0" encoding="UTF-8"?>
<document>
    <title>my title</title>
    <quote>my quote</quote>
    <conclusion>
        <description>my conclusion</description>
    </conclusion>
    <table>
        <rowsCount>25</rowsCount>
        <columnsCount>5</columnsCount>
    </table>
    <figure>Fig 32</figure>
</document>

Когда демаршаллинг выполняется с использованием "summary-doc"граф объектов, все поля созданного документа пусты.

Если я изменю порядок элементов xml и переместу объект, который не содержится в графе объектов, после элементов, представляющих интерес, заполняются итоговые поля. Таким образом, в следующем XML-коде поле «таблица» будет заполнено, но «фигура» все еще пуста, поскольку «заключение» отсутствует в графе объектов и отображается перед элементом «фигура» в XML.

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <title>my title</title>
    <quote>my quote</quote>
    <table>
        <rowsCount>25</rowsCount>
        <columnsCount>5</columnsCount>
    </table>
    <conclusion>
        <description>my conclusion</description>
    </conclusion>
    <figure>Fig 32</figure>
</document>

Я использую eclipselink 2.7.4. У вас есть предложения, как это исправить?

...