package org.springframework.data.rest.webmvc.support;
import static java.lang.String.*;
import java.util.Locale;
import javax.validation.ConstraintViolation;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.context.MessageSource;
/**
* A helper class to encapsulate {@link ConstraintViolation} errors.
*
* @author Jon Brisbin
*/
public class ConstraintViolationMessage {
private final ConstraintViolation<?> violation;
private final String message;
public ConstraintViolationMessage(ConstraintViolation<?> violation, MessageSource msgSrc, Locale locale) {
this.violation = violation;
this.message = msgSrc.getMessage(violation.getMessageTemplate(),
new Object[] { violation.getLeafBean().getClass().getSimpleName(), violation.getPropertyPath().toString(),
violation.getInvalidValue() }, violation.getMessage(), locale);
}
@JsonProperty("entity")
public String getEntity() {
return violation.getRootBean().getClass().getName();
}
@JsonProperty("message")
public String getMessage() {
return message;
}
@JsonProperty("invalidValue")
public String getInvalidValue() {
return format("%s", violation.getInvalidValue());
}
@JsonProperty("property")
public String getProperty() {
return violation.getPropertyPath().toString();
}
}