/** * Extract {@link ConstraintViolation constraint violations} from given exception and transform them into a list of * {@link ValidationError validation errors}. * * @param violation exception containing constraint violations. * @return list of validation errors (not {@code null}). */ public static List<ValidationError> constraintViolationToValidationErrors(final ConstraintViolationException violation) { return violation.getConstraintViolations().stream().map(violation1 -> new ValidationError( violation1.getMessage(), violation1.getMessageTemplate(), getViolationPath(violation1), getViolationInvalidValue(violation1.getInvalidValue()) )).collect(Collectors.toList()); }
/** * Validate the given value. * * @param value The value, may be null * @param field The name of the field being validated, if applicable * @param context The Ninja request context */ @Override public void validate(Object value, String field, Context context) { if (value != null) { final ValidatorFactory validatorFactory = javax.validation.Validation.buildDefaultValidatorFactory(); final javax.validation.Validator validator = validatorFactory.getValidator(); final Set<javax.validation.ConstraintViolation<Object>> violations = validator.validate(value); final Locale localeToUse = this.requestLanguage.getLocaleFromStringOrDefault(this.requestLanguage.getLanguage(context, Optional.<Result>empty())); final Validation validation = context.getValidation(); for (final javax.validation.ConstraintViolation<Object> violation : violations) { final String violationMessage = validatorFactory.getMessageInterpolator().interpolate( violation.getMessageTemplate(), new NinjaContextMsgInterpolator(value, violation.getConstraintDescriptor()), localeToUse ); final String messageKey = violation.getMessageTemplate().replaceAll("[{}]", ""); final ConstraintViolation constraintViolation = new ConstraintViolation( messageKey, violation.getPropertyPath().toString(), violationMessage, violation.getInvalidValue()); validation.addViolation(constraintViolation); } } }
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); }
/** * Returns the interpolated error message for the given constraint violation * using the locale specified for this validator. * * @param violation * the constraint violation * @param locale * the used locale * @return the localized error message */ protected String getMessage(ConstraintViolation<?> violation, Locale locale) { return getJavaxBeanValidatorFactory().getMessageInterpolator() .interpolate(violation.getMessageTemplate(), createContext(violation), locale); }
if (cv1.getMessageTemplate() != null ? !cv1.getMessageTemplate().equals(cv2.getMessageTemplate()) : cv2.getMessageTemplate() != null)
/** * @see ConstraintViolation#getMessageTemplate */ public String getMessageTemplate() { return constraintViolation.getMessageTemplate(); }
message.setLeafBeanId(leafId); message.setMessage(error.getMessage()); message.setMessageTemplate(error.getMessageTemplate()); message.setPath(error.getPropertyPath().toString()); message.setRootBeanId(rootId);
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); }
@Override public Object handleException(ActionValidationException exception, ActionExecutionContext context) { List<ActionConstraintViolation> violations = new ArrayList<ActionConstraintViolation>(); for (ConstraintViolation<Object> constraintViolation : exception.getValidationResults()) { violations.add(new ActionConstraintViolation(constraintViolation.getPropertyPath().toString(), constraintViolation.getMessageTemplate(), constraintViolation.getMessage())); } return new ValidationExceptionResponse(violations); }
/** * Returns the internacionalized message for this constraint violation. */ protected String extractInternacionalizedMessage(ConstraintViolation<Object> v) { return interpolator.interpolate(v.getMessageTemplate(), new BeanValidatorContext(v), locale.get()); } }
private boolean validateRequest(ValidatingRequest request, InvalidArgumentException ex) { Set<ConstraintViolation<ValidatingRequest>> violations = validator.validate(request); for (ConstraintViolation<ValidatingRequest> v : violations) { // Add all violations to the provided InvalidArgumentException. String property = ObjectUtils.ifNotNull(v.getPropertyPath(), Object::toString, "UNKNOWN"); String value = ObjectUtils.ifNotNull(v.getInvalidValue(), Object::toString, "NULL"); ex.addValidationError(v.getMessage(), v.getMessageTemplate(), property, value); } return !violations.isEmpty(); }
@Override public <T> Validator addAll(String alias, Set<ConstraintViolation<T>> errors) { for (ConstraintViolation<T> v : errors) { String msg = interpolator.interpolate(v.getMessageTemplate(), new BeanValidatorContext(v), locale); String category = v.getPropertyPath().toString(); if (!isNullOrEmpty(alias)) { category = alias + "." + category; } add(new SimpleMessage(category, msg)); logger.debug("added message {}={} for contraint violation", category, msg); } return this; }
private List<Message> getMessages(final Set<ConstraintViolation<Object>> violations) { List<Message> messages = new ArrayList<Message>(); for(ConstraintViolation<Object> violation : violations) { BeanValidatorContext ctx = BeanValidatorContext.of(violation); String msg = interpolator.interpolate(violation.getMessageTemplate(), ctx, getLocale()); messages.add(new ValidationMessage(msg, violation.getPropertyPath().toString())); logger.debug("added message {} to validation of bean {}", msg, violation.getRootBean()); } return messages; }
@Override public JsonElement serialize(final ConstraintViolation<?> constraintViolation, final Type type, final JsonSerializationContext jsonSerializationContext) { Assert.requireNonNull(constraintViolation, "constraintViolation"); final JsonObject root = new JsonObject(); root.addProperty(RemoteConstants.TYPE_PROPERTY_NAME, getTypeName(constraintViolation.getConstraintDescriptor().getAnnotation().annotationType())); if(configuration.addViolationMessageToResponse()) { root.addProperty(RemoteConstants.MESSAGE_PROPERTY_NAME, constraintViolation.getMessage()); } if(configuration.addViolationMessageTemplateToResponse()) { root.addProperty(RemoteConstants.TEMPLATE_PROPERTY_NAME, constraintViolation.getMessageTemplate()); } return root; }
public ServiceMethodConstraintViolation(Class serviceInterface, ConstraintViolation violation) { this.message = violation.getMessage(); this.messageTemplate = violation.getMessageTemplate(); this.invalidValue = violation.getInvalidValue(); this.constraintDescriptor = violation.getConstraintDescriptor(); this.executableParameters = violation.getExecutableParameters(); this.executableReturnValue = violation.getExecutableReturnValue(); this.rootBeanClass = serviceInterface; this.propertyPath = violation.getPropertyPath(); }
@Override public void convert(final ConstraintViolationException exception) { setMessage(getMessageSource().getMessage("constraint.violation")); for (ConstraintViolation<?> constraintViolation : exception.getConstraintViolations()) { mensagens.add(getMessageSource().getMessage( constraintViolation.getMessageTemplate().replace("{", "").replace("}", ""), constraintViolation.getPropertyPath())); } } }
/** * Returns the human readable error message for a given {@link ConstraintViolation}. * * @param violation The violation to get the message for * @param locale The desired target locale * @return the localized message */ public String translate(ConstraintViolation<?> violation, Locale locale) { SimpleMessageInterpolatorContext context = new SimpleMessageInterpolatorContext(violation); MessageInterpolator interpolator = validatorFactory.getMessageInterpolator(); return interpolator.interpolate(violation.getMessageTemplate(), context, locale); }
@Override public Response toResponse(ConstraintViolationException ex) { ResultStash.Builder builder = ResultStash.builder().setStatus(Response.Status.PRECONDITION_FAILED); for (ConstraintViolation<?> v : ex.getConstraintViolations()) { // Add all violations to the response. String value = ObjectUtils.ifNotNull(v.getInvalidValue(), Object::toString, "NULL"); builder.addFieldError(v.getMessage(), v.getMessageTemplate(), printPropertyPath(v.getPropertyPath()), value); } return builder.buildResponse(); }
ValidationError createError() { final ValidationError ve = new ValidationError(); ve.setMessage(render()); final String messageTemplate = this.violation.getMessageTemplate(); final String key = extractKey(messageTemplate); if (key != null) { ve.addMessageKey(key); } return ve; }
ValidationError createError() { final ValidationError ve = new ValidationError(); ve.setMessage(render()); final String messageTemplate = violation.getMessageTemplate(); final String key = extractKey(messageTemplate); if (key != null) { ve.addMessageKey(key); } return ve; }