2017-07-14 9 views
1

いくつかの外部データの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になります。

答えて

1

私は私自身の質問に対する解決策があると思います。 に加えてglobalBindingsには、isSetNumのようなメソッドを生成するかどうかを制御するオプションgenerateIsSetMethodがあります。これが有効な場合、Integerの代わりにintのようなプリミティブ型が使用されます。

関連する問題