2017-02-07 3 views
0

jaxb/xkcを使用して、xsdに関連する一連のクラスを生成します。私はCを渡す場合無効な列挙型の値JAXB - 例外をスローするのではなくNULLに変換します。

は具体的に私が値として使用すると、それが原因で、次の生成されたコードで失敗することが期待される中で、

<xs:simpleType name="TEST"> 
    <xs:annotation> 
     <xs:documentation> 
      BLAH 
     </xs:documentation> 
    </xs:annotation> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="FOO"/> 
     <xs:enumeration value="BAR"/> 
    </xs:restriction> 
</xs:simpleType>  

今(XSDから)以下の定義された列挙に問題がある

@XmlType(name = "TEST") 
@XmlEnum 
public enum TEST{ 

    @XmlEnumValue("FOO") 
    FOO("FOO"), 
    @XmlEnumValue("BAR") 
    BAR("BAR"); 
    private final String value; 

    TEST(String v) { 
     value = v; 
    } 

    public String value() { 
     return value; 
    } 

    public static TEST fromValue(String v) { 
     for (TEST test: TEST.values()) { 
      if (test.value.equals(v)) { 
       return test; 
      } 
     } 
     throw new IllegalArgumentException(v); 
    } 

} 

私の考えでは、例外がスローされるはずですが、そうではありません。おそらくfromValueメソッドがどこからでも呼び出されないように思われるからでしょうか?この場合、値をnullに設定するだけで、例外をスローするにはどうしたらよいですか?

ありがとうございます。

答えて

0

入力XMLをスキーマに対して検証することができますか? fromValueメソッドがそのフローで呼び出されることがあります。あなたは例外を受け取ります。

スキーマ検証の例はlink1link2です。 アンマーシャラーのドキュメントリンクはhereです。

関連する問題