turner      2002/10/10 16:44:32

  Added:       validator/src/example/org/apache/commons/validator
                        ValidateBean.java ValidateExample.java
                        applicationResources.properties
                        validator-example.xml
  Log:
  
  
  Revision  Changes    Path
  1.1                  
jakarta-commons/validator/src/example/org/apache/commons/validator/ValidateBean.java
  
  Index: ValidateBean.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-commons/validator/src/example/org/apache/commons/validator/ValidateBean.java,v
 1.1 2002/10/10 23:44:32 turner Exp $
   * $Revision: 1.1 $
   * $Date: 2002/10/10 23:44:32 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2002 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", "Commons", 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.commons.validator;
  
  
  /**                                                       
   * <p>A simple bean to use with the Validator Example.</p> 
   *
   * @author James Turner
   * @version $Revision: 1.1 $ $Date: 2002/10/10 23:44:32 $
  */                                                       
  
  public class ValidateBean extends Object {
  
      String lastName, firstName, street1, street2, city, state, postalCode, age;
  
  
      public void setLastName(String lastName) {
        this.lastName = lastName;
      }
      public void setFirstName(String firstName) {
        this.firstName = firstName;
      }
      public void setStreet1 (String street1) {
        this.street1 = street1;
      }
      public void setStreet2(String street2) {
        this.street2 = street2;
      }
      public void setCity(String city) {
        this.city = city;
      }
      public void setState(String state) {
        this.state = state;
      }
      public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
      }
      public void setAge (String age) {
        this.age = age;
      }
  
      public String getLastName() {
        return this.lastName;
      }
      public String getFirstName() {
        return this.firstName;
      }
      public String getStreet1 () {
        return this.street1;
      }
      public String getStreet2() {
        return this.street2;
      }
      public String getCity() {
        return this.city;
      }
      public String getState() {
        return this.state;
      }
      public String getPostalCode() {
        return this.postalCode;
      }
      public String getAge () {
        return this.age;
      }
  
      public String toString() {
        return "{lastname=" + this.lastName + ", firstname=" + this.firstName + 
               ", street1=" + this.street1 + ",\n street2=" + this.street2 + ", " +
                 "city=" + this.city + ", state=" + this.state + 
            ",\n postalcode=" + this.postalCode + ", age=" + this.age + "}";
      } 
  
  }
  
  
  
  1.1                  
