dgraham     2003/08/15 16:44:19

  Modified:    validator/src/share/org/apache/commons/validator/util
                        ValidatorUtils.java
  Log:
  Changed getValueAsString() to return "" for empty String[]s and Collections.
  This allows easier validation of lists.  PR# 22121.
  
  Revision  Changes    Path
  1.3       +39 -18    
jakarta-commons/validator/src/share/org/apache/commons/validator/util/ValidatorUtils.java
  
  Index: ValidatorUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/validator/src/share/org/apache/commons/validator/util/ValidatorUtils.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ValidatorUtils.java       25 May 2003 18:18:31 -0000      1.2
  +++ ValidatorUtils.java       15 Aug 2003 23:44:19 -0000      1.3
  @@ -62,6 +62,7 @@
   package org.apache.commons.validator.util;
   
   import java.lang.reflect.InvocationTargetException;
  +import java.util.Collection;
   import java.util.Iterator;
   
   import org.apache.commons.beanutils.PropertyUtils;
  @@ -97,6 +98,7 @@
                String value,
                String key,
                String replaceValue) {
  +            
                if (value == null || key == null || replaceValue == null) {
                        return value;
                }
  @@ -113,8 +115,10 @@
   
                if (length == key.length()) {
                        value = replaceValue;
  +            
                } else if (end == length) {
                        value = value.substring(0, start) + replaceValue;
  +            
                } else {
                        value =
                                value.substring(0, start)
  @@ -127,24 +131,41 @@
   
        /**
         * Convenience method for getting a value from a bean property as a 
  -      * <code>String</code>.
  +      * <code>String</code>.  If the property is a <code>String[]</code> or 
  +     * <code>Collection</code> and it is empty, an empty <code>String</code> 
  +     * "" is returned.  Otherwise, property.toString() is returned.  This method
  +     * may return <code>null</code> if there was an error retrieving the 
  +     * property.
         */
  -     public static String getValueAsString(Object bean, String property) {
  -             Object value = null;
  +    public static String getValueAsString(Object bean, String property) {
  +        Object value = null;
   
  -             try {
  -                     value = PropertyUtils.getProperty(bean, property);
  +        try {
  +            value = PropertyUtils.getProperty(bean, property);
   
  -             } catch (IllegalAccessException e) {
  -                     log.error(e.getMessage(), e);
  -             } catch (InvocationTargetException e) {
  -                     log.error(e.getMessage(), e);
  -             } catch (NoSuchMethodException e) {
  -                     log.error(e.getMessage(), e);
  -             }
  +        } catch (IllegalAccessException e) {
  +            log.error(e.getMessage(), e);
  +        } catch (InvocationTargetException e) {
  +            log.error(e.getMessage(), e);
  +        } catch (NoSuchMethodException e) {
  +            log.error(e.getMessage(), e);
  +        }
  +
  +        if (value == null) {
  +            return null;
  +        }
  +
  +        if (value instanceof String[]) {
  +            return ((String[]) value).length > 0 ? value.toString() : "";
  +
  +        } else if (value instanceof Collection) {
  +            return ((Collection) value).isEmpty() ? "" : value.toString();
  +
  +        } else {
  +            return value.toString();
  +        }
   
  -             return (value != null ? value.toString() : null);
  -     }
  +    }
   
        /**
         * Makes a deep copy of a <code>FastHashMap</code> if the values 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to