You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mr...@apache.org on 2005/04/26 08:15:18 UTC

svn commit: r164749 - in /jakarta/commons/proper/validator/trunk/src: share/org/apache/commons/validator/ test/org/apache/commons/validator/

Author: mrdon
Date: Mon Apr 25 23:15:17 2005
New Revision: 164749

URL: http://svn.apache.org/viewcvs?rev=164749&view=rev
Log:
Adding methods that use the locale for parsing numbers.  The original
patch came from Andrew van der Voort.  Including unit tests however 
they could use more tests as I have limited knowledge of international
number formats.
PR: 21282 and 34198

Also adding a more clear error message when the validation method cannot
be found.

Modified:
    jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/GenericTypeValidator.java
    jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/ValidatorAction.java
    jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TestTypeValidator.java
    jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TypeTest.java
    jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-type.xml

Modified: jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/GenericTypeValidator.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/GenericTypeValidator.java?rev=164749&r1=164748&r2=164749&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/GenericTypeValidator.java (original)
+++ jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/GenericTypeValidator.java Mon Apr 25 23:15:17 2005
@@ -18,7 +18,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.commons.validator;
 
 import java.io.Serializable;
@@ -26,22 +25,25 @@
 import java.util.Locale;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.text.NumberFormat;
 import java.text.ParseException;