jakarta-commons/validator/src/example/org/apache/commons/validator/ValidateExample.java
  
  Index: ValidateExample.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-commons/validator/src/example/org/apache/commons/validator/ValidateExample.java,v
 1.1 2002/10/10 23:44:32 turner Exp $
   * $Revision: 1.1 $
   * $Date: 2002/10/10 23:44:32 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2002 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", "Commons", 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.commons.validator;
  
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.Iterator;
  import java.util.Map;
  import java.text.MessageFormat;
  import java.util.Locale;
  import java.util.ResourceBundle;
  
  /**                                                       
   * <p>A simple example of setting up and using the Validator.</p> 
   *
   * @author James Turner
   * @version $Revision: 1.1 $ $Date: 2002/10/10 23:44:32 $
   *
   * This simple example shows all the steps needed to set up and use
   * the Validator.  Note that in most cases, some kind of framework
   * would be wrapped around the Validator, such as is the case with
   * the Struts Validator Framework.  However, should you wish to use
   * the Validator against raw Beans in a pure Java application, you
   * can see everything you need to know to get it working here.
   *
  */                                                       
  
  public class ValidateExample extends Object {
  
      /**
       * We need a resource bundle to get our field names and errors messages from.  
Note that this is not strictly
       * required to make the Validator work, but is a good coding practice.
       *
       */
  
      private static ResourceBundle apps = 
ResourceBundle.getBundle("org.apache.commons.validator.applicationResources");
  
  
      /**
       * This is the main method that will be called to initialize the Validator, 
create some sample beans, and
       * run the Validator against them.
       *
       */
  
      public static void main (String[] args) {
  
        InputStream in = null;
  
        try {
  
            // Create a new instance of a ValidatorResource, then get a stream
            // handle on the XML file with the actions in it, and initialize the
            // resources from it.  This would normally be done by a servlet
            // run during JSP initialization or some other application-startup
            // routine.
  
            ValidatorResources resources = new ValidatorResources();
            in = ValidateExample.class.getResourceAsStream("validator-example.xml");
            ValidatorResourcesInitializer.initialize(resources, in);
            
            // Create a test bean to validate against.
            ValidateBean bean = new ValidateBean();
  
            // Create a validator with the ValidateBean actions for the bean
            // we're interested in.
            Validator validator = new Validator(resources, "ValidateBean");
  
            // Tell the validator which bean to validate against.
            validator.addResource(Validator.BEAN_KEY, bean);
  
            ValidatorResults results = null;
  
            // Run the validation actions against the bean.  Since all of the 
properties
            // are null, we expect them all to error out except for street2, which has
            // no validations (it's an optional property)
  
            results = validator.validate();
            printResults(bean, results, resources);
  
            // Now set all the required properties, but make the age a non-integer.
            // You'll notice that age will pass the required test, but fail the int
            // test.
            bean.setLastName("Tester");
            bean.setFirstName("John");
            bean.setStreet1("1 Test Street");
            bean.setCity("Testville");
            bean.setState("TE");
            bean.setPostalCode("12345");
            bean.setAge("Too Old");
            results = validator.validate();
            printResults(bean, results, resources);
  
            // Now everything should pass.
            bean.setAge("123");
            results = validator.validate();
            printResults(bean, results, resources);
  
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // Make sure we close the input stream if it was left open.
            if (in != null) {
                try { in.close(); } catch (Exception e) {}      
            }
        }
  
      }
  
  
      /**
       *
       * Method which dumps out the Bean in question and the results of validating it.
       *
       */
  
      public static void printResults(ValidateBean bean, ValidatorResults results, 
ValidatorResources resources) {
        boolean success = true;
  
        // Start by getting the form for the current locale and Bean.
        Form form = resources.get(Locale.getDefault(), "ValidateBean");
  
        System.out.println("\n\nValidating:");
        System.out.println(bean);
  
        // Iterate over each of the properties of the Bean which had messages.
        Iterator propertyNames = results.get();
        while (propertyNames.hasNext()) {
            String propertyName = (String) propertyNames.next();
  
            // Get the Field associated with that property in the Form
            Field field = (Field) form.getFieldMap().get(propertyName);
  
            // Look up the formatted name of the field from the Field arg0
            String prettyFieldName = apps.getString(field.getArg0().getKey());
  
            // Get the result of validating the property.
            ValidatorResult result = results.getValidatorResult(propertyName);
  
            // Get all the actions run against the property, and iterate over their 
names.
            Map actionMap = result.getActionMap();
            Iterator keys = actionMap.keySet().iterator();
              while (keys.hasNext()) {
                String actName = (String) keys.next();
  
                // Get the Action for that name.
                ValidatorAction action = resources.getValidatorAction(actName);
  
                // If the result is valid, print PASSED, otherwise print FAILED
                System.out.println(propertyName + "[" + actName + "] (" + 
                                   (result.isValid(actName)?"PASSED":"FAILED") + ")");
  
                //If the result failed, format the Action's message against the 
formatted field name
                if (!result.isValid(actName)) {
                    success = false;
                    String message = apps.getString(action.getMsg());
                    Object[] args = { prettyFieldName };
                    System.out.println("     Error message will be: " + 
MessageFormat.format(message, args));
                    
                }
            }
        }
        if (success) {
            System.out.println("FORM VALIDATION PASSED");
        } else {
            System.out.println("FORM VALIDATION FAILED");
        }
  
      }
  
  }
  
  
  
  1.1                  
jakarta-commons/validator/src/example/org/apache/commons/validator/applicationResources.properties
  
  Index: applicationResources.properties
  ===================================================================
  # The error messages for the Validation Actions
  errors.required=The {0} field is required.
  errors.int=The {0} field is not an integer.
  
  # The formatted names of the properties
  nameForm.age.displayname=Age
  nameForm.lastname.displayname=Last Name
  nameForm.firstname.displayname=First Name
  nameForm.city.displayname=City
  nameForm.state.displayname=State
  nameForm.postalCode.displayname=Postal Code
  nameForm.street1.displayname=Street Address
  
  
  
  
  1.1                  
jakarta-commons/validator/src/example/org/apache/commons/validator/validator-example.xml
  
  Index: validator-example.xml
  ===================================================================
  <form-validation>
     <global>
        <validator name="int"
                   classname="org.apache.commons.validator.TestTypeValidator"
                   method="validateInt"
                   methodParams="java.lang.Object,org.apache.commons.validator.Field"
                   msg="errors.int"/>
  
        <validator name="required"
                   classname="org.apache.commons.validator.TestValidator"
                   method="validateRequired"
                   methodParams="java.lang.Object,org.apache.commons.validator.Field"
                   msg="errors.required"/>
     </global>
     <formset>
        <form name="ValidateBean">
           <field property="firstName"  depends="required">
                   <arg0 key="nameForm.firstname.displayname"/>
           </field>    
           <field  property="lastName" depends="required">
                     <arg0 key="nameForm.lastname.displayname"/>
           </field>
           <field  property="street1" depends="required">
                     <arg0 key="nameForm.street1.displayname"/>
           </field>
           <field  property="state" depends="required">
                     <arg0 key="nameForm.city.displayname"/>
           </field>
           <field  property="state" depends="required">
                     <arg0 key="nameForm.state.displayname"/>
           </field>
           <field  property="postalCode" depends="required">
                     <arg0 key="nameForm.postalCode.displayname"/>
           </field>
           <field  property="age" depends="required,int">
                     <arg0 key="nameForm.age.displayname"/>
           </field>
  
        </form>
     </formset>   
  </form-validation>
  
  
  

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

Reply via email to