Как создать пользовательские ограничения на основе XML с помощью инфраструктуры проверки OVal - PullRequest
0 голосов
/ 15 сентября 2011

С помощью структуры проверки овала (http://oval.sourceforge.net/) можно создавать пользовательские ограничения на основе аннотации (http://oval.sourceforge.net/userguide.html#d4e493).

). Мое намерение - создать файл конфигурации OVal XML из некоторых определений ограничений,вот почему я хотел бы выполнить полное определение ограничения OVal с помощью конфигурации XML (http://oval.sourceforge.net/userguide.html#d4e551).

. Я могу определить все необходимые ограничения в файле конфигурации 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;

Как определить пользовательскую проверку ограничений (UpperCase) в моей конфигурации XML

1 Ответ

0 голосов
/ 16 сентября 2011

Просто укажите ссылку на полное имя класса реализации проверки в файле xml, например, <mypackage.UpperCaseCheck />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...