+import java.text.ParsePosition;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
- * This class contains basic methods for performing validations that return the
- * correctly typed class based on the validation performed.
+ *  This class contains basic methods for performing validations that return the
+ *  correctly typed class based on the validation performed.
  */
 public class GenericTypeValidator implements Serializable {
-   
-	private static final Log log = LogFactory.getLog(GenericTypeValidator.class);
+
+    private final static Log log = LogFactory.getLog(GenericTypeValidator.class);
 
     /**
-     * Checks if the value can safely be converted to a byte primitive.
+     *  Checks if the value can safely be converted to a byte primitive.
      *
-     * @param value The value validation is being performed on.
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Byte formatByte(String value) {
         if (value == null) {
@@ -50,16 +52,50 @@
 
         try {
             return new Byte(value);
-        } catch(NumberFormatException e) {
+        } catch (NumberFormatException e) {
             return null;
         }
 
     }
 
     /**
-     * Checks if the value can safely be converted to a short primitive.
+     *  Checks if the value can safely be converted to a byte primitive.
      *
-     * @param value The value validation is being performed on.
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The locale to use to parse the number (system default if
+     *      null)
+     *@return
+     */
+    public static Byte formatByte(String value, Locale locale) {
+        Byte result = null;
+
+        if (value != null) {
+            NumberFormat formatter = null;
+            if (locale != null) {
+                formatter = NumberFormat.getIntegerInstance(locale);
+            } else {
+                formatter = NumberFormat.getIntegerInstance(Locale.getDefault());
+            }
+            ParsePosition pos = new ParsePosition(0);
+            Number num = formatter.parse(value, pos);
+
+            // If there was no error      and we used the whole string
+            if (pos.getErrorIndex() == -1 && pos.getIndex() == value.length()) {
+                if (num.doubleValue() >= Byte.MIN_VALUE &&
+                    num.doubleValue() <= Byte.MAX_VALUE) {
+                    result = new Byte(num.byteValue());
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     *  Checks if the value can safely be converted to a short primitive.
+     *
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Short formatShort(String value) {
         if (value == null) {
@@ -68,16 +104,50 @@
 
         try {
             return new Short(value);
-        } catch(NumberFormatException e) {
+        } catch (NumberFormatException e) {
             return null;
         }
 
     }
 
     /**
-     * Checks if the value can safely be converted to a int primitive.
+     *  Checks if the value can safely be converted to a short primitive.
      *
-     * @param value The value validation is being performed on.
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The locale to use to parse the number (system default if
+     *      null)vv
+     *@return
+     */
+    public static Short formatShort(String value, Locale locale) {
+        Short result = null;
+
+        if (value != null) {
+            NumberFormat formatter = null;
+            if (locale != null) {
+                formatter = NumberFormat.getIntegerInstance(locale);
+            } else {
+                formatter = NumberFormat.getIntegerInstance(Locale.getDefault());
+            }
+            ParsePosition pos = new ParsePosition(0);
+            Number num = formatter.parse(value, pos);
+
+            // If there was no error      and we used the whole string
+            if (pos.getErrorIndex() == -1 && pos.getIndex() == value.length()) {
+                if (num.doubleValue() >= Short.MIN_VALUE &&
+                    num.doubleValue() <= Short.MAX_VALUE) {
+                    result = new Short(num.shortValue());
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     *  Checks if the value can safely be converted to a int primitive.
+     *
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Integer formatInt(String value) {
         if (value == null) {
@@ -86,16 +156,50 @@
 
         try {
             return new Integer(value);
-        } catch(NumberFormatException e) {
+        } catch (NumberFormatException e) {
             return null;
         }
 
     }
 
     /**
-     * Checks if the value can safely be converted to a long primitive.
+     *  Checks if the value can safely be converted to an int primitive.
+     *
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The locale to use to parse the number (system default if
+     *      null)
+     *@return
+     */
+    public static Integer formatInt(String value, Locale locale) {
+        Integer result = null;
+
+        if (value != null) {
+            NumberFormat formatter = null;
+            if (locale != null) {
+                formatter = NumberFormat.getIntegerInstance(locale);
+            } else {
+                formatter = NumberFormat.getIntegerInstance(Locale.getDefault());
+            }
+            ParsePosition pos = new ParsePosition(0);
+            Number num = formatter.parse(value, pos);
+
+            // If there was no error      and we used the whole string
+            if (pos.getErrorIndex() == -1 && pos.getIndex() == value.length()) {
+                if (num.doubleValue() >= Integer.MIN_VALUE &&
+                    num.doubleValue() <= Integer.MAX_VALUE) {
+                    result = new Integer(num.intValue());
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     *  Checks if the value can safely be converted to a long primitive.
      *
-     * @param value The value validation is being performed on.
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Long formatLong(String value) {
         if (value == null) {
@@ -104,16 +208,50 @@
 
         try {
             return new Long(value);
-        } catch(NumberFormatException e) {
+        } catch (NumberFormatException e) {
             return null;
         }
 
     }
 
     /**
-     * Checks if the value can safely be converted to a float primitive.
+     *  Checks if the value can safely be converted to a long primitive.
+     *
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The locale to use to parse the number (system default if
+     *      null)
+     *@return
+     */
+    public static Long formatLong(String value, Locale locale) {
+        Long result = null;
+
+        if (value != null) {
+            NumberFormat formatter = null;
+            if (locale != null) {
+                formatter = NumberFormat.getIntegerInstance(locale);
+            } else {
+                formatter = NumberFormat.getIntegerInstance(Locale.getDefault());
+            }
+            ParsePosition pos = new ParsePosition(0);
+            Number num = formatter.parse(value, pos);
+
+            // If there was no error      and we used the whole string
+            if (pos.getErrorIndex() == -1 && pos.getIndex() == value.length()) {
+                if (num.doubleValue() >= Long.MIN_VALUE &&
+                    num.doubleValue() <= Long.MAX_VALUE) {
+                    result = new Long(num.longValue());
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     *  Checks if the value can safely be converted to a float primitive.
      *
-     * @param value The value validation is being performed on.
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Float formatFloat(String value) {
         if (value == null) {
@@ -122,16 +260,50 @@
 
         try {
             return new Float(value);
-        } catch(NumberFormatException e) {
+        } catch (NumberFormatException e) {
             return null;
         }
 
     }
 
     /**
-     * Checks if the value can safely be converted to a double primitive.
+     *  Checks if the value can safely be converted to a float primitive.
      *
-     * @param value The value validation is being performed on.
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The locale to use to parse the number (system default if
+     *      null)
+     *@return
+     */
+    public static Float formatFloat(String value, Locale locale) {
+        Float result = null;
+
+        if (value != null) {
+            NumberFormat formatter = null;
+            if (locale != null) {
+                formatter = NumberFormat.getInstance(locale);
+            } else {
+                formatter = NumberFormat.getInstance(Locale.getDefault());
+            }
+            ParsePosition pos = new ParsePosition(0);
+            Number num = formatter.parse(value, pos);
+
+            // If there was no error      and we used the whole string
+            if (pos.getErrorIndex() == -1 && pos.getIndex() == value.length()) {
+                if (num.doubleValue() >= (Float.MIN_VALUE * -1) &&
+                    num.doubleValue() <= Float.MAX_VALUE) {
+                    result = new Float(num.floatValue());
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     *  Checks if the value can safely be converted to a double primitive.
+     *
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Double formatDouble(String value) {
         if (value == null) {
@@ -140,19 +312,56 @@
 
         try {
             return new Double(value);
-        } catch(NumberFormatException e) {
+        } catch (NumberFormatException e) {
             return null;
         }
 
     }
 
     /**
-     * <p>Checks if the field is a valid date.  The <code>Locale</code> is
-     * used with <code>java.text.DateFormat</code>.  The setLenient method
-     * is set to <code>false</code> for all.</p>
+     *  Checks if the value can safely be converted to a double primitive.
+     *
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The locale to use to parse the number (system default if
+     *      null)vvv
+     *@return
+     */
+    public static Double formatDouble(String value, Locale locale) {
+        Double result = null;
+
+        if (value != null) {
+            NumberFormat formatter = null;
+            if (locale != null) {
+                formatter = NumberFormat.getInstance(locale);
+            } else {
+                formatter = NumberFormat.getInstance(Locale.getDefault());
+            }
+            ParsePosition pos = new ParsePosition(0);
+            Number num = formatter.parse(value, pos);
+
+            // If there was no error      and we used the whole string
+            if (pos.getErrorIndex() == -1 && pos.getIndex() == value.length()) {
+                if (num.doubleValue() >= (Double.MIN_VALUE * -1) &&
+                    num.doubleValue() <= Double.MAX_VALUE) {
+                    result = new Double(num.doubleValue());
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     *  <p>
+     *
+     *  Checks if the field is a valid date. The <code>Locale</code> is used
+     *  with <code>java.text.DateFormat</code>. The setLenient method is set to
+     *  <code>false</code> for all.</p>
      *
-     * @param value The value validation is being performed on.
-     * @param locale The Locale to use to parse the date (system default if null)
+     *@param  value   The value validation is being performed on.
+     *@param  locale  The Locale to use to parse the date (system default if
+     *      null)
+     *@return
      */
     public static Date formatDate(String value, Locale locale) {
         Date date = null;
@@ -165,18 +374,18 @@
             DateFormat formatter = null;
             if (locale != null) {
                 formatter =
-                        DateFormat.getDateInstance(DateFormat.SHORT, locale);
+                    DateFormat.getDateInstance(DateFormat.SHORT, locale);
             } else {
                 formatter =
-                        DateFormat.getDateInstance(
-                                DateFormat.SHORT,
-                                Locale.getDefault());
+                    DateFormat.getDateInstance(
+                    DateFormat.SHORT,
+                    Locale.getDefault());
             }
 
             formatter.setLenient(false);
 
             date = formatter.parse(value);
-        } catch(ParseException e) {
+        } catch (ParseException e) {
             // Bad date so return null
             log.warn(value, e);
         }
@@ -185,22 +394,25 @@
     }
 
     /**
-     * <p>Checks if the field is a valid date.  The pattern is used with
-     * <code>java.text.SimpleDateFormat</code>.  If strict is true, then the
-     * length will be checked so '2/12/1999' will not pass validation with
-     * the format 'MM/dd/yyyy' because the month isn't two digits.
-     * The setLenient method is set to <code>false</code> for all.</p>
-     *
-     * @param value The value validation is being performed on.
-     * @param datePattern The pattern passed to <code>SimpleDateFormat</code>.
-     * @param strict Whether or not to have an exact match of the datePattern.
+     *  <p>
+     *  Checks if the field is a valid date. The pattern is used with <code>java.text.SimpleDateFormat</code>
+     *  . If strict is true, then the length will be checked so '2/12/1999' will
+     *  not pass validation with the format 'MM/dd/yyyy' because the month isn't
+     *  two digits. The setLenient method is set to <code>false</code> for all.
+     *  </p>
+     *
+     *@param  value        The value validation is being performed on.
+     *@param  datePattern  The pattern passed to <code>SimpleDateFormat</code>.
+     *@param  strict       Whether or not to have an exact match of the
+     *      datePattern.
+     *@return
      */
     public static Date formatDate(String value, String datePattern, boolean strict) {
         Date date = null;
 
         if (value == null
-                || datePattern == null
-                || datePattern.length() == 0) {
+             || datePattern == null
+             || datePattern.length() == 0) {
             return null;
         }
 
@@ -215,7 +427,7 @@
                     date = null;
                 }
             }
-        } catch(ParseException e) {
+        } catch (ParseException e) {
             // Bad date so return null
             log.warn(value, e);
         }
@@ -224,14 +436,18 @@
     }
 
     /**
-     * <p>Checks if the field is a valid credit card number.</p>
-     * <p>Reference Sean M. Burke's
-     * <a href="http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl">script</a>.</p>
+     *  <p>
+     *  Checks if the field is a valid credit card number.</p> <p>
      *
-     * @param value The value validation is being performed on.
+     *  Reference Sean M. Burke's <a href="http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl">
+     *  script</a> .</p>
+     *
+     *@param  value  The value validation is being performed on.
+     *@return
      */
     public static Long formatCreditCard(String value) {
         return GenericValidator.isCreditCard(value) ? new Long(value) : null;
     }
 
 }
+

Modified: jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/ValidatorAction.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/ValidatorAction.java?rev=164749&r1=164748&r2=164749&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/ValidatorAction.java (original)
+++ jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/ValidatorAction.java Mon Apr 25 23:15:17 2005
@@ -581,7 +581,8 @@
                 this.validationClass.getMethod(this.method, this.parameterClasses);
      
         } catch (NoSuchMethodException e) {
-            throw new ValidatorException(e.getMessage());
+            throw new ValidatorException("No such validation method: " + 
+                e.getMessage());
         }
     }
     
@@ -750,4 +751,4 @@
         return v.getOnlyReturnErrors();
     }
 
-}
\ No newline at end of file
+}

Modified: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TestTypeValidator.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TestTypeValidator.java?rev=164749&r1=164748&r2=164749&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TestTypeValidator.java (original)
+++ jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TestTypeValidator.java Mon Apr 25 23:15:17 2005
@@ -21,6 +21,8 @@
 
 package org.apache.commons.validator;
 
+import java.util.Locale;
+
 import org.apache.commons.validator.util.ValidatorUtils;
                                                           
 /**                                                       
@@ -43,6 +45,20 @@
    }
 
    /**
+    * Checks if the field can be successfully converted to a <code>byte</code>.
+    *
+    * @param value The value validation is being performed on.
+    * @return boolean If the field can be successfully converted 
+    * to a <code>byte</code> <code>true</code> is returned.  
+    * Otherwise <code>false</code>.
+    */
+   public static Byte validateByte(Object bean, Field field, Locale locale) {
+      String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
+
+      return GenericTypeValidator.formatByte(value, locale);
+   }
+
+   /**
     * Checks if the field can be successfully converted to a <code>short</code>.
     *
     * @param value The value validation is being performed on.
@@ -57,6 +73,20 @@
    }
 
    /**
+    * Checks if the field can be successfully converted to a <code>short</code>.
+    *
+    * @param value The value validation is being performed on.
+    * @return boolean If the field can be successfully converted 
+    * to a <code>short</code> <code>true</code> is returned.  
+    * Otherwise <code>false</code>.
+    */
+   public static Short validateShort(Object bean, Field field, Locale locale) {
+      String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
+
+      return GenericTypeValidator.formatShort(value, locale);
+   }
+
+   /**
     * Checks if the field can be successfully converted to a <code>int</code>.
     *
     * @param value The value validation is being performed on.
@@ -71,6 +101,20 @@
    }
 
    /**
+    * Checks if the field can be successfully converted to a <code>int</code>.
+    *
+    * @param value The value validation is being performed on.
+    * @return boolean If the field can be successfully converted 
+    * to a <code>int</code> <code>true</code> is returned.  
+    * Otherwise <code>false</code>.
+    */
+   public static Integer validateInt(Object bean, Field field, Locale locale) {
+      String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
+
+      return GenericTypeValidator.formatInt(value, locale);
+   }
+
+   /**
     * Checks if the field can be successfully converted to a <code>long</code>.
     *
     * @param value The value validation is being performed on.
@@ -85,6 +129,20 @@
    }
 
    /**
+    * Checks if the field can be successfully converted to a <code>long</code>.
+    *
+    * @param value The value validation is being performed on.
+    * @return boolean If the field can be successfully converted 
+    * to a <code>long</code> <code>true</code> is returned.  
+    * Otherwise <code>false</code>.
+    */
+   public static Long validateLong(Object bean, Field field, Locale locale) {
+      String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
+
+      return GenericTypeValidator.formatLong(value, locale);
+   }
+
+   /**
     * Checks if the field can be successfully converted to a <code>float</code>.
     *
     * @param value The value validation is being performed on.
@@ -99,6 +157,20 @@
    }
    
    /**
+    * Checks if the field can be successfully converted to a <code>float</code>.
+    *
+    * @param value The value validation is being performed on.
+    * @return boolean If the field can be successfully converted 
+    * to a <code>float</code> <code>true</code> is returned.  
+    * Otherwise <code>false</code>.
+    */
+   public static Float validateFloat(Object bean, Field field, Locale locale) {
+      String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
+
+      return GenericTypeValidator.formatFloat(value, locale);
+   }
+   
+   /**
     * Checks if the field can be successfully converted to a <code>double</code>.
     *
     * @param value The value validation is being performed on.
@@ -111,5 +183,18 @@
 
       return GenericTypeValidator.formatDouble(value);
    }
-      
+   
+   /**
+    * Checks if the field can be successfully converted to a <code>double</code>.
+    *
+    * @param value The value validation is being performed on.
+    * @return boolean If the field can be successfully converted 
+    * to a <code>double</code> <code>true</code> is returned.  
+    * Otherwise <code>false</code>.
+    */
+   public static Double validateDouble(Object bean, Field field, Locale locale) {
+      String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
+
+      return GenericTypeValidator.formatDouble(value, locale);
+   }  
 }                                                         

Modified: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TypeTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TypeTest.java?rev=164749&r1=164748&r2=164749&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TypeTest.java (original)
+++ jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/TypeTest.java Mon Apr 25 23:15:17 2005
@@ -23,6 +23,7 @@
 
 import java.io.IOException;
 import java.util.Iterator;
+import java.util.Locale;
 import java.util.Map;
 
 import junit.framework.Test;
@@ -133,6 +134,80 @@
       //assertTrue(ACTION + " value ValidatorResult should contain the '" + ACTION +"' action.", result.containsAction(ACTION));
       //assertTrue(ACTION + " value ValidatorResult for the '" + ACTION +"' action should have " + (passed ? "passed" : "failed") + ".", (passed ? result.isValid(ACTION) : !result.isValid(ACTION)));
 
+   }
+   
+   /**
+    * Tests the us locale
+    */
+   public void testUSLocale() throws ValidatorException {
+      // Create bean to run test on.
+      TypeBean info = new TypeBean();
+      info.setByte("12");
+      info.setShort("129");
+      info.setInteger("-144");
+      info.setLong("88000");
+      info.setFloat("12.1555");
+      info.setDouble("129.1551511111");
+      localeTest(info, Locale.US);
+   }
+
+   /**
+    * Tests the fr locale.
+    */
+   public void testFRLocale() throws ValidatorException {
+      // Create bean to run test on.
+      TypeBean info = new TypeBean();
+      info.setByte("12");
+      info.setShort("-129");
+      info.setInteger("1443");
+      info.setLong("88000");
+      info.setFloat("12,1555");
+      info.setDouble("129,1551511111");
+      Map map = localeTest(info, Locale.FRENCH);
+      assertTrue("float value not correct", ((Float)map.get("float")).intValue() == 12);
+      assertTrue("double value not correct", ((Double)map.get("double")).intValue() == 129);
+  }
+
+  /**
+    * Tests the locale.
+    */
+   private Map localeTest(TypeBean info, Locale locale) throws ValidatorException {
+     
+      // Construct validator based on the loaded resources 
+      // and the form key
+      Validator validator = new Validator(resources, "typeLocaleForm");
+      // add the name bean to the validator as a resource 
+      // for the validations to be performed on.
+      validator.setParameter(Validator.BEAN_PARAM, info);
+      validator.setParameter("java.util.Locale", locale);
+
+      // Get results of the validation.
+      ValidatorResults results = null;
+      
+      // throws ValidatorException, 
+      // but we aren't catching for testing 
+      // since no validation methods we use 
+      // throw this
+      results = validator.validate();
+      
+      assertNotNull("Results are null.", results);
+      
+      Map hResultValues = results.getResultValueMap();
+
+      assertTrue("Expecting byte result to be an instance of Byte for locale: "+locale, (hResultValues.get("byte") instanceof Byte));
+      assertTrue("Expecting short result to be an instance of Short for locale: "+locale, (hResultValues.get("short") instanceof Short));
+      assertTrue("Expecting integer result to be an instance of Integer for locale: "+locale, (hResultValues.get("integer") instanceof Integer));
+      assertTrue("Expecting long result to be an instance of Long for locale: "+locale, (hResultValues.get("long") instanceof Long));
+      assertTrue("Expecting float result to be an instance of Float for locale: "+locale, (hResultValues.get("float") instanceof Float));
+      assertTrue("Expecting double result to be an instance of Double for locale: "+locale, (hResultValues.get("double") instanceof Double));
+      
+      for (Iterator i = hResultValues.keySet().iterator(); i.hasNext(); ) {
+         String key = (String)i.next();
+         Object value = hResultValues.get(key);
+         
+         assertNotNull("value ValidatorResults.getResultValueMap() should not be null for locale: "+locale, value);
+      }
+      return hResultValues;
    }
 
 }                                                         

Modified: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-type.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-type.xml?rev=164749&r1=164748&r2=164749&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-type.xml (original)
+++ jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-type.xml Mon Apr 25 23:15:17 2005
@@ -10,23 +10,47 @@
                  methodParams="java.lang.Object,org.apache.commons.validator.Field"
                  msg=""/>
 
+      <validator name="byteLocale"
+                 classname="org.apache.commons.validator.TestTypeValidator"
+                 method="validateByte"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field,java.util.Locale"
+                 msg=""/>
+
       <validator name="short"
                  classname="org.apache.commons.validator.TestTypeValidator"
                  method="validateShort"
                  methodParams="java.lang.Object,org.apache.commons.validator.Field"
                  msg=""/>
 
+      <validator name="shortLocale"
+                 classname="org.apache.commons.validator.TestTypeValidator"
+                 method="validateShort"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field,java.util.Locale"
+                 msg=""/>
+
       <validator name="int"
                  classname="org.apache.commons.validator.TestTypeValidator"
                  method="validateInt"
                  methodParams="java.lang.Object,org.apache.commons.validator.Field"
                  msg=""/>
 
+      <validator name="intLocale"
+                 classname="org.apache.commons.validator.TestTypeValidator"
+                 method="validateInt"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field,java.util.Locale"
+                 msg=""/>
+
       <validator name="long"
                  classname="org.apache.commons.validator.TestTypeValidator"
                  method="validateLong"
                  methodParams="java.lang.Object,org.apache.commons.validator.Field"
                  msg=""/>
+ 
+      <validator name="longLocale"
+                 classname="org.apache.commons.validator.TestTypeValidator"
+                 method="validateLong"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field,java.util.Locale "
+                 msg=""/>
 
       <validator name="float"
                  classname="org.apache.commons.validator.TestTypeValidator"
@@ -34,12 +58,24 @@
                  methodParams="java.lang.Object,org.apache.commons.validator.Field"
                  msg=""/>
 
+      <validator name="floatLocale"
+                 classname="org.apache.commons.validator.TestTypeValidator"
+                 method="validateFloat"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field,java.util.Locale"
+                 msg=""/>
+
       <validator name="double"
                  classname="org.apache.commons.validator.TestTypeValidator"
                  method="validateDouble"
                  methodParams="java.lang.Object,org.apache.commons.validator.Field"
                  msg=""/>
 
+      <validator name="doubleLocale"
+                 classname="org.apache.commons.validator.TestTypeValidator"
+                 method="validateDouble"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field,java.util.Locale"
+                 msg=""/>
+
    </global>
    <formset>
       <form name="typeForm">
@@ -49,6 +85,14 @@
          <field property="long" depends="long"/>    
          <field property="float" depends="float"/>    
          <field property="double" depends="double"/>
+      </form>
+      <form name="typeLocaleForm">
+         <field property="byte" depends="byteLocale"/>    
+         <field property="short" depends="shortLocale"/>    
+         <field property="integer" depends="intLocale"/>
+         <field property="long" depends="longLocale"/>    
+         <field property="float" depends="floatLocale"/>    
+         <field property="double" depends="doubleLocale"/>
       </form>
    </formset>   
 </form-validation>



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org