【问题标题】:Need to generate JAXB annotions in package-info.java from binding file需要从绑定文件中生成 package-info.java 中的 JAXB 注释
【发布时间】:2011-08-25 04:34:34
【问题描述】:

我有一个XmlAdapter 的注解,我需要将它放入package-info.java 中。问题是,我们的package-info.java 是从XJC 自动生成的。有没有办法使用 JAXB 绑定文件在生成时自动将这个注解添加到 package-info.java 中?

@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters
({
    @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=Adapter.class,type=Original.class)
})

感谢您的帮助!

【问题讨论】:

    标签: java binding jaxb adapter


    【解决方案1】:

    不幸的是,在外部绑定文件中定义自定义元素时,上面的优雅语法不起作用。 Annotate Plugin 为您提供了一种从 XJC 绑定自定义中读取注释并自动添加到您的 XmlAdapter 类中的方法。 因此,您的适配器类将被添加到您的 package-info.java。

    <jaxb:bindings
      version="2.1"
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:annox="http://annox.dev.java.net" 
      jaxb:extensionBindingPrefixes="annox">
    
      <jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
        ...
        <jaxb:bindings node="xs:complexType[@name='...']/xs:sequence/xs:element[@name='name']">
          <annox:annotate>
            <annox:annotate
              annox:class="org.hibernate.search.annotations.FieldBridge"
              impl="com.acme.foo.MyFieldBridge">
              <annox:annotate annox:field="params">
                <annox:annotate annox:class="org.hibernate.search.annotations.Parameter"
                  name="foo"
                  value="bar"/>
              </annox:annotate>
            </annox:annotate>
          </annox:annotate>
        </jaxb:bindings>
        ...
      </jaxb:bindings>
    
    </jaxb:bindings>
    

    生产:

    @FieldBridge(impl = com.acme.foo.MyFieldBridge.class, params = {
      @Parameter(name = "foo", value = "bar")
    })
    

    另一种方法是将绑定添加到您的架构:直接在架构文件中:

    Annotate Plugin

    【讨论】:

    • hmmmm...我有点困惑..您是说上面产生的输出将在我的适配器或 package-info.java 中产生?
    • 在您的 package-info.java 中,但您可以为您的适配器执行此操作
    • 除了使用适配器之外,还有其他方法可以使用绑定文件进行类替换吗?
    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多