パッケージ jp.go.nict.langrid.commons.validator

アノテーションベースのパラメータ検証フレームワークを提供します。

参照先:
          説明

例外の概要
ParameterValidationException パラメータのバリデーションに失敗した場合に発生する例外。
ValidationException バリデーションに失敗した場合に発生する例外。
ValidationProcessException バリデーションが行えない場合に発生する例外。
 

パッケージ jp.go.nict.langrid.commons.validator の説明

アノテーションベースのパラメータ検証フレームワークを提供します。

パラメータの検証

検証マーカアノテーション

パラメータの検証を指定するには、検証マーカアノテーションをそのパラメータにアノテートする。検証マーカアノテーションとは、以下のようなアノテーションである。
@Retention(RetentionPolicy.RUNTIME)
@ValidatorClass(NotEmptyValidator.class)
public @interface Validation {
        String value();
}

検証マーカアノテーションのRetentionはRUNTIMEである必要がある。

検証マーカアノテーションは、実装クラスを指定するアノテーションとして、@ValidatorClassアノテーションを持つ。 @ValidatorClass アノテーションでは、ValidatorImplを継承した検証実装クラスを指定する。

検証マーカアノテーションは、パラメータを持つことができる。検証実装クラスはこのパラメータを利用して、検証方法を判断することができる。

検証実装クラス

検証実装クラスは、以下のインタフェースを実装したクラスである

public interface ValidatorImpl<T extends Annotation, U> {
        void validate(T annotation, U value)
        throws ValidationException;
}

validateメソッドには、検証マーカアノテーションと、パラメータの値が渡される。検証実装クラスでは、マーカアノテーションに指定されたパラメータを 使用して(存在する場合)valueパラメータの値を検証する。検証に失敗した場合、ValidationExcptionを発生させる。

利用例

以下に、パラメータとして渡される文字列が空でないかを検証する例を示す。

public class Test{
        @ValidatedMethod
        public void test(@NotEmpty Strnig value){
                System.out.println(value);
        }
}

public aspect TestValidationAspect
extends ParameterValidationAspect<Test>
{
}

配列パラメータの検証

配列検証マーカアノテーション

@Retention(RetentionPolicy.RUNTIME)
@ValidatorClass(ArrayElementValidator.class)
public @interface EachNotEmpty {
        NotEmpty value() default @NotEmpty;
}

パラメータのフィールドの検証

フィールド検証マーカアノテーション

@Retention(RetentionPolicy.RUNTIME)
@ValidatorClass(FieldValidator.class)
public @interface FieldNotEmpty {
        String name();
        NotEmpty value() default @NotEmpty;
}