2011-05-13 81 views
5

我有一個XmlAdapter的註釋,我需要將它放在package-info.java中。問題是,我們的package-info.java是自動生成的來自XJC。有沒有辦法使用JAXB綁定文件在生成時自動將此註釋添加到package-info.java?需要從綁定文件生成package-info.java中的JAXB提示

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

感謝您的幫助!

回答

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

+0

hmmmm ...我有點困惑..你是說上面生成的輸出將在我的Adapter或package-info.java中產生? – Brad 2011-05-16 22:17:37

+0

在您的package-info.java中,但您可以爲您的適配器執行 – EricParis16 2011-05-17 14:23:44

+0

除了使用適配器之外,還有其他方式使用綁定文件進行類替換嗎? – Brad 2011-06-02 18:08:50