11.6. 例
以下を持つ java Bean があると仮定します。アノテーション:
Car.java
カスタムバリデーショングループのインターフェイス定義:
OptionalChecks.java
public interface OptionalChecks { }
public interface OptionalChecks {
}
以下の Camel ルート。manufacturer および licensePlate 属性の @NotNull 制約のみが検証されます (Camel はデフォルトのグループ javax.validation.groups.Default
を使用します)。
from("direct:start") .to("bean-validator://x") .to("mock:end")
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
OptionalChecks
グループからの制約を確認する場合は、以下のようなルートを定義する必要があります。
from("direct:start") .to("bean-validator://x?group=OptionalChecks") .to("mock:end")
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
両方のグループからの制約を確認する場合は、最初に新しいインターフェイスを定義する必要があります。
AllChecks.java
@GroupSequence({Default.class, OptionalChecks.class}) public interface AllChecks { }
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
ルート定義は以下のようになります。
from("direct:start") .to("bean-validator://x?group=AllChecks") .to("mock:end")
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
また、独自のメッセージインターポレーター、通過可能なリゾルバー、および制約バリデーターファクトリーを提供する必要がある場合は、次のようなルートを記述する必要があります。
<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" /> <bean id="myTraversableResolver" class="my.TraversableResolver" /> <bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
<bean id="myTraversableResolver" class="my.TraversableResolver" />
<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
from("direct:start") .to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator &traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory") .to("mock:end")
from("direct:start")
.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
.to("mock:end")
また、制約を Java アノテーションではなく、XML として記述することも可能です。この場合、次のようなファイル META-INF/validation.xml
を提供する必要があります。
validation.xml
constraints-car.xml
ファイル
constraints-car.xml
以下は、OrderedChecks のルート定義のサンプルに対する XML 構文です。
ボディーには検証するクラスのインスタンスを含める必要があることに注意してください。