2017-07-14 81 views
1

我們使用jaxb2從xml模式定義中爲某些外部數據生成Java代碼。該項目相當老,並使用maven-jaxb-plugin 1.1.1。我們想更新jaxb2-maven-plugin,它也會使用jaxb2,但是我們在生成的代碼中發現了一些差異。具體來說,我們具有其中被映射到在生成的代碼Integer領域的JAXB2生成具有可選屬性的基元類型的獲取器/設置器

<xsd:attribute name="num" type="xsd:int" use="optional"> 

形式屬性。

@XmlAttribute(name = "num") 
protected Integer num; 

然而,JAXB2生成getter和setter與原始類型,而不是空類型:

public int getNum() { 
    return num; 
} 

public void setNum(int value) { 
    this.num = value; 
} 

public boolean isSetNum() { 
    return (this.num!= null); 
} 

public void unsetNum() { 
    this.num = null; 
} 

然而,我們目前的代碼假定getNum返回一個可空盒裝型和還測試此單元測試,其空指針異常失敗。

是否有一種方法可以爲可選屬性生成可爲空類型的getters/setters? xsd文件是由外部供應商提供的,所以我寧願不修改它們。我們不在<globalBindings>中設置optionalProperty,因此該值爲默認wrapper

回答

1

我想我有一個解決我自己的問題。除了optionalPropertyglobalBindings之外,還有選項generateIsSetMethod,它控制是否生成類似isSetNum的方法。如果啓用此功能,將使用原始類型(如int)而不是Integer

相關問題