public interface IValidator
lineObjectからフィールド値を取得する場合の実装例.
IValidatorを実装するクラス内で、 MethodAccessUtil.doInvoke(Object, String)を使い、相関対象の値を取得する.
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@ValidateResolver(CheckRulesEnum.XXXCheck)
public @interface CheckXXX {
// 相関フィールドを返却する.
String[] correlationFields();
}
IValidatorを実装するクラス内で、相関チェックを行う.
// targetValueがアノテーションで渡されるどのフィールド値よりも小さいことをチェックする例.
public boolean validate(final Annotation anno, final String targetValue, final Object lineObject) {
CheckXXX resolver = (CheckXXX) anno;
if (!resolver.verifyWhenNull() && targetValue == null) { return true; }
String[] fieldNames = resolver.correlationFields();
String compareValue = null;
for (int i = 0; i < fieldNames.length(); i++) {
compareValue = MethodAccessUtil.doInvoke(lineObject, fieldNames[i]);
if (targetValue.compareTo(compareValue) > 0) { return false; }
}
return true;
}
| 修飾子とタイプ | メソッドと説明 |
|---|---|
boolean |
validate(Annotation anno,
String targetValue,
Object lineObject)
バリデーションを実行します.
|