2012-08-30 34 views
2

添加命名空間我有一個JAXB生成的類以下標註編輯JAXB的註解使用annox並在參數

@XmlType(name = "MessageInfoType", propOrder = { 
    "debugTraceBoolean", 
    "clientHostnameString", 
    "endUserIPAddress" 
}) 

需要產生JAXB類下面的註釋與定製binding..ie被需要編輯上面的註釋並使用annox添加一個名稱空間,如下所示。

 @XmlType(name = "MessageInfoType", propOrder = { 
      "debugTraceBoolean", 
      "clientHostnameString", 
      "endUserIPAddress" 
     }, namespace="urn:expedia:e3:data:messagetypes:defn:v4") 

我XJB文件是:

<jaxb:bindings schemaLocation="../../serviceDescription/atlantis/common/com.expedia.e3.data.messagetypes.v4.xsd"> 

    <jaxb:bindings node="//xs:complexType[@name='MessageInfoType']"> 
     <annox:annotate target="field"> 
      <annox:annotate annox:class="javax.xml.bind.annotation.XmlType" 
        namespace="urn:expedia:e3:data:messagetypes:defn:v4"/> 
     </annox:annotate> 
    </jaxb:bindings> 
    </jaxb:bindings> 
+0

需要重寫JAXB生成的類中的現有註釋,或者在自定義綁定文件中使用annox幫助刪除它。請幫助我 – user1631733

回答

4

所屬免責聲明:我是Annotate Plugin的作者。

如果您嘗試添加已存在的註釋(相同位置,相同註釋類),則會修改現有註釋而不是添加第二個註釋。目前我還不確定,如果這將覆蓋所有屬性或合併新的屬性,但絕對值得嘗試。

更新:

我重新檢查了這一點。的確,它已經實現了(應該是版本0.6.4,我剛剛檢查過0.6.5-SNAPSHOT)。

入住此示例:

https://svn.java.net/svn/jaxb2-commons~svn/basics/trunk/tests/annotate/src/main/resources/bindings.xjb

這裏的綁定:

<jaxb:bindings node="xs:complexType[@name='issueJIIB39CType']/xs:attribute[@name='test']"> 
     <annox:annotate target="field"> 
      <annox:annotate annox:class="javax.xml.bind.annotation.XmlAttribute" required="false"/> 
     </annox:annotate> 
    </jaxb:bindings> 

如果綁定存在,你會得到:

@XmlAttribute(name = "test", required = false) 
protected String test; 

如果不是會像這樣:

@XmlAttribute(name = "test", required = true) 
protected String test; 

所以,正如我所說的,如果你在同一個地方和同一個類上添加註釋,它們將被合併。

+1

我已經安裝了JAXB2-basics-annotate 0.6.4,JAXB2-basics-ant 0.6.4,JAXB2-basics-tools 0.6.4,其餘部分是 jaxb-api,jaxb-impl和jaxb-xjc jar(不知道這些jar的版本是什麼)。在使用0.6.4版jar後,我得到了下面的粗體錯誤,並猜測這是由於某些版本不匹配造成的。我正在使用JDK 1.6.0.29,並且0.6.4版本是否只能使用JDK 1.7請確認? 你能告訴我什麼是我需要使用的所有其他罐子的版本。因爲我得到了以下錯誤 java.lang.NoSuchMethodError:com.sun.codemodel.JAnnotatable.annotations()Ljava/util/Collection ; – user1631733

+0

嗨lexicore - 任何想法爲什麼上面粘貼的註釋插件文檔的鏈接被破壞?這是暫時的問題,還是項目已經停止? –

+0

服務器一次又一次地停機。現在回到網上。 – lexicore