rleland     2002/10/17 20:41:10

  Modified:    conf/share validator-rules.xml
               src/share/org/apache/struts/util StrutsValidator.java
  Added:       src/share/org/apache/struts/validator FieldChecks.java
                        Resources.java
  Log:
  Commit the renamed classes
  StrutsValidator->FieldCheck
  StrutsValidatorUtil-> Resources
  
  Revision  Changes    Path
  1.12      +17 -17    jakarta-struts/conf/share/validator-rules.xml
  
  Index: validator-rules.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/conf/share/validator-rules.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- validator-rules.xml       18 Oct 2002 01:35:02 -0000      1.11
  +++ validator-rules.xml       18 Oct 2002 03:41:10 -0000      1.12
  @@ -41,7 +41,7 @@
      <global>
   
         <validator name="required"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateRequired"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -82,7 +82,7 @@
         </validator>
   
         <validator name="requiredif"
  -                 classname="org.apache.struts.validator.ValidatorChecks"
  +                 classname="org.apache.struts.validator.FieldChecks"
                    method="validateRequiredIf"
                    methodParams="java.lang.Object,
                                  org.apache.commons.validator.ValidatorAction,
  @@ -94,7 +94,7 @@
         </validator>
   
         <validator name="minlength"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateMinLength"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -136,7 +136,7 @@
   
   
         <validator name="maxlength"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateMaxLength"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -178,7 +178,7 @@
   
   
         <validator name="mask"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateMask"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -229,7 +229,7 @@
   
   
         <validator name="byte"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateByte"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -274,7 +274,7 @@
   
   
         <validator name="short"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateShort"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -320,7 +320,7 @@
   
   
         <validator name="integer"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateInteger"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -366,7 +366,7 @@
   
   
         <validator name="long"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateLong"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -378,7 +378,7 @@
   
   
         <validator name="float"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateFloat"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -424,7 +424,7 @@
   
   
         <validator name="double"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateDouble"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -436,7 +436,7 @@
   
   
         <validator name="date"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateDate"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -599,7 +599,7 @@
   
   <!-- range is deprecated use rangeInt instead -->
         <validator name="range"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateIntRange"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -618,7 +618,7 @@
         </validator>
   
         <validator name="intRange"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateIntRange"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -662,7 +662,7 @@
         </validator>
   
         <validator name="floatRange"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateFloatRange"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -706,7 +706,7 @@
         </validator>
   
         <validator name="creditCard"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateCreditCard"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  @@ -784,7 +784,7 @@
   
   
         <validator name="email"
  -            classname="org.apache.struts.validator.ValidatorChecks"
  +            classname="org.apache.struts.validator.FieldChecks"
                  method="validateEmail"
            methodParams="java.lang.Object,
                          org.apache.commons.validator.ValidatorAction,
  
  
  
  1.13      +29 -29    
