0

Oval 検証フレームワーク (http://oval.sourceforge.net/) を使用すると、カスタムの注釈ベースの制約を作成できます (http://oval.sourceforge.net/userguide.html#d4e493)。

私の意図は、いくつかの制約定義から OVal XML 構成ファイルを生成することです。そのため、 XML 構成(http://oval.sourceforge.net/userguide.html#d4e551)を使用して完全な OVal 制約定義を実行したいと考えています。

カスタム制約を除いて、必要なすべての制約を XML 構成ファイルで定義できます。

注釈ベース 私は次のコードを持っています:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import net.sf.oval.exception.ConstraintsViolatedException;

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
@net.sf.oval.configuration.annotation.Constraint(checkWith = UpperCaseCheck.class)
public @interface UpperCase {

    /**
     * Message to be used for the ConstraintsViolatedException
     * 
     * @see ConstraintsViolatedException
     */
    String message() default "must be upper case";
}


import net.sf.oval.Validator;
import net.sf.oval.configuration.annotation.AbstractAnnotationCheck;
import net.sf.oval.context.OValContext;

public class UpperCaseCheck extends AbstractAnnotationCheck<UpperCase> {

    private static final long serialVersionUID = 2715187850228144730L;

    public boolean isSatisfied(Object validatedObject, Object valueToValidate, OValContext context, Validator validator) {
        if (valueToValidate == null)
            return true;

        String val = valueToValidate.toString();

        return val.equals(val.toUpperCase());
    }

}

そして注釈チェック:

@NotNull
@UpperCase
private String p_name;

XML 構成でカスタム制約チェック (大文字) を定義するにはどうすればよいですか?

4

1 に答える 1

0

xml ファイル内のチェック実装の完全修飾クラス名で制約を参照するだけです。 <mypackage.UpperCaseCheck />

于 2011-09-16T11:47:39.717 に答える