Package com.googlecode.s2hibernate.struts2.plugin.s2hibernatevalidator.validators

Source Code of com.googlecode.s2hibernate.struts2.plugin.s2hibernatevalidator.validators.Struts2HibernateValidatorV402

package com.googlecode.s2hibernate.struts2.plugin.s2hibernatevalidator.validators;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeMap;

import javax.validation.ConstraintViolation;
import javax.validation.MessageInterpolator;
import javax.validation.Path;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

import org.hibernate.validator.engine.ResourceBundleMessageInterpolator;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Struts2HibernateValidatorV402 implements Struts2HibernateValidator{
 
  static ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 
  static Map<String, MessageInterpolator> localesMap = new TreeMap<String, MessageInterpolator>();
 
  public List<ConstraintViolation> validate(ActionSupport actionAs, Locale clientLocale,
      ClassLoader classLoader)
      throws IOException {
    List<ConstraintViolation> invalidValuesFromRequest = new ArrayList<ConstraintViolation>();
   
    MessageInterpolator interpolator = null;
   
    if (localesMap.containsKey(clientLocale.toString())) {
      interpolator = localesMap.get(clientLocale.toString());
    } else {
      ResourceBundle clientDefaultMessages = ResourceBundle.getBundle("org/hibernate/validator/ValidationMessages", clientLocale);
     
      try {
        ResourceBundle clientCustomMessages = ResourceBundle.getBundle("ValidationMessages", clientLocale);
       
      } catch (MissingResourceException e) {
        interpolator = new ResourceBundleMessageInterpolator(clientDefaultMessages);
      }
      localesMap.put(clientLocale.toString(), interpolator);
    }

    Validator validator = factory.usingContext().messageInterpolator(interpolator).getValidator();
   
    Set<ConstraintViolation<ActionSupport>> constraintViolations = validator.validate(actionAs);
   
    List<Path> invalidFieldNames = new ArrayList<Path>();
    Map parameters = ActionContext.getContext().getParameters();
    for (ConstraintViolation<ActionSupport> constrantViolation : constraintViolations) {
      Path fieldPath = constrantViolation.getPropertyPath();
      Map<String, Object> attrs = constrantViolation.getConstraintDescriptor().getAttributes();
      if (invalidFieldNames.contains(fieldPath))
        continue;
      if (parameters.containsKey(fieldPath.toString())) {
        invalidValuesFromRequest.add(constrantViolation);
        invalidFieldNames.add(fieldPath);
      }
    } 
    constraintViolations.clear();
    constraintViolations=null;
    invalidFieldNames.clear();
    invalidFieldNames = null;
    validator=null;
    return invalidValuesFromRequest;
  }


  public void addFieldErrors(ActionSupport actionAs,
      Collection invalidValuesFromRequest) {
    for (ConstraintViolation constraintViolation : (List<ConstraintViolation>)invalidValuesFromRequest) {
      StringBuilder sbMessage = new StringBuilder(actionAs.getText(constraintViolation.getPropertyPath().toString(),""));
      if (sbMessage.length()>0)
        sbMessage.append(" - ");
      sbMessage.append(actionAs.getText(constraintViolation.getMessage()));
      actionAs.addFieldError(constraintViolation.getPropertyPath().toString(), sbMessage.toString());
    }
  }

}
TOP

Related Classes of com.googlecode.s2hibernate.struts2.plugin.s2hibernatevalidator.validators.Struts2HibernateValidatorV402

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.