jakarta-struts/src/share/org/apache/struts/util/StrutsValidator.java
  
  Index: StrutsValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/StrutsValidator.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- StrutsValidator.java      18 Oct 2002 01:35:02 -0000      1.12
  +++ StrutsValidator.java      18 Oct 2002 03:41:10 -0000      1.13
  @@ -72,7 +72,7 @@
    * In general passin in a null or blank will return a null Object or a false
    * boolean. However, nulls and blanks do not result in an error being added to the
    * errors.
  - *@deprecated  As of Struts 1.1b3, replaced by    {@link 
org.apache.struts.validator.ValidatorChecks }
  + *@deprecated  As of Struts 1.1b3, replaced by    {@link 
org.apache.struts.validator.FieldChecks }
    *
    *@author     David Winterfeldt
    *@author     James Turner
  @@ -94,7 +94,7 @@
        *
        *  Checks if the field isn't null and length of the field is greater than zero
        *  not including whitespace.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateRequired(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateRequired(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -110,7 +110,7 @@
                                              ActionErrors errors,
                                              HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateRequired(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateRequired(bean,va,field,errors,request);
       }
   
   
  @@ -120,7 +120,7 @@
        *
        *  Checks if the field matches the regular expression in the field's mask 
attribute.
        *  </p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateMask(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateMask(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -136,7 +136,7 @@
                                          ActionErrors errors,
                                          HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateMask(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateMask(bean,va,field,errors,request);
       }
   
   
  @@ -144,7 +144,7 @@
        *  <p>
        *
        *  Checks if the field can safely be converted to a byte primitive.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateByte(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateByte(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -160,7 +160,7 @@
                                       ActionErrors errors,
                                       HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateByte(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateByte(bean,va,field,errors,request);
       }
   
   
  @@ -168,7 +168,7 @@
        *  <p>
        *
        *  Checks if the field can safely be converted to a short primitive.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateShort(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateShort(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -183,7 +183,7 @@
                                         ValidatorAction va, Field field,
                                         ActionErrors errors,
                                         HttpServletRequest request) {
  -        return 
org.apache.struts.validator.ValidatorChecks.validateShort(bean,va,field,errors,request);
  +        return 
org.apache.struts.validator.FieldChecks.validateShort(bean,va,field,errors,request);
       }
   
   
  @@ -191,7 +191,7 @@
        *  <p>
        *
        *  Checks if the field can safely be converted to an int primitive.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateInteger(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateInteger(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -206,7 +206,7 @@
                                             ValidatorAction va, Field field,
                                             ActionErrors errors,
                                             HttpServletRequest request) {
  -       return 
org.apache.struts.validator.ValidatorChecks.validateInteger(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateInteger(bean,va,field,errors,request);
       }
   
   
  @@ -214,7 +214,7 @@
        *  <p>
        *
        *  Checks if the field can safely be converted to a long primitive.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateLong(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateLong(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -229,7 +229,7 @@
                                       ValidatorAction va, Field field,
                                       ActionErrors errors,
                                       HttpServletRequest request) {
  -        return 
org.apache.struts.validator.ValidatorChecks.validateLong(bean,va,field,errors,request);
  +        return 
org.apache.struts.validator.FieldChecks.validateLong(bean,va,field,errors,request);
       }
   
   
  @@ -237,7 +237,7 @@
        *  <p>
        *
        *  Checks if the field can safely be converted to a float primitive.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateFloat(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateFloat(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -252,7 +252,7 @@
                                         ValidatorAction va, Field field,
                                         ActionErrors errors,
                                         HttpServletRequest request) {
  -       return 
org.apache.struts.validator.ValidatorChecks.validateFloat(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateFloat(bean,va,field,errors,request);
       }
   
   
  @@ -260,7 +260,7 @@
        *  <p>
        *
        *  Checks if the field can safely be converted to a double primitive.</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateDouble(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateDouble(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -275,7 +275,7 @@
                                           ValidatorAction va, Field field,
                                           ActionErrors errors,
                                           HttpServletRequest request) {
  -       return 
org.apache.struts.validator.ValidatorChecks.validateDouble(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateDouble(bean,va,field,errors,request);
       }
   
   
  @@ -290,7 +290,7 @@
        *  variable is specified, then the field gets the DateFormat.SHORT format for
        *  the locale. The setLenient method is set to <code>false</code> for all 
variations.
        *  </p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateDate(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateDate(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
  @@ -306,7 +306,7 @@
                                       ActionErrors errors,
                                       HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateDate(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateDate(bean,va,field,errors,request);
       }
   
       /**
  @@ -314,7 +314,7 @@
        *
        *  Checks if a fields value is within a range (min &amp; max specified in the
        *  vars attribute).</p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateIntRange(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateIntRange(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
        *@param  field    The <code>Field</code> object associated with the current
  @@ -328,7 +328,7 @@
                                           ValidatorAction va, Field field,
                                           ActionErrors errors,
                                           HttpServletRequest request) {
  -        return org.apache.struts.validator.ValidatorChecks.validateIntRange(bean, 
va, field, errors, request);
  +        return org.apache.struts.validator.FieldChecks.validateIntRange(bean, va, 
field, errors, request);
       }
   
   
  @@ -336,7 +336,7 @@
        *  <p>
        *
        *  Checks if the field is a valid credit card number.</p> <p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateCreditCard(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateCreditCard(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *  Translated to Java by Ted Husted (<a 
href="mailto:husted@;apache.org">[EMAIL PROTECTED]
        *  </a>).<br>
  @@ -357,7 +357,7 @@
                                             ActionErrors errors,
                                             HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateCreditCard(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateCreditCard(bean,va,field,errors,request);
       }
   
   
  @@ -365,7 +365,7 @@
        *  <p>
        *
        *  Checks if a field has a valid e-mail address.</p> <p>
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateEmail(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateEmail(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *
        *  Based on a script by Sandeep V. Tamhankar ([EMAIL PROTECTED]), 
http://javascript.internet.com
        *  </p>
  @@ -384,7 +384,7 @@
                                           ActionErrors errors,
                                           HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateEmail(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateEmail(bean,va,field,errors,request);
       }
   
   
  @@ -394,7 +394,7 @@
        *  Checks if the field's length is less than or equal to the maximum value.
        *  A <code>Null</code> will be considered an error.</p>
        *
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateMaxLength(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateMaxLength(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
        *@param  field    The <code>Field</code> object associated with the current
  @@ -409,7 +409,7 @@
                                               ActionErrors errors,
                                               HttpServletRequest request) {
   
  -       return 
org.apache.struts.validator.ValidatorChecks.validateMaxLength(bean,va,field,errors,request);
  +       return 
org.apache.struts.validator.FieldChecks.validateMaxLength(bean,va,field,errors,request);
       }
   
   
  @@ -419,7 +419,7 @@
        *  Checks if the field's length is greater than or equal to the minimum value.
        *  A <code>Null</code> will be considered an error.</p>
        *
  -     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.ValidatorChecks#validateMinLength(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
  +     *@deprecated  As of Struts 1.1b3, replaced by {@link 
org.apache.struts.validator.FieldChecks#validateMinLength(Object,ValidatorAction,Field,ActionErrors,HttpServletRequest)}
        *@param  bean     The bean validation is being performed on.
        *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
        *@param  field    The <code>Field</code> object associated with the current
  @@ -434,7 +434,7 @@
                                               ActionErrors errors,
                                               HttpServletRequest request) {
   
  -        return 
org.apache.struts.validator.ValidatorChecks.validateMinLength(bean,va,field,errors,request);
  +        return 
org.apache.struts.validator.FieldChecks.validateMinLength(bean,va,field,errors,request);
       }
   
   }
  
  
  
  1.1                  
jakarta-struts/src/share/org/apache/struts/validator/FieldChecks.java
  
  Index: FieldChecks.java
  ===================================================================
  /*
   *  The Apache Software License, Version 1.1
   *
   *  Copyright (c) 1999 The Apache Software Foundation.  All rights
   *  reserved.
   *
   *  Redistribution and use in source and binary forms, with or without
   *  modification, are permitted provided that the following conditions
   *  are met:
   *
   *  1. Redistributions of source code must retain the above copyright
   *  notice, this list of conditions and the following disclaimer.
   *
   *  2. Redistributions in binary form must reproduce the above copyright
   *  notice, this list of conditions and the following disclaimer in
   *  the documentation and/or other materials provided with the
   *  distribution.
   *
   *  3. The end-user documentation included with the redistribution, if
   *  any, must include the following acknowlegement:
   *  "This product includes software developed by the
   *  Apache Software Foundation (http://www.apache.org/)."
   *  Alternately, this acknowlegement may appear in the software itself,
   *  if and wherever such third-party acknowlegements normally appear.
   *
   *  4. The names "The Jakarta Project", "Struts", and "Apache Software
   *  Foundation" must not be used to endorse or promote products derived
   *  from this software without prior written permission. For written
   *  permission, please contact [EMAIL PROTECTED]
   *
   *  5. Products derived from this software may not be called "Apache"
   *  nor may "Apache" appear in their names without prior written
   *  permission of the Apache Group.
   *
   *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   *  SUCH DAMAGE.
   *  ====================================================================
   *
   *  This software consists of voluntary contributions made by many
   *  individuals on behalf of the Apache Software Foundation.  For more
   *  information on the Apache Software Foundation, please see
   *  <http://www.apache.org/>.
   */
  
  package org.apache.struts.validator;
  
  import java.io.Serializable;
  import java.util.Date;
  import java.util.Locale;
  import javax.servlet.http.HttpServletRequest;
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.commons.validator.Field;
  import org.apache.commons.validator.GenericTypeValidator;
  import org.apache.commons.validator.GenericValidator;
  import org.apache.commons.validator.ValidatorAction;
  import org.apache.commons.validator.ValidatorUtil;
  import org.apache.struts.action.ActionErrors;
  
  /**
   *  <p>
   *
   *  This class contains the default validations that are used in the 
validator-rules.xml
   *  file.</p>
   *
   * In general passing in a null or blank will return a null Object or a false
   * boolean. However, nulls and blanks do not result in an error being added to the
   * errors.
   *
   *@author     David Winterfeldt
   *@author     James Turner
   *@author     Rob Leland
   *@since      Struts 1.1
   */
  public class FieldChecks implements Serializable {
  
      /**
       *  Commons Logging instance.
       */
      private static Log LOG = LogFactory.getLog(FieldChecks.class);
  
      public final static String FIELD_TEST_NULL = "NULL";
      public final static String FIELD_TEST_NOTNULL = "NOTNULL";
      public final static String FIELD_TEST_EQUAL = "EQUAL";
  
  
      /**
       *  <p>
       *
       *  Checks if the field isn't null and length of the field is greater than zero
       *  not including whitespace.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if meets stated requirements, False otherwise
       */
      public static boolean validateRequired(Object bean,
                                             ValidatorAction va, Field field,
                                             ActionErrors errors,
                                             HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          if (GenericValidator.isBlankOrNull(value)) {
              errors.add(field.getKey(),
                                   Resources.getActionError(request, va, field));
  
              return false;
          } else {
              return true;
          }
  
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field isn't null based on the values of other fields
       *  </p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  validator The <code>Validator</code> instance, used to access other 
field values.
       *@param  request  Current request object.
       *@return          True if meets stated requirements, False otherwise
       */
      public static boolean validateRequiredIf(Object bean,
                                               ValidatorAction va, Field field,
                                               ActionErrors errors,
                                               org.apache.commons.validator.Validator 
validator,
                                               HttpServletRequest request) {
          Object form = 
validator.getResource(org.apache.commons.validator.Validator.BEAN_KEY);
          String value = null;
          boolean required = false;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          int i = 0;
          String fieldJoin = "AND";
          if (!GenericValidator.isBlankOrNull(field.getVarValue("field-join"))) {
              fieldJoin = field.getVarValue("field-join");
          }
          if (fieldJoin.equalsIgnoreCase("AND")) {
              required = true;
          }
          while (!GenericValidator.isBlankOrNull(field.getVarValue("field[" + i + 
"]"))) {
              String dependProp = field.getVarValue("field[" + i + "]");
              String dependTest = field.getVarValue("field-test[" + i + "]");
              String dependTestValue = field.getVarValue("field-value[" + i + "]");
              String dependIndexed = field.getVarValue("field-indexed[" + i + "]");
              if (dependIndexed == null)
                  dependIndexed = "false";
              String dependVal = null;
              boolean this_required = false;
              if (field.isIndexed() && dependIndexed.equalsIgnoreCase("true")) {
                  String key = field.getKey();
                  if ((key.indexOf("[") > -1) &&
                                       (key.indexOf("]") > -1)) {
                      String ind = key.substring(0, key.indexOf(".") + 1);
                      dependProp = ind + dependProp;
                  }
              }
              dependVal = ValidatorUtil.getValueAsString(form, dependProp);
              if (dependTest.equals(FIELD_TEST_NULL)) {
                  if ((dependVal != null) && (dependVal.length() > 0)) {
                      this_required = false;
                  } else {
                      this_required = true;
                  }
              }
              if (dependTest.equals(FIELD_TEST_NOTNULL)) {
                  if ((dependVal != null) && (dependVal.length() > 0)) {
                      this_required = true;
                  } else {
                      this_required = false;
                  }
              }
              if (dependTest.equals(FIELD_TEST_EQUAL)) {
                  this_required = dependTestValue.equalsIgnoreCase(dependVal);
              }
              if (fieldJoin.equalsIgnoreCase("AND")) {
                  required = required && this_required;
              } else {
                  required = required || this_required;
              }
              i++;
          }
          if (required) {
              if ((value != null) && (value.length() > 0)) {
                  return true;
              } else {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
                  return false;
              }
          }
          return true;
      }
  
      /**
       *  <p>
       *
       *  Checks if the field matches the regular expression in the field's mask 
attribute.
       *  </p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if field matches mask, false otherwise.
       */
      public static boolean validateMask(Object bean,
                                         ValidatorAction va, Field field,
                                         ActionErrors errors,
                                         HttpServletRequest request) {
  
          String mask = field.getVarValue("mask");
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean,
                                   field.getProperty());
          }
          try {
              if (!GenericValidator.isBlankOrNull(value) &&
                                   !GenericValidator.matchRegexp(value, mask)) {
                  errors.add(field.getKey(),
                                       Resources.getActionError(request, va,
                                                            field));
  
                  return false;
              } else {
                  return true;
              }
          } catch (Exception e) {
              LOG.error(e.getMessage(), e);
          }
          return true;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field can safely be converted to a byte primitive.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          A Byte if valid, a null otherwise.
       */
      public static Byte validateByte(Object bean,
                                      ValidatorAction va, Field field,
                                      ActionErrors errors,
                                      HttpServletRequest request) {
  
          Byte result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatByte(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field can safely be converted to a short primitive.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          A Short if valid, otherwise a null.
       */
      public static Short validateShort(Object bean,
                                        ValidatorAction va, Field field,
                                        ActionErrors errors,
                                        HttpServletRequest request) {
          Short result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatShort(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field can safely be converted to an int primitive.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          An Integer if valid, a null otherwise.
       */
      public static Integer validateInteger(Object bean,
                                            ValidatorAction va, Field field,
                                            ActionErrors errors,
                                            HttpServletRequest request) {
          Integer result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatInt(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field can safely be converted to a long primitive.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          A Long if valid, a null otherwise.
       */
      public static Long validateLong(Object bean,
                                      ValidatorAction va, Field field,
                                      ActionErrors errors,
                                      HttpServletRequest request) {
          Long result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatLong(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field can safely be converted to a float primitive.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          A Float if valid, a null otherwise.
       */
      public static Float validateFloat(Object bean,
                                        ValidatorAction va, Field field,
                                        ActionErrors errors,
                                        HttpServletRequest request) {
          Float result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatFloat(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field can safely be converted to a double primitive.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          A Double if valid, a null otherwise.
       */
      public static Double validateDouble(Object bean,
                                          ValidatorAction va, Field field,
                                          ActionErrors errors,
                                          HttpServletRequest request) {
          Double result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatDouble(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field is a valid date. If the field has a datePattern variable,
       *  that will be used to format <code>java.text.SimpleDateFormat</code>. If the
       *  field has a datePatternStrict variable, that will be used to format 
<code>java.text.SimpleDateFormat</code>
       *  and 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. If no datePattern
       *  variable is specified, then the field gets the DateFormat.SHORT format for
       *  the locale. The setLenient method is set to <code>false</code> for all 
variations.
       *  </p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          A Date if valid, a null if blank or invalid.
       */
      public static Date validateDate(Object bean,
                                      ValidatorAction va, Field field,
                                      ActionErrors errors,
                                      HttpServletRequest request) {
  
          Date result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          String datePattern = field.getVarValue("datePattern");
          String datePatternStrict = field.getVarValue("datePatternStrict");
          Locale locale = Resources.getLocale(request);
  
          if (!GenericValidator.isBlankOrNull(value)) {
              try {
                  if (datePattern != null && datePattern.length() > 0) {
                      result = GenericTypeValidator.formatDate(value, datePattern, 
false);
                  } else if (datePatternStrict != null && datePatternStrict.length() > 
0) {
                      result = GenericTypeValidator.formatDate(value, 
datePatternStrict, true);
                  } else {
                      result = GenericTypeValidator.formatDate(value, locale);
                  }
              } catch (Exception e) {
                  LOG.error(e.getMessage(), e);
              }
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
      /**
       *  <p>
       *
       *  Checks if a fields value is within a range (min &amp; max specified in the
       *  vars attribute).</p>
       *@deprecated  As of Struts 1.1b3, replaced by {@link 
#validateIntRange(java.lang.Object,org.apache.commons.validator.ValidatorAction,org.apache.commons.validator.Field,org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest)}
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if in range, false otherwise.
       */
      public static boolean validateRange(Object bean,
                                          ValidatorAction va, Field field,
                                          ActionErrors errors,
                                          HttpServletRequest request) {
          return validateIntRange(bean, va, field, errors, request);
      }
  
      /**
       *  <p>
       *
       *  Checks if a fields value is within a range (min &amp; max specified in the
       *  vars attribute).</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if in range, false otherwise.
       */
      public static boolean validateIntRange(Object bean,
                                             ValidatorAction va, Field field,
                                             ActionErrors errors,
                                             HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          String sMin = field.getVarValue("min");
          String sMax = field.getVarValue("max");
  
          if (!GenericValidator.isBlankOrNull(value)) {
              try {
                  int iValue = Integer.parseInt(value);
                  int min = Integer.parseInt(sMin);
                  int max = Integer.parseInt(sMax);
  
                  if (!GenericValidator.isInRange(iValue, min, max)) {
                      errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
  
                      return false;
                  }
              } catch (Exception e) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
                  return false;
              }
          }
  
          return true;
      }
  
      /**
       *  <p>
       *
       *  Checks if a fields value is within a range (min &amp; max specified in the
       *  vars attribute).</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if in range, false otherwise.
       */
      public static boolean validateDoubleRange(Object bean,
                                                ValidatorAction va, Field field,
                                                ActionErrors errors,
                                                HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          String sMin = field.getVarValue("min");
          String sMax = field.getVarValue("max");
  
          if (!GenericValidator.isBlankOrNull(value)) {
              try {
                  double dValue = Double.parseDouble(value);
                  double min = Double.parseDouble(sMin);
                  double max = Double.parseDouble(sMax);
  
                  if (!GenericValidator.isInRange(dValue, min, max)) {
                      errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
  
                      return false;
                  }
              } catch (Exception e) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
                  return false;
              }
          }
  
          return true;
      }
  
      /**
       *  <p>
       *
       *  Checks if a fields value is within a range (min &amp; max specified in the
       *  vars attribute).</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if in range, false otherwise.
       */
      public static boolean validateFloatRange(Object bean,
                                               ValidatorAction va, Field field,
                                               ActionErrors errors,
                                               HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          String sMin = field.getVarValue("min");
          String sMax = field.getVarValue("max");
  
          if (!GenericValidator.isBlankOrNull(value)) {
              try {
                  float fValue = Float.parseFloat(value);
                  float min = Float.parseFloat(sMin);
                  float max = Float.parseFloat(sMax);
  
                  if (!GenericValidator.isInRange(fValue, min, max)) {
                      errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
  
                      return false;
                  }
              } catch (Exception e) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
                  return false;
              }
          }
  
          return true;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field is a valid credit card number.</p> <p>
       *
       *  Translated to Java by Ted Husted (<a 
href="mailto:husted@;apache.org">[EMAIL PROTECTED]
       *  </a>).<br>
       *  &nbsp;&nbsp;&nbsp; Reference Sean M. Burke's script at 
http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
       *  </p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          The credit card as a Long, a null if invalid, blank, or null.
       */
      public static Long validateCreditCard(Object bean,
                                            ValidatorAction va, Field field,
                                            ActionErrors errors,
                                            HttpServletRequest request) {
  
          Long result = null;
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value)) {
              result = GenericTypeValidator.formatCreditCard(value);
  
              if (result == null) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
              }
          }
  
          return result;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if a field has a valid e-mail address.</p> <p>
       *
       *  Based on a script by Sandeep V. Tamhankar ([EMAIL PROTECTED]), 
http://javascript.internet.com
       *  </p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if valid, false otherwise.
       */
      public static boolean validateEmail(Object bean,
                                          ValidatorAction va, Field field,
                                          ActionErrors errors,
                                          HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
  
          if (!GenericValidator.isBlankOrNull(value) && 
!GenericValidator.isEmail(value)) {
              errors.add(field.getKey(), Resources.getActionError(request, va, field));
              return false;
          } else {
              return true;
          }
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field's length is less than or equal to the maximum value.
       *  A <code>Null</code> will be considered an error.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if stated conditions met.
       */
      public static boolean validateMaxLength(Object bean,
                                              ValidatorAction va, Field field,
                                              ActionErrors errors,
                                              HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          String sMaxLength = field.getVarValue("maxlength");
  
          if (value != null) {
              try {
                  int max = Integer.parseInt(sMaxLength);
  
                  if (!GenericValidator.maxLength(value, max)) {
                      errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
  
                      return false;
                  }
              } catch (Exception e) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
                  return false;
              }
          }
  
          return true;
      }
  
  
      /**
       *  <p>
       *
       *  Checks if the field's length is greater than or equal to the minimum value.
       *  A <code>Null</code> will be considered an error.</p>
       *
       *@param  bean     The bean validation is being performed on.
       *@param  va       The <code>ValidatorAction</code> that is currently being 
performed.
       *@param  field    The <code>Field</code> object associated with the current
       *      field being validated.
       *@param  errors   The <code>ActionErrors</code> object to add errors to if any
       *      validation errors occur.
       *@param  request  Current request object.
       *@return          True if stated conditions met.
       */
      public static boolean validateMinLength(Object bean,
                                              ValidatorAction va, Field field,
                                              ActionErrors errors,
                                              HttpServletRequest request) {
  
          String value = null;
          if (isString(bean)) {
              value = (String) bean;
          } else {
              value = ValidatorUtil.getValueAsString(bean, field.getProperty());
          }
          String sMinLength = field.getVarValue("minlength");
  
          if (value != null) {
              try {
                  int min = Integer.parseInt(sMinLength);
  
                  if (!GenericValidator.minLength(value, min)) {
                      errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
  
                      return false;
                  }
              } catch (Exception e) {
                  errors.add(field.getKey(), Resources.getActionError(request, va, 
field));
                  return false;
              }
          }
  
          return true;
      }
  
  
      /**
       *  <p>
       *
       *  Return <code>true</code> if the specified object is a String or a 
<code>null</code>
       *  value.</p>
       *
       *@param  o  Object to be tested
       *@return    The string value
       */
      private static boolean isString(Object o) {
  
          if (o == null) {
              return (true);
          }
          return (String.class.isInstance(o));
      }
  
  }
  
  
  
  1.1                  
jakarta-struts/src/share/org/apache/struts/validator/Resources.java
  
  Index: Resources.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/validator/Resources.java,v 1.1 
2002/10/18 03:41:10 rleland Exp $
   * $Revision: 1.1 $
   * $Date: 2002/10/18 03:41:10 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Struts", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  
  package org.apache.struts.validator;
  
  import java.util.Locale;
  import javax.servlet.ServletContext;
  import javax.servlet.http.HttpServletRequest;
  import org.apache.struts.action.Action;
  import org.apache.struts.action.ActionError;
  import org.apache.struts.action.ActionErrors;
  import org.apache.struts.util.MessageResources;
  import org.apache.commons.validator.Arg;
  import org.apache.commons.validator.Field;
  import org.apache.commons.validator.Validator;
  import org.apache.commons.validator.ValidatorAction;
  import org.apache.commons.validator.ValidatorResources;
  import org.apache.struts.validator.ValidatorPlugIn;
  import org.apache.struts.config.ApplicationConfig;
  import org.apache.struts.Globals;
  
  
  /**
   * <p>This class helps provides some useful methods for retrieving objects
   * from different scopes of the application.</p>
   *
   * @author David Winterfeldt
   * @author Eddie Bush
   * @version $Revision: 1.1 $ $Date: 2002/10/18 03:41:10 $
   * @since Struts 1.1
  */
  public class Resources  {
  
     /**
      * Resources key the <code>ServletContext</code> is stored under.
     */
     public static String SERVLET_CONTEXT_KEY = "javax.servlet.ServletContext";
  
     /**
      * Resources key the <code>HttpServletRequest</code> is stored under.
     */
     public static String HTTP_SERVLET_REQUEST_KEY = 
"javax.servlet.http.HttpServletRequest";
  
     /**
      * Resources key the <code>ActionErrors</code> is stored under.
     */
     public static String ACTION_ERRORS_KEY = "org.apache.struts.action.ActionErrors";
  
     private static Locale defaultLocale = Locale.getDefault();
  
     /**
      * Retrieve <code>ValidatorResources</code> for the module.
      *
      * @deprecated In Struts 1.1b3 This method can only return the resources for the 
default
      *  module.  Use getValidatorResources(HttpServletRequest, ServletContext)
      *  to get the resources for the current application module.
     */
     public static ValidatorResources getValidatorResources(ServletContext 
application) {
        return 
(ValidatorResources)application.getAttribute(ValidatorPlugIn.VALIDATOR_KEY);
     }
  
    /**
     * Retrieve <code>ValidatorResources</code> for the current module.
     */
     public static ValidatorResources getValidatorResources(ServletContext 
application,HttpServletRequest request) {
        return (ValidatorResources) 
application.getAttribute(ValidatorPlugIn.VALIDATOR_KEY +
                             
((ApplicationConfig)request.getAttribute(Globals.APPLICATION_KEY)).getPrefix());
     }
  
     /**
      * Retrieve <code>MessageResources</code> for the application module.
      *
      * @deprecated This method can only return the resources for the default
      *  module.  Use getMessageResources(HttpServletRequest) to get the
      *  resources for the current application module.
     */
     public static MessageResources getMessageResources(ServletContext application) {
        return (MessageResources)application.getAttribute(Action.MESSAGES_KEY);
     }
  
     /**
      * Retrieve <code>MessageResources</code> for the application module.
     */
     public static MessageResources getMessageResources(HttpServletRequest request) {
        return (MessageResources)request.getAttribute(Action.MESSAGES_KEY);
     }
  
     /**
      * Get the <code>Locale</code> of the current user.
     */
     public static Locale getLocale(HttpServletRequest request) {
        Locale locale = null;
        try {
            locale = (Locale) request.getSession().getAttribute(Action.LOCALE_KEY);
        } catch (IllegalStateException e) {   // Invalidated session
            locale = null;
        }
        if (locale == null) {
           locale = defaultLocale;
        }
  
        return locale;
     }
  
     /**
      * Gets the <code>Locale</code> sensitive value based on the key passed in.
     */
     public static String getMessage(MessageResources messages, Locale locale, String 
key) {
        String message = null;
  
        if (messages != null) {
           message = messages.getMessage(locale, key);
        }
        if (message == null) {
           message = "";
        }
  
        return message;
     }
  
     /**
      * Gets the <code>Locale</code> sensitive value based on the key passed in.
     */
     public static String getMessage(HttpServletRequest request, String key) {
        MessageResources messages = getMessageResources(request);
  
        return getMessage(messages, getLocale(request), key);
     }
  
     /**
      * Gets the locale sensitive message based on the <code>ValidatorAction</code> 
message and the
      * <code>Field</code>'s arg objects.
     */
     public static String getMessage(MessageResources messages, Locale locale,
                                     ValidatorAction va, Field field) {
  
        String arg[] = getArgs(va.getName(), messages, locale, field);
        String msg = (field.getMsg(va.getName()) != null ? field.getMsg(va.getName()) 
: va.getMsg());
  
        return messages.getMessage(locale, msg, arg[0], arg[1], arg[2], arg[3]);
     }
  
     /**
      * Gets the <code>ActionError</code> based on the <code>ValidatorAction</code> 
message and the
      * <code>Field</code>'s arg objects.
     */
     public static ActionError getActionError(HttpServletRequest request,
                                              ValidatorAction va, Field field) {
  
        String arg[] = getArgs(va.getName(), getMessageResources(request), 
getLocale(request), field);
        String msg = (field.getMsg(va.getName()) != null ? field.getMsg(va.getName()) 
: va.getMsg());
  
        return new ActionError(msg, arg[0], arg[1], arg[2], arg[3]);
     }
  
     /**
      * Gets the message arguments based on the current <code>ValidatorAction</code>
      * and <code>Field</code>.
     */
     public static String[] getArgs(String actionName, MessageResources messages,
                                    Locale locale, Field field) {
  
        Arg arg0 = field.getArg0(actionName);
        Arg arg1 = field.getArg1(actionName);
        Arg arg2 = field.getArg2(actionName);
        Arg arg3 = field.getArg3(actionName);
  
        String sArg0 = null;
        String sArg1 = null;
        String sArg2 = null;
        String sArg3 = null;
  
        if (arg0 != null) {
           if (arg0.getResource()) {
              sArg0 = getMessage(messages, locale, arg0.getKey());
           } else {
              sArg0 = arg0.getKey();
           }
        }
  
        if (arg1 != null) {
           if (arg1.getResource()) {
              sArg1 = getMessage(messages, locale, arg1.getKey());
           } else {
              sArg1 = arg1.getKey();
           }
        }
  
        if (arg2 != null) {
           if (arg2.getResource()) {
              sArg2 = getMessage(messages, locale, arg2.getKey());
           } else {
              sArg2 = arg2.getKey();
           }
        }
  
        if (arg3 != null) {
           if (arg3.getResource()) {
              sArg3 = getMessage(messages, locale, arg3.getKey());
           } else {
              sArg3 = arg3.getKey();
           }
        }
  
        return new String[] { sArg0, sArg1, sArg2, sArg3 };
  
     }
  
     /**
      * Initialize the <code>Validator</code> to perform validation.
      *
      * @param    key     The key that the validation rules are under
      *               (the form elements name attribute).
      * @param    request     The current request object.
      * @param    errors      The object any errors will be stored in.
     */
     public static Validator initValidator(String key, Object bean,
                                           ServletContext application, 
HttpServletRequest request,
                                           ActionErrors errors, int page) {
  
        ValidatorResources resources = 
Resources.getValidatorResources(application,request);
        Locale locale = Resources.getLocale(request);
  
        Validator validator = new Validator(resources, key);
        validator.setUseContextClassLoader(true);
  
        validator.setPage(page);
  
        validator.addResource(SERVLET_CONTEXT_KEY, application);
        validator.addResource(HTTP_SERVLET_REQUEST_KEY, request);
        validator.addResource(Validator.LOCALE_KEY, locale);
        validator.addResource(ACTION_ERRORS_KEY, errors);
        validator.addResource(Validator.BEAN_KEY, bean);
  
        return validator;
     }
  
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:struts-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:struts-dev-help@;jakarta.apache.org>

Reply via email to