Moxy 不尊重超类/接口属性

2024-01-01

enter code here我的客户属性分布在两个接口上,如下所示。我使用子接口 ICustomer 定义了外部 xml 绑定。当我将 pojo 编组到 xml 时,Moxy 似乎忽略了超级接口的属性。这是一个错误还是我需要在 xml 元数据中显式指定这两个接口?

基础接口

public interface IBaseCustomer
{
    String getFirstName();

    void setFirstName(final String firstName);
}

子接口

public interface ICustomer extends IBaseCustomer
{
    String getLastName();

    void setLastName(final String lastName);

    Address getAddress();

    void setAddress(final Address address);

    List<PhoneNumber> getPhoneNumbers();

    void setPhoneNumbers(final List<PhoneNumber> phoneNumbers);

    void setPrefix(final String prefix);

    String getPrefix();
}

元数据XML

<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="blog.bindingfile">
   <xml-schema namespace="http://www.example.com/customer" element-form-default="QUALIFIED" />
   <java-types>
      <java-type name="ICustomer">
         <xml-root-element name="customer"/>
         <xml-type prop-order="firstName lastName address phoneNumbers" />
         <java-attributes>
            <xml-element java-attribute="firstName" name="first-name" />
            <xml-element java-attribute="lastName" name="last-name" />
            <xml-element java-attribute="phoneNumbers" name="phone-number" />
         </java-attributes>
      </java-type>
      <java-type name="PhoneNumber">
         <java-attributes>
            <xml-attribute java-attribute="type" />
            <xml-value java-attribute="number" />
         </java-attributes>
      </java-type>
   </java-types>
</xml-bindings>

output

<customer xmlns="http://www.example.com/customer">
   <prefix>pre</prefix>
</customer>

演示代码

Map<String, Object> properties = new HashMap<String, Object>(1);
InputStream resourceAsStream = Demo.class.getResourceAsStream("xml-bindings.xml");
properties.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, resourceAsStream);
JAXBContext jc = JAXBContext.newInstance("blog.bindingfile",  ICustomer.class.getClassLoader(), properties);

ICustomer customer = new Customer();
customer.setPrefix("pre");
customer.setFirstName("firstName");

Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(customer, System.out);

由 EclipseLink MOXy V 2.4.1 修复。

我发现 JavaClassImpl.getSuperClass 方法中添加了超级接口支持,如下所示:

