いくつかの外部データのxmlスキーマ定義からJavaコードを生成するためにjaxb2を使用しています。このプロジェクトはかなり古く、maven-jaxb-plugin 1.1.1を使用しています。 jaxb2を使用するjaxb2-maven-pluginに更新したいのですが、生成されるコードにいくつかの違いがあります。具体的には、生成されたコードでInteger
フィールドにマッピングされJAXB2は、オプション属性のプリミティブ型を持つゲッタ/セッタを生成します。
<xsd:attribute name="num" type="xsd:int" use="optional">
の形で属性を持ちます。
@XmlAttribute(name = "num")
protected Integer num;
しかし、JAXB2がプリミティブ型の代わりにnull許容タイプのゲッターとセッターを生成する:
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
がNULL可能箱入りタイプを返し、またどのユニットテストでこれをテストすることを前提としていNULLポインタ例外で失敗します。
オプションの属性にnullable型のgetters/setterを生成する方法はありますか? xsdファイルは外部ベンダーから提供されているので、私はそれらを変更したくないです。 optionalProperty
を<globalBindings>
に設定しないので、値はデフォルトのwrapper
になります。