⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 annotationvalidationconfigurationbuilder.java

📁 在Struts2中的jar包xwork的源代码.版本为2.0.7
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2002-2006 by OpenSymphony * All rights reserved. */package com.opensymphony.xwork2.validator;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import java.util.*;import java.util.regex.Pattern;import java.util.regex.Matcher;import java.text.SimpleDateFormat;import java.text.DateFormat;import java.text.ParseException;import com.opensymphony.xwork2.validator.annotations.*;/** * <code>AnnotationValidationConfigurationBuilder</code> * * @author Rainer Hermanns * @author jepjep * @version $Id: AnnotationValidationConfigurationBuilder.java 1408 2007-03-31 16:14:52Z rainerh $ */public class AnnotationValidationConfigurationBuilder {    private static final Pattern SETTER_PATTERN = Pattern.compile("set([A-Z][A-Za-z0-9]*)$");    private static final Pattern GETTER_PATTERN = Pattern.compile("(get|is|has)([A-Z][A-Za-z0-9]*)$");    private static List<ValidatorConfig> processAnnotations(Object o) {        List<ValidatorConfig> result = new ArrayList<ValidatorConfig>();        String fieldName = null;        String methodName = null;        Annotation[] annotations = null;        if (o instanceof Class) {            Class clazz = (Class) o;            annotations = clazz.getAnnotations();        }        if (o instanceof Method) {            Method method = (Method) o;            fieldName = resolvePropertyName(method);            methodName = method.getName();            annotations = method.getAnnotations();        }        if (annotations != null) {            for (Annotation a : annotations) {                // Process collection of custom validations                if (a instanceof Validations) {                    processValidationAnnotation(a, fieldName, result);                }                // Process single custom validator                if (a instanceof Validation) {                    Validation v = (Validation) a;                    if ( v.validations() != null ) {                        for ( Validations val: v.validations()) {                            processValidationAnnotation(val , fieldName, result);                        }                    }                }                // Process single custom validator                else if (a instanceof ExpressionValidator) {                    ExpressionValidator v = (ExpressionValidator) a;                    ValidatorConfig temp = processExpressionValidatorAnnotation(v, fieldName);                    if (temp != null) {                        result.add(temp);                    }                }                // Process single custom validator                else if (a instanceof CustomValidator) {                    CustomValidator v = (CustomValidator) a;                    ValidatorConfig temp = processCustomValidatorAnnotation(v, fieldName);                    if (temp != null) {                        result.add(temp);                    }                }                // Process ConversionErrorFieldValidator                else if ( a instanceof ConversionErrorFieldValidator) {                    ConversionErrorFieldValidator v = (ConversionErrorFieldValidator) a;                    ValidatorConfig temp = processConversionErrorFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process DateRangeFieldValidator                else if ( a instanceof DateRangeFieldValidator) {                    DateRangeFieldValidator v = (DateRangeFieldValidator) a;                    ValidatorConfig temp = processDateRangeFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process EmailValidator                else if ( a instanceof EmailValidator) {                    EmailValidator v = (EmailValidator) a;                    ValidatorConfig temp = processEmailValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process FieldExpressionValidator                else if ( a instanceof FieldExpressionValidator) {                    FieldExpressionValidator v = (FieldExpressionValidator) a;                    ValidatorConfig temp = processFieldExpressionValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process IntRangeFieldValidator                else if ( a instanceof IntRangeFieldValidator) {                    IntRangeFieldValidator v = (IntRangeFieldValidator) a;                    ValidatorConfig temp = processIntRangeFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process DoubleRangeFieldValidator                else if ( a instanceof DoubleRangeFieldValidator) {                    DoubleRangeFieldValidator v = (DoubleRangeFieldValidator) a;                    ValidatorConfig temp = processDoubleRangeFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process RequiredFieldValidator                else if ( a instanceof RequiredFieldValidator) {                    RequiredFieldValidator v = (RequiredFieldValidator) a;                    ValidatorConfig temp = processRequiredFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process RequiredStringValidator                else if ( a instanceof RequiredStringValidator) {                    RequiredStringValidator v = (RequiredStringValidator) a;                    ValidatorConfig temp = processRequiredStringValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process StringLengthFieldValidator                else if ( a instanceof StringLengthFieldValidator) {                    StringLengthFieldValidator v = (StringLengthFieldValidator) a;                    ValidatorConfig temp = processStringLengthFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process UrlValidator                else if ( a instanceof UrlValidator) {                    UrlValidator v = (UrlValidator) a;                    ValidatorConfig temp = processUrlValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process VisitorFieldValidator                else if ( a instanceof VisitorFieldValidator) {                    VisitorFieldValidator v = (VisitorFieldValidator) a;                    ValidatorConfig temp = processVisitorFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }                // Process RegexFieldValidator                else if ( a instanceof RegexFieldValidator) {                    RegexFieldValidator v = (RegexFieldValidator) a;                    ValidatorConfig temp = processRegexFieldValidatorAnnotation(v, fieldName);                    if ( temp != null) {                        result.add(temp);                    }                }            }                        if (methodName != null) {                for (ValidatorConfig vc : result) {                    vc.getParams().put("methodName", methodName);                }            }        }        return result;    }    private static void processValidationAnnotation(Annotation a, String fieldName, List<ValidatorConfig> result) {        Validations validations = (Validations) a;        CustomValidator[] cv = validations.customValidators();        if ( cv != null ) {            for (CustomValidator v : cv) {                ValidatorConfig temp = processCustomValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        ExpressionValidator[] ev = validations.expressions();        if ( ev != null ) {            for (ExpressionValidator v : ev) {                ValidatorConfig temp = processExpressionValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        ConversionErrorFieldValidator[] cef = validations.conversionErrorFields();        if ( cef != null ) {            for (ConversionErrorFieldValidator v : cef) {                ValidatorConfig temp = processConversionErrorFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        DateRangeFieldValidator[] drfv = validations.dateRangeFields();        if ( drfv != null ) {            for (DateRangeFieldValidator v : drfv) {                ValidatorConfig temp = processDateRangeFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        EmailValidator[] emv = validations.emails();        if ( emv != null ) {            for (EmailValidator v : emv) {                ValidatorConfig temp = processEmailValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        FieldExpressionValidator[] fev = validations.fieldExpressions();        if ( fev != null ) {            for (FieldExpressionValidator v : fev) {                ValidatorConfig temp = processFieldExpressionValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        IntRangeFieldValidator[] irfv = validations.intRangeFields();        if ( irfv != null ) {            for (IntRangeFieldValidator v : irfv) {                ValidatorConfig temp = processIntRangeFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        RegexFieldValidator[] rfv = validations.regexFields();        if ( rfv != null ) {            for (RegexFieldValidator v : rfv) {                ValidatorConfig temp = processRegexFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        RequiredFieldValidator[] rv = validations.requiredFields();        if ( rv != null ) {            for (RequiredFieldValidator v : rv) {                ValidatorConfig temp = processRequiredFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        RequiredStringValidator[] rsv = validations.requiredStrings();        if ( rsv != null ) {            for (RequiredStringValidator v : rsv) {                ValidatorConfig temp = processRequiredStringValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        StringLengthFieldValidator[] slfv = validations.stringLengthFields();        if ( slfv != null ) {            for (StringLengthFieldValidator v : slfv) {                ValidatorConfig temp = processStringLengthFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        UrlValidator[] uv = validations.urls();        if ( uv != null ) {            for (UrlValidator v : uv) {                ValidatorConfig temp = processUrlValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }        VisitorFieldValidator[] vfv = validations.visitorFields();        if ( vfv != null ) {            for (VisitorFieldValidator v : vfv) {                ValidatorConfig temp = processVisitorFieldValidatorAnnotation(v, fieldName);                if (temp != null) {                    result.add(temp);                }            }        }    }    private static ValidatorConfig processExpressionValidatorAnnotation(ExpressionValidator v, String fieldName) {        String validatorType = "expression";        Map<String, Object> params = new HashMap<String, Object>();        if (fieldName != null) {            params.put("fieldName", fieldName);        }        params.put("expression", v.expression());        ValidatorFactory.lookupRegisteredValidatorType(validatorType);        ValidatorConfig vCfg = new ValidatorConfig(validatorType, params);        vCfg.setShortCircuit(v.shortCircuit());        vCfg.setDefaultMessage(v.message());        String key = v.key();        if ((key != null) && (key.trim().length() > 0)) {            vCfg.setMessageKey(key);        }        return vCfg;    }    private static ValidatorConfig processCustomValidatorAnnotation(CustomValidator v, String fieldName) {        Map<String, Object> params = new HashMap<String, Object>();        if (fieldName != null) {            params.put("fieldName", fieldName);        } else if (v.fieldName() != null && v.fieldName().length() > 0 ) {            params.put("fieldName", v.fieldName());        }        String validatorType = v.type();        ValidatorFactory.lookupRegisteredValidatorType(validatorType);        Annotation[] recursedAnnotations = v.parameters();        if ( recursedAnnotations != null ) {            for (Annotation a2 : recursedAnnotations) {                if (a2 instanceof ValidationParameter) {                    ValidationParameter parameter = (ValidationParameter) a2;                    String parameterName = parameter.name();                    String parameterValue = parameter.value();                    params.put(parameterName, parameterValue);                }            }        }        ValidatorConfig vCfg = new ValidatorConfig(validatorType, params);        vCfg.setShortCircuit(v.shortCircuit());        vCfg.setDefaultMessage(v.message());        String key = v.key();        if ((key != null) && (key.trim().length() > 0)) {            vCfg.setMessageKey(key);        }        return vCfg;    }    private static ValidatorConfig processRegexFieldValidatorAnnotation(RegexFieldValidator v, String fieldName) {        String validatorType = "regex";        Map<String, Object> params = new HashMap<String, Object>();        if (fieldName != null) {            params.put("fieldName", fieldName);        } else if (v.fieldName() != null && v.fieldName().length() > 0 ) {            params.put("fieldName", v.fieldName());        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -