in ti/phase2/jars/core/src/java/org/apache/ti/compiler/internal/genmodel/DefaultValidatorRuleFactory.java [50:116]
public ValidatorRule getFieldRule(String entityName, String propertyName, AnnotationInstance ruleAnnotation) {
ValidatorRule rule = null;
String annName = CompilerUtils.getSimpleName(ruleAnnotation);
if (annName.equals(VALIDATE_REQUIRED_TAG_NAME)) rule = new ValidatorRule(RULENAME_REQUIRED);
else if (annName.equals(VALIDATE_CREDIT_CARD_TAG_NAME)) rule = new ValidatorRule(RULENAME_CREDIT_CARD);
else if (annName.equals(VALIDATE_EMAIL_TAG_NAME)) rule = new ValidatorRule(RULENAME_EMAIL);
else if (annName.equals(VALIDATE_RANGE_TAG_NAME)) {
Double minFloat = CompilerUtils.getDouble(ruleAnnotation, MIN_FLOAT_ATTR, true);
if (minFloat != null) {
Double maxFloat = CompilerUtils.getDouble(ruleAnnotation, MAX_FLOAT_ATTR, true);
assert maxFloat != null; // checker should catch this
rule = new ValidatorRuleRange(minFloat, maxFloat);
} else {
Long minLong = CompilerUtils.getLong(ruleAnnotation, MIN_INT_ATTR, true);
Long maxLong = CompilerUtils.getLong(ruleAnnotation, MAX_INT_ATTR, true);
assert minLong != null; // checker should catch this
assert maxLong != null; // checker should catch this
rule = new ValidatorRuleRange(minLong, maxLong);
}
} else if (annName.equals(VALIDATE_MIN_LENGTH_TAG_NAME)) {
Integer nChars = CompilerUtils.getInteger(ruleAnnotation, CHARS_ATTR, true);
assert nChars != null;
rule = new ValidatorRule(RULENAME_MINLENGTH);
rule.setVar(VARNAME_MINLENGTH, nChars.toString());
} else if (annName.equals(VALIDATE_MAX_LENGTH_TAG_NAME)) {
Integer nChars = CompilerUtils.getInteger(ruleAnnotation, CHARS_ATTR, true);
assert nChars != null;
rule = new ValidatorRule(RULENAME_MAXLENGTH);
rule.setVar(VARNAME_MAXLENGTH, nChars.toString());
} else if (annName.equals(VALIDATE_MASK_TAG_NAME)) {
String regex = CompilerUtils.getString(ruleAnnotation, REGEX_ATTR, true);
assert regex != null;
rule = new ValidatorRule(RULENAME_MASK);
rule.setVar(VARNAME_MASK, regex);
} else if (annName.equals(VALIDATE_DATE_TAG_NAME)) {
boolean strict = CompilerUtils.getBoolean(ruleAnnotation, STRICT_ATTR, false).booleanValue();
String pattern = CompilerUtils.getString(ruleAnnotation, PATTERN_ATTR, true);
assert pattern != null;
rule = new ValidatorRule(RULENAME_DATE);
rule.setVar(strict ? VARNAME_DATE_PATTERN_STRICT : VARNAME_DATE_PATTERN, pattern);
} else if (annName.equals(VALIDATE_TYPE_TAG_NAME)) {
AnnotationValue annotationValue = CompilerUtils.getAnnotationValue(ruleAnnotation, TYPE_ATTR, true);
assert annotationValue != null;
Object value = annotationValue.getValue();
assert value instanceof PrimitiveType : value.getClass().getName(); // TODO: checker enforces this
String typeName = (String) VALIDATE_TYPE_RULES.get(((PrimitiveType) value).getKind());
assert typeName != null : ((PrimitiveType) value).getKind().toString(); // TODO: checker enforces this
rule = new ValidatorRule(typeName);
} else if (annName.equals(VALIDATE_VALID_WHEN_TAG_NAME)) {
rule = new ValidatorRule(RULENAME_VALID_WHEN);
rule.setVar(VARNAME_VALID_WHEN, CompilerUtils.getString(ruleAnnotation, CONDITION_ATTR, true));
} else if (annName.equals(VALIDATE_CUSTOM_RULE_TAG_NAME)) {
String ruleName = CompilerUtils.getString(ruleAnnotation, RULE_ATTR, false);
rule = new ValidatorRule(ruleName);
List ruleVars = CompilerUtils.getAnnotationArray(ruleAnnotation, VARIABLES_ATTR, false);
for (Iterator ii = ruleVars.iterator(); ii.hasNext();) {
AnnotationInstance ruleVar = (AnnotationInstance) ii.next();
rule.setVar(CompilerUtils.getString(ruleVar, NAME_ATTR, false),
CompilerUtils.getString(ruleVar, VALUE_ATTR, false));
}
}
return rule;
}