in src/main/java/com/aliyun/tea/TeaModel.java [294:329]
private void determineType(Class clazz, Object object, String pattern, int maxLength, int minLength, double maximum, double minimum, String fieldName) {
if (Map.class.isAssignableFrom(clazz)) {
validateMap(pattern, maxLength, minLength, maximum, minimum, (Map<String, Object>) object, fieldName);
} else if (TeaModel.class.isAssignableFrom(clazz)) {
((TeaModel) object).validate();
} else if (List.class.isAssignableFrom(clazz)) {
List<?> list = (List<?>) object;
for (int j = 0; j < list.size(); j++) {
determineType(list.get(j).getClass(), list.get(j), pattern, maxLength, minLength, maximum, minimum, fieldName);
}
} else if (clazz.isArray()) {
Object[] objects = (Object[]) object;
for (int j = 0; j < objects.length; j++) {
determineType(clazz.getComponentType(), objects[j], pattern, maxLength, minLength, maximum, minimum, fieldName);
}
} else if (Number.class.isAssignableFrom(clazz)) {
double value = Double.valueOf(object.toString());
if (value > maximum) {
throw new ValidateException(this.getClass().getName() + "." + fieldName + " exceeds the maximum");
}
if (value < minimum) {
throw new ValidateException(this.getClass().getName() + "." + fieldName + " less than minimum");
}
} else {
String value = String.valueOf(object);
if (maxLength > 0 && value.length() > maxLength) {
throw new ValidateException(this.getClass().getName() + "." + fieldName + " exceeds the maximum length");
}
if (minLength > 0 && value.length() < minLength) {
throw new ValidateException(this.getClass().getName() + "." + fieldName + " less than minimum length");
}
if (!"".equals(pattern) && !Pattern.matches(pattern, value)) {
throw new ValidateException(this.getClass().getName() + "." + fieldName + " regular match failed");
}
}
}