else if (propertyType.isAssignableFrom(Collection.class)) { if (validationInfo != null && validationInfo.converter() != TypeConverter.class) { TypeVariable[] types = validationInfo.converter().getTypeParameters(); propertyType = (Class) types[0].getBounds()[0]; } else { propertyType = String.class;
else if (Collection.class.isAssignableFrom(propertyType)) {  propertyType = OgnlUtil.getCollectionPropertyComponentClass(bean, propertyName.getName());  if (propertyType == null) {  Map<String, Validate> map = this.validations.get(bean.getClass()); Validate validationInfo = map.get(propertyName.getStrippedName());  if (validationInfo != null && validationInfo.converter() != TypeConverter.class) { Method method = validationInfo.converter().getMethod ("convert", String.class, Class.class, Collection.class); propertyType = method.getReturnType(); } else { log.warn("Unable to determine type of objects held in collection, on ", "ActionBean class [", bean.getClass(), "] property [", propertyName.getName(), "]. To fix this either modify the getter ", "method for this property to use generics, e.g. List<Foo> get(), ", "or specify the appropriate converter in the @Validate annotation ", "for this property on the ActionBean. Assuming type is String, ", "which may or may not work!");  propertyType = String.class; }
    protected Class getRealType(ActionBean bean, Class propertyType, ParameterName propertyName) {        Validate validationInfo = this.validations.get(bean.getClass()).get(propertyName.getStrippedName());        if (propertyType.isArray()) {            propertyType = propertyType.getComponentType();        }        else if (propertyType.isAssignableFrom(Collection.class)) {            if (validationInfo != null && validationInfo.converter() != TypeConverter.class) {                TypeVariable[] types = validationInfo.converter().getTypeParameters();                propertyType = (Class) types[0].getBounds()[0];            } else {                propertyType = String.class;            }        }        return propertyType;    }