All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.edgarespina.mwa.handler.BindHandlerExceptionResolver Maven / Gradle / Ivy

The newest version!
package com.github.edgarespina.mwa.handler;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;

/**
 * Convert {@link BindingResult} using the {@link HttpMessageConverter} service.
 *
 * @author edgar.espina
 * @since 0.1
 */
public class BindHandlerExceptionResolver extends
    MessageConverterHandlerExceptionResolver {

  /**
   * Creates a new {@link BindHandlerExceptionResolver}.
   *
   * @param exceptionClass The exception class. Required.
   */
  public BindHandlerExceptionResolver(
      final Class exceptionClass) {
    super(exceptionClass);
  }

  /**
   * Creates a new {@link BindHandlerExceptionResolver}.
   */
  public BindHandlerExceptionResolver() {
    super(BindException.class);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  protected Object convert(final Exception exception) {
    return convert(((BindException) exception).getBindingResult());
  }

  /**
   * Use a custom format for {@link BindingResult}.
   * 
    *
  1. field: The field's name. Optional. *
  2. rejectedValue: The rejected value. Optional. *
  3. message: The error message. *
  4. type: The error type. *
  5. source: The root/contianer object. *
* {@inheritDoc} */ protected Object convert(final BindingResult bindingResult) { List bindingErrors = bindingResult.getAllErrors(); List errors = new ArrayList(bindingErrors.size()); for (ObjectError objectError : bindingErrors) { String field = null; Object rejectedValue = null; if (objectError instanceof FieldError) { FieldError fieldError = (FieldError) objectError; field = fieldError.getField(); rejectedValue = fieldError.getRejectedValue(); } Map error = new HashMap(); error.put("field", field); error.put("rejectedValue", rejectedValue); error.put("message", (StringUtils.trimToEmpty(field) + " " + objectError .getDefaultMessage()).trim()); error.put("type", StringUtils.uncapitalize(objectError.getCode())); error.put("source", objectError.getObjectName()); errors.add(error); } return errors; } }