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]