需要从绑定文件中生成package-info.java中的JAXB注释

时间:2011-05-13 19:02:09

标签: java binding jaxb adapter

我有一个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)
})

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

不幸的是,在外部绑定文件中定义自定义元素时,上面优雅的语法不起作用。 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