dwinterfeldt    01/07/08 21:31:54

  Modified:    contrib/validator/src/share/com/wintecinc/struts/action
                        ValidatorForm.java
  Log:
  Added insertValidator method to make it easier to subclass the ValidatorForm.
  
  Revision  Changes    Path
  1.2       +192 -175  
jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/action/ValidatorForm.java
  
  Index: ValidatorForm.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/action/ValidatorForm.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ValidatorForm.java        2001/07/09 03:18:56     1.1
  +++ ValidatorForm.java        2001/07/09 04:31:53     1.2
  @@ -1,175 +1,192 @@
  -/*
  - * 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 com.wintecinc.struts.action;
  -
  -import java.io.Serializable;
  -import java.util.Locale;
  -import javax.servlet.ServletContext;
  -import javax.servlet.http.HttpServletRequest;
  -import org.apache.struts.action.ActionErrors;
  -import org.apache.struts.action.ActionForm;
  -import org.apache.struts.action.ActionMapping;
  -import com.wintecinc.struts.validation.Validator;
  -import com.wintecinc.struts.validation.ValidatorException;
  -import com.wintecinc.struts.validation.ValidatorResources;
  -import com.wintecinc.struts.validation.ValidatorUtil;
  -
  -
  -/**
  - * <p>This class extends <strong>ActionForm</strong> and provides 
  - * basic field validation based on an XML file. </p>
  - *
  - * <ul><li>See /WEB-INF/validation.xml for validation rules.</li></ul>
  - *
  - * @author David Winterfeldt
  - * @see org.apache.struts.action.ActionForm
  -*/
  -
  -public class ValidatorForm extends ActionForm implements Serializable {
  -    /**
  -     * Used to indicate the current page of a multi-page form.
  -    */
  -    protected int page = 0;
  -
  -    /**
  -     * Gets page.
  -    */
  -    public int getPage() {
  -       return page;  
  -    }
  -
  -    /**
  -     * Sets page.
  -    */
  -    public void setPage(int page) {
  -       this.page = page;     
  -    }
  -
  -    /**
  -     * Validate the properties that have been set from this HTTP request,
  -     * and return an <code>ActionErrors</code> object that encapsulates any
  -     * validation errors that have been found.  If no errors are found, return
  -     * <code>null</code> or an <code>ActionErrors</code> object with no
  -     * recorded error messages.
  -     *
  -     * @param mapping The mapping used to select this instance
  -     * @param request The servlet request we are processing
  -     */
  -    public ActionErrors validate(ActionMapping mapping,
  -                                 HttpServletRequest request) {
  -     
  -     ServletContext application = getServlet().getServletContext();
  -     ValidatorResources resources = 
ValidatorUtil.getValidatorResources(application);
  -     Locale locale = ValidatorUtil.getLocale(request);
  -        ActionErrors errors = new ActionErrors();
  -     
  -     Validator validator = new Validator(resources, mapping.getAttribute());
  -
  -     //validator.setDebug(getServlet().getDebug());
  -     validator.setPage(getPage());
  -
  -     validator.addResource(Validator.SERVLET_CONTEXT_KEY, application);
  -     validator.addResource(Validator.HTTP_SERVLET_REQUEST_KEY, request);
  -     validator.addResource(Validator.LOCALE_KEY, locale);
  -     validator.addResource(Validator.ACTION_ERRORS_KEY, errors);
  -     validator.addResource(Validator.BEAN_KEY, this);
  -     
  -     try {
  -        validator.validate();
  -        } catch (ValidatorException e) {
  -        log("ValidatorForm::validate() - " + e.getMessage(), e);
  -     }
  -
  -        return errors;
  -    }
  -
  -    /**
  -     * Convenience method that call the comparable servlet log method and writes 
  -     * an explanatory message and a stack trace for a given Throwable exception to 
the 
  -     * servlet log file.
  -     *
  -     * @param        message         String that describes the error or exception
  -    */
  -    protected void log(String message) {
  -       if (getServlet().getDebug() >= 1)
  -           getServlet().log(message);
  -    }
  -
  -    /**
  -     * Convenience method that call the comparable servlet log method and writes 
  -     * an explanatory message and a stack trace for a given Throwable exception to 
the 
  -     * servlet log file.
  -     *
  -     * @param        message         String that describes the error or exception
  -     * @param        throwable       Throwable error or exception
  -    */
  -    protected void log(String message, Throwable throwable) {
  -       if (getServlet().getDebug() >= 1)
  -           getServlet().log(message, throwable);
  -    }
  -
  -    /**
  -     * Reset all properties to their default values.
  -     *
  -     * @param mapping The mapping used to select this instance
  -     * @param request The servlet request we are processing
  -     */
  -    public void reset(ActionMapping mapping, HttpServletRequest request) {
  -       super.reset(mapping, request);
  -       page = 0;
  -    }
  -
  -}
  +/*
  + * 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 com.wintecinc.struts.action;
  +
  +import java.io.Serializable;
  +import java.util.Locale;
  +import javax.servlet.ServletContext;
  +import javax.servlet.http.HttpServletRequest;
  +import org.apache.struts.action.ActionErrors;
  +import org.apache.struts.action.ActionForm;
  +import org.apache.struts.action.ActionMapping;
  +import com.wintecinc.struts.validation.Validator;
  +import com.wintecinc.struts.validation.ValidatorException;
  +import com.wintecinc.struts.validation.ValidatorResources;
  +import com.wintecinc.struts.validation.ValidatorUtil;
  +
  +
  +/**
  + * <p>This class extends <strong>ActionForm</strong> and provides 
  + * basic field validation based on an XML file.  The key passed into the 
  + * validator is the action element's 'name' attribute from the 
  + * struts-config.xml which should match the form element's name attribute 
  + * in the validation.xml.</p>
  + *
  + * <ul><li>See /WEB-INF/validation.xml for validation rules.</li></ul>
  + *
  + * @author David Winterfeldt
  + * @see org.apache.struts.action.ActionForm
  +*/
  +
  +public class ValidatorForm extends ActionForm implements Serializable {
  +    /**
  +     * Used to indicate the current page of a multi-page form.
  +    */
  +    protected int page = 0;
  +
  +    /**
  +     * Gets page.
  +    */
  +    public int getPage() {
  +       return page;  
  +    }
  +
  +    /**
  +     * Sets page.
  +    */
  +    public void setPage(int page) {
  +       this.page = page;     
  +    }
  +
  +    /**
  +     * Validate the properties that have been set from this HTTP request,
  +     * and return an <code>ActionErrors</code> object that encapsulates any
  +     * validation errors that have been found.  If no errors are found, return
  +     * <code>null</code> or an <code>ActionErrors</code> object with no
  +     * recorded error messages.
  +     *
  +     * @param mapping The mapping used to select this instance
  +     * @param request The servlet request we are processing
  +     */
  +    public ActionErrors validate(ActionMapping mapping,
  +                                 HttpServletRequest request) {
  +
  +        ActionErrors errors = new ActionErrors();    
  +     Validator validator = initValidator(mapping.getAttribute(), request, errors);
  +     
  +     try {
  +        validator.validate();
  +        } catch (ValidatorException e) {
  +        log("ValidatorForm::validate() - " + e.getMessage(), e);
  +     }
  +
  +        return errors;
  +    }
  +
  +    /**
  +     * 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.
  +    */
  +    protected Validator initValidator(String key, HttpServletRequest request, 
ActionErrors errors) {
  +     ServletContext application = getServlet().getServletContext();
  +     ValidatorResources resources = 
ValidatorUtil.getValidatorResources(application);
  +     Locale locale = ValidatorUtil.getLocale(request);
  +     
  +     Validator validator = new Validator(resources, key);
  +
  +     //validator.setDebug(getServlet().getDebug());
  +     validator.setPage(getPage());
  +
  +     validator.addResource(Validator.SERVLET_CONTEXT_KEY, application);
  +     validator.addResource(Validator.HTTP_SERVLET_REQUEST_KEY, request);
  +     validator.addResource(Validator.LOCALE_KEY, locale);
  +     validator.addResource(Validator.ACTION_ERRORS_KEY, errors);
  +     validator.addResource(Validator.BEAN_KEY, this);
  +        
  +        return validator;            
  +    }
  +
  +    /**
  +     * Convenience method that call the comparable servlet log method and writes 
  +     * an explanatory message and a stack trace for a given Throwable exception to 
the 
  +     * servlet log file.
  +     *
  +     * @param        message         String that describes the error or exception
  +    */
  +    protected void log(String message) {
  +       if (getServlet().getDebug() >= 1)
  +           getServlet().log(message);
  +    }
  +
  +    /**
  +     * Convenience method that call the comparable servlet log method and writes 
  +     * an explanatory message and a stack trace for a given Throwable exception to 
the 
  +     * servlet log file.
  +     *
  +     * @param        message         String that describes the error or exception
  +     * @param        throwable       Throwable error or exception
  +    */
  +    protected void log(String message, Throwable throwable) {
  +       if (getServlet().getDebug() >= 1)
  +           getServlet().log(message, throwable);
  +    }
  +
  +    /**
  +     * Reset all properties to their default values.
  +     *
  +     * @param mapping The mapping used to select this instance
  +     * @param request The servlet request we are processing
  +     */
  +    public void reset(ActionMapping mapping, HttpServletRequest request) {
  +       super.reset(mapping, request);
  +       page = 0;
  +    }
  +
  +}
  
  
  

Reply via email to