2

我的启用 Maven 的项目一切正常。

但是当我今天重建它时,测试开始失败并出现错误

the property or field count on the class org.musicbrainz.mmd2.DiscList 
is required to be included in the propOrder element of the XmlType annotation

没有代码发生变化,所以我认为 eclipselink MOXy 2.5 snaphot jar 中发生了一些变化。

我可以通过从 oxml.xml 中删除有问题的映射来解决它

<java-type name="DiscList">
    <java-attributes>
        <xml-element java-attribute="count" name="disc-count"/>
    </java-attributes>
</java-type>

但后来我得到的 json 不正确(因为我需要将 count 重命名为 disc-count)。

我可以通过修改我的 DiscList.java 类并按照异常的建议添加到 propOrder 来修复它

IE

@XmlType(name = "", propOrder = {
    "disc"    
})

@XmlType(name = "", propOrder = {
    "disc","count"
})

但这很痛苦,因为这些类是从模式自动生成的,我不想在每次模式更改时都手动编辑它们。

所以问题真的是 MOXy 发生了什么变化,这个变化是否引入了错误?

4

1 回答 1

0

我们在 2.4.2 和 2.5.0 版本中对EclipseLink MOXy进行了此更改(这两个流目前都在开发中)。进行此更改以反映 JAXB 参考实现中的相应行为。

相关错误

推荐修复

如果您在外部映射文件中添加新映射(这有点罕见,因为您必须通过注释显式删除映射 - http://blog.bdoughan.com/2012/04/jaxb-and-unmapped-属性.html)。然后,您还需要覆盖propOrder外部映射文件中的 。

<java-type name="DiscList">
    <xml-type prop-order="disc count"/>
    <java-attributes>
        <xml-element java-attribute="count" name="disc-count"/>
    </java-attributes>
</java-type>

向我们发送您的反馈

我们希望获得有关我们所做更改的反馈,尤其是仍在开发中的流。最好的机制是:

了解更多信息


更新

感谢您的回答,尽管我不相信仅仅因为我想重命名它就要求我向道具订单添加元素是一种改进。我不知道为什么 count 还没有在 proplist 中我没有把它拿出来,只是在使用 JAXB 自动创建类时没有添加它。

如果您的 Java 类是从 XML 模式生成的并且count对应于 XML 元素,那么它应该按 prop 顺序排列。MOXy 使用与参考实现相同的 XJC 代码,如果不完整,JAXB RI 也会引发异常,propOrder所以我不确定哪种情况会排除它。您介意发布生成的课程吗?我想看看这里是否有实际的错误。

如果 eclipselink maven 存储库是可浏览的,那也会很有用,download.eclipse.org/rt/eclipselink/maven.repo 页面没有给出对快照所做更改的任何指示。

我们正在努力改进我们的 Maven 设置。我建议将此作为针对build组件的增强请求输入:

于 2012-11-03T11:01:10.760 回答