public JavaClass getSuperclass() {
    if(this.superClassOverride != null) {
        return this.superClassOverride;
    }
    if(jClass.isInterface()) {
        Class[] superInterfaces = jClass.getInterfaces();
        if(superInterfaces != null) {
            if(superInterfaces.length == 1) {
                return javaModelImpl.getClass(superInterfaces[0]);
            } else {
                Class parent = null;
                for(Class next:superInterfaces) {
                    if(!(next.getName().startsWith("java.") || next.getName().startsWith("javax."))) {
                        if(parent == null) {
                            parent = next;
                        } else {
                            throw JAXBException.invalidInterface(jClass.getName());
                        }
                    }
                }
                return javaModelImpl.getClass(parent);
            }
        }
    }
    return javaModelImpl.getClass(jClass.getSuperclass());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Moxy 不尊重超类/接口属性 的相关文章

随机推荐

  • 成功将分页 JSON 对象强制转换为 R 数据帧

    我正在尝试将从 API 中提取的 JSON 转换为 R 中的数据帧 以便我可以使用和分析数据 Install needed packages require RJSONIO require httr request a list of co
  • 今天查看扩展(小部件)无法正常工作

    我发现其他几个线程也有类似的问题 但没有人遇到完全相同的问题 除此之外 它确实工作了一段时间 现在 在之前工作一段时间时 错误不断发生 当运行我的应用程序时 它有一个构建目标 Today View Extension 我没有得到实际结果 该
  • 动态显示tinymce文本区域

    我有一个下拉列表 当进行选择时 将使用 ajax 将表单中的一堆元素插入到 DOM 在此表单中 我有一些文本区域 我希望将其设为 TinyMCE 文本区域 我的 HTML 头中有这样的内容 这是我用来添加一堆元素的 ajax 函数 它正在按
  • `pip install opencv-python` 是什么意思,它是一个完整的 opencv 吗?

    我认为让 opencv 在我的环境中运行的最快方法就像这样简单 sudo pip install opencv python 它似乎工作正常 我可以导入 import cv2 img cv2 imread a jpg 0 但不会加载 cv2
  • Magento 静态块。去除包装

    当我创建静态块时 magento 将内容包装为 p 标签 这对于 DOM 来说非常糟糕 有可能以某种方式将其删除 我想这是一些 JavaScript 但我不知道是哪一个 其实我之前的回答是错误的 您需要默认关闭静态块所见即所得编辑器 Go
  • 如何将按钮值发布到 PHP?

    我想在 html 页面上使用 A Z 按钮 如下所示 仅示例和几个单词
  • ASP Classic 下载文件脚本

    我有一个用 ASP Classic 构建的网站 并且在使用允许用户下载文件但隐藏文件路径的脚本时遇到一些问题 当用户在页面上时 他们将看到一个链接 该链接的编码如下 a href download asp file FILE NAME HE
  • Javascript正则表达式日期提取和分组问题

    我有这些行的文本行 Il Messaggero Roma 22 settembre 2023 Il Messaggero Roma 21 settembre 2023 Il Messaggero 22 settembre 2023 Il M
  • 异常类型可以通用吗?

    我尝试过以下方法 但不起作用 exception MyError lt a gt of a exception a MyError of a 我必须使用长形式吗 type MyError lt a gt value inherit Syst
  • 有人可以通过某种方式操作客户端应用程序来访问我的 Firestore 数据库吗?

    我真的很担心我将存储在 Firestore 中的数据的安全性 我想知道是否有人可以从我的 Android 应用程序中提取 google services json 文件或使用其他一些工具来访问我的 Firestore 数据库 有可能吗 如果
  • 安装rails时找不到Gem存储库

    我的 Windows 计算机上安装了 Ruby 1 8 7 和 Ruby 1 9 2 当我这样做时在我的控制台中ruby v它给了我 Ruby 1 8 7 现在当我尝试时 gem install rails v 2 3 8 我收到这个错误
  • 当 WPF ProgressBar 达到 100% 时,如何停止它的脉冲/动画?

    我有一个基于 MVVM 的 WPF 4 应用程序 它使用进度条 http msdn microsoft com en us library system windows controls progressbar aspx显示长时间运行的操作
  • C++ 运算符 []

    我正在尝试实现运算符 该运算符用于 Set 一次 用于 Get 一次 我需要区分这两种情况 就像 get 的情况一样 如果返回值相等 我需要抛出异常至 1 而在 Set 的情况下 我只是覆盖该值 苹果 2 X y 苹果 2 我不知道如何区分
  • 伊莎贝尔:setprod 的问题

    以下等式在伊莎贝尔中是否成立 setprod f UNIV n finite set setprod x x f UNIV n finite set 如果是 我该如何证明 tested with Isabelle2013 2 theory
  • 操作系统错误:没有这样的文件或目录,errno = 2

    我无法加载存储在资产文件夹中的 html 文件 我已经搜索了两天了 但似乎无法找出原因 我已确保将其也包含在 pubspec yaml 中 并具有适当的缩进并且所有构建都很好 我在 pubspec yaml 中加载的图像资源加载没有问题 所
  • 在 Javafx 中为新的 ListView 条目添加动画

    问题 Hi 我正在尝试编写一个应用程序 其中 ListView 中的每个新条目都会动画化 这是我的代码 public class BookCell extends ListCell
  • AS3 生成动态 SWF?

    是否可以使用 AS3 以编程方式生成 swf 文件 我的小应用程序的作用是使用 FileReference 加载一堆图像 现在我想将它们编译成用户可以下载的独立 swf swf 将是幻灯片 edit 似乎对我的要求有一些误解 我想要一个已编
  • 如何在 Visual Studio 2010 中创建测试证书?

    我正在使用 Visual Studio 2010 我需要在 签名 选项卡中添加 测试证书 但 创建测试证书 按钮被禁用 有什么问题吗 如何激活它或如何创建测试证书 分步说明可在以下位置找到 https learn microsoft com
  • 使用 R 扩展 netCDF 文件中的维度

    我想使用 R 编写一个具有 无限 维度的 netCDF 文件 以便稍后扩展 这是我尝试过的 创建 netcdf文件 library ncdf4 define lat lon time dimensions lat lt ncdim def
  • Moxy 不尊重超类/接口属性

    enter code here我的客户属性分布在两个接口上 如下所示 我使用子接口 ICustomer 定义了外部 xml 绑定 当我将 pojo 编组到 xml 时 Moxy 似乎忽略了超级接口的属性名 这是一个错误还是我需要在 xml