Package org.springframework.data.rest.core

Source Code of org.springframework.data.rest.core.ValidationErrors

package org.springframework.data.rest.core;

import static org.springframework.util.ReflectionUtils.*;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.mapping.PersistentProperty;
import org.springframework.validation.AbstractErrors;
import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;

/**
* An {@link Errors} implementation for use in the events mechanism of Spring Data REST.
*
* @author Jon Brisbin
*/
public class ValidationErrors extends AbstractErrors {

  private static final long serialVersionUID = 8141826537389141361L;

  private String name;
  private Object entity;
  private PersistentEntity<?, ?> persistentEntity;
  private List<ObjectError> globalErrors = new ArrayList<ObjectError>();
  private List<FieldError> fieldErrors = new ArrayList<FieldError>();

  public ValidationErrors(String name, Object entity, PersistentEntity<?, ?> persistentEntity) {
    this.name = name;
    this.entity = entity;
    this.persistentEntity = persistentEntity;
  }

  @Override
  public String getObjectName() {
    return name;
  }

  @Override
  public void reject(String errorCode, Object[] errorArgs, String defaultMessage) {
    globalErrors.add(new ObjectError(name, new String[] { errorCode }, errorArgs, defaultMessage));
  }

  @Override
  public void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) {
    fieldErrors.add(new FieldError(name, field, getFieldValue(field), true, new String[] { errorCode }, errorArgs,
        defaultMessage));
  }

  @Override
  public void addAllErrors(Errors errors) {
    globalErrors.addAll(errors.getAllErrors());
  }

  @Override
  public List<ObjectError> getGlobalErrors() {
    return globalErrors;
  }

  @Override
  public List<FieldError> getFieldErrors() {
    return fieldErrors;
  }

  @Override
  public Object getFieldValue(String field) {
    PersistentProperty<?> prop = persistentEntity != null ? persistentEntity.getPersistentProperty(field) : null;
    if (null == prop) {
      return null;
    }

    Method getter = prop.getGetter();
    if (null != getter) {
      return invokeMethod(getter, entity);
    }
    Field fld = prop.getField();
    if (null != fld) {
      return getField(fld, entity);
    }

    return null;
  }

}
TOP

Related Classes of org.springframework.data.rest.core.ValidationErrors

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.