jaxb/jackson の wink で Enum 型にいくつかの検証を実装しようとしています。
いくつかの値を取る列挙型があります。nullを許可したい、つまりxml/jsonに設定したくないが、無効な値をチェックしてエラーを出したい。
デフォルトでは、enum にない値を指定すると jaxb/wink は単に null を返すことがわかったので、セッターを使用して入力の検証を許可しようとしました。Level.valueOf(newLevel) を使用して、指定された文字列を値に変換しようとすると、例外がスローされ、スタック トレースと http エラーが発生します。これは問題ありませんが、私が本当に必要としているのは、エラー応答のマーシャリングをある程度制御できるカスタム例外です。投げてみたけどウインク(だと思う)に飲み込まれてしまう。
enum Level {BASIC, ADVANCED};
@XmlAttribute
public void setLevel(String newLevel) throws MyException {
if (newNodeLevel != null) {
try {
this.level = Level.valueOf(newLevel);
} catch (IllegalArgumentException e) {
throw new MyException("level invalid");
}
}
}
例外ではなくスロー可能を使用する以外に、これを達成する方法はありますか?