Package org.richfaces.validator

Source Code of org.richfaces.validator.FacesBeanValidator

/**
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
*/
package org.richfaces.validator;

import java.io.Serializable;
import java.util.Set;

import javax.el.ELException;
import javax.el.ValueExpression;
import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.EditableValueHolder;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/**
* Implementation of the JSF validator to use with Bean Validation / Hibernate
* validator
*
* @author asmirnov
*
*/
public class FacesBeanValidator implements Validator,Serializable, GraphValidator {

  /**
   *
   */
  private static final long serialVersionUID = -264568176252121853L;
  public static final String BEAN_VALIDATOR_TYPE = "org.richfaces.BeanValidator";

  private ValueExpression summaryExpression = null;
 
  private String summary = null;
 
  private ValueExpression profilesExpression = null;

  private Set<String> profiles = null;
  /**
   * @return the summary
   */
  public String getSummary() {
    String summaryString = null;
    if(null != summaryExpression){
        summaryString = (String) summaryExpression.getValue(FacesContext.getCurrentInstance().getELContext());
    }else {
      summaryString = this.summary;
    }
    return summaryString;
  }
 
  /**
   * @param summary the summary to set
   */
  public void setSummary(ValueExpression summary) {
    this.summaryExpression = summary;
  }

 
  /**
   * @param summary the summary to set
   */
  public void setSummary(String summary) {
    this.summary = summary;
  }
  /*
   * (non-Javadoc)
   *
   * @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext,
   *      javax.faces.component.UIComponent, java.lang.Object)
   */
  public void validate(FacesContext context, UIComponent component,
      Object convertedValue) throws ValidatorException {
    if (component instanceof EditableValueHolder) {
      // Validate input component
      EditableValueHolder input = (EditableValueHolder) component;
      try {
        ValueExpression valueExpression = component
            .getValueExpression("value");
        if (null != valueExpression) {
          // TODO - check EL Exceptions ?
          String[] messages = HibernateValidator.getInstance(context)
              .validate(context, valueExpression, convertedValue, getProfiles());
          if (null != messages) {
            input.setValid(false);
            // send all validation messages.
            for (String msg : messages) {
              // TODO - create Summary message ?
              String summaryString = getSummary()!=null?getSummary():msg;
             
              context.addMessage(component.getClientId(context), new FacesMessage(
                  FacesMessage.SEVERITY_ERROR, summaryString , msg));
            }
          }
        }
      } catch (ELException e) {
        throw new FacesException(e);
      }
    }
  }

  public String[] validateGraph(FacesContext context, UIComponent component,
      Object value, Set<String> profilesthrows ValidatorException {
    ObjectValidator beanValidator = HibernateValidator.getInstance(context);
    String[] messages = beanValidator.validateGraph(context, value,profiles);
    return messages;
  }

  /**
   * @return the profiles
   */
  @SuppressWarnings("unchecked")
  public Set<String> getProfiles() {
    Set<String> profiles;
    if(null != profilesExpression){
        profiles = (Set<String>) profilesExpression.getValue(FacesContext.getCurrentInstance().getELContext());
    }else {
      profiles = this.profiles;
    }
    return profiles;
  }

  /**
   * @param profiles the profiles to set
   */
  public void setProfiles(Set<String> profiles) {
    this.profiles = profiles;
  }
 
  public void setProfiles(ValueExpression profilesExpression) {
    this.profilesExpression = profilesExpression;
  }
}
TOP

Related Classes of org.richfaces.validator.FacesBeanValidator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.