public void bultin() { // tag::builtin[] try { Validator.notEmpty().validate("mustBeNotEmpty"); // <1> Validator.notEmpty("Value must be not empty", "myLocalizationMessageCode").validate("mustBeNotEmpty"); // <2> } catch (ValidationException e) { // invalid value System.out.println(e.getLocalizedMessage()); // <3> } // end::builtin[] }
/** * Checks the validity of the given <code>value</code> against every registered validator, if any. If the value * is not valid, an {@link ValidationException} is thrown. * <p> * The {@link ValidationException} is {@link Localizable}, providing optional message code and arguments for * validation message localization. * </p> * @param value Value to validate * @throws ValidationException If the value is not valid, providing the validation error message. */ default void validate(T value) throws ValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<T> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); } } if (!failures.isEmpty()) { throw (failures.size() == 1) ? failures.getFirst() : new ValidationException(failures.toArray(new ValidationException[failures.size()])); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void validate(T value) throws ValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<T> validator : getValidators()) { try { validator.validate(value); } catch (UnsupportedValidationTypeException ut) { // try to use conveted value if (!getConverter().isPresent()) { throw ut; } try { ((Validator) validator).validate(getConvertedValue(value)); } catch (ValidationException cve) { failures.add(cve); } } catch (ValidationException ve) { failures.add(ve); } } if (!failures.isEmpty()) { throw (failures.size() == 1) ? failures.getFirst() : new ValidationException(failures.toArray(new ValidationException[failures.size()])); } }
@Override public ValidationResult apply(T value, ValueContext context) { try { validator.validate(value); } catch (ValidationException e) { return ValidationResult.error(e.getLocalizedMessage()); } return ValidationResult.ok(); }
@SuppressWarnings("unchecked") @Override public void validate(Object value) throws InvalidValueException { try { validator.validate((T) value); } catch (ValidationException ve) { throw ValidationUtils.translateValidationException(ve); } catch (Exception e) { throw new InvalidValueException("Invalid value type: " + ExceptionUtils.getRootCauseMessage(e)); } }
/** * Group value validation. * @param value The value to validate * @return The group validation status */ protected ValidationStatus getGroupValidation(PropertyBox value) { final LinkedList<ValidationException> failures = new LinkedList<>(); // invoke group validators for (Validator<PropertyBox> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); if (isStopOverallValidationAtFirstFailure()) { break; } } } // check validation failed if (!failures.isEmpty()) { return ValidationStatus.invalid(failures); } // validation succeeded return ValidationStatus.valid(); }
@Override public ValidationResult apply(T value, ValueContext context) { try { validator.validate(value); } catch (ValidationException e) { return ValidationResult.error(e.getValidationMessages().isEmpty() ? e.getLocalizedMessage() : LocalizationContext.translate(e.getValidationMessages().get(0), true)); } return ValidationResult.ok(); }
/** * Validate given value using registered {@link Validators}. * @param value Value to validate * @throws ValidationException If the value is not valid */ protected void validate(V value) throws ValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<V> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); } } // collect validation exceptions, if any if (!failures.isEmpty()) { ValidationException validationException = (failures.size() == 1) ? failures.getFirst() : new ValidationException(failures.toArray(new ValidationException[0])); // notify ValidationStatusHandler getValidationStatusHandler() .ifPresent(vsh -> vsh.validationStatusChange(new DefaultValidationStatusEvent<>(Status.INVALID, validationException.getValidationMessages(), this, null))); throw validationException; } // VALID: notify ValidationStatusHandler getValidationStatusHandler().ifPresent( vsh -> vsh.validationStatusChange(new DefaultValidationStatusEvent<>(Status.VALID, null, this, null))); }
/** * Validate given value using registered {@link Validators}. * @param value Value to validate * @throws ValidationException If the value is not valid */ protected void validate(T value) throws ValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<T> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); } } // collect validation exceptions, if any if (!failures.isEmpty()) { final ValidationException validationException = (failures.size() == 1) ? failures.getFirst() : new ValidationException(failures.toArray(new ValidationException[0])); // INVALID: notify ValidationStatusHandler getValidationStatusHandler().ifPresent(vsh -> vsh.validationStatusChange( ValidationStatusEvent.invalid(this, validationException.getValidationMessages()))); throw validationException; } // VALID: notify ValidationStatusHandler getValidationStatusHandler().ifPresent(vsh -> vsh.validationStatusChange(ValidationStatusEvent.valid(this))); }
/** * Validate given value using registered {@link Validators}. * @param value Value to validate * @throws ValidationException If the value is not valid */ protected void validate(V value) throws ValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<V> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); } } // collect validation exceptions, if any if (!failures.isEmpty()) { ValidationException validationException = (failures.size() == 1) ? failures.getFirst() : new ValidationException(failures.toArray(new ValidationException[0])); // notify ValidationStatusHandler getValidationStatusHandler() .ifPresent(vsh -> vsh.validationStatusChange(new DefaultValidationStatusEvent<>(Status.INVALID, validationException.getValidationMessages(), this, null))); throw validationException; } // VALID: notify ValidationStatusHandler getValidationStatusHandler().ifPresent( vsh -> vsh.validationStatusChange(new DefaultValidationStatusEvent<>(Status.VALID, null, this, null))); }
/** * Overall validation * @param value Value to validate * @throws OverallValidationException If validation fails */ protected void validate(PropertyBox value) throws OverallValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<PropertyBox> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); if (isStopOverallValidationAtFirstFailure()) { break; } } } // collect validation exceptions, if any if (!failures.isEmpty()) { OverallValidationException validationException = (failures.size() == 1) ? new OverallValidationException(failures.getFirst().getMessage(), failures.getFirst().getMessageCode(), failures.getFirst().getMessageArguments()) : new OverallValidationException(failures.toArray(new ValidationException[failures.size()])); // notify validation status notifyInvalidValidationStatus(validationException, getOverallValueComponent().orElse(null), null); throw validationException; } // notify validation status notifyValidValidationStatus(getOverallValueComponent().orElse(null), null); }
/** * Overall validation * @param value Value to validate * @throws OverallValidationException If validation fails */ protected void validate(PropertyBox value) throws OverallValidationException { LinkedList<ValidationException> failures = new LinkedList<>(); for (Validator<PropertyBox> validator : getValidators()) { try { validator.validate(value); } catch (ValidationException ve) { failures.add(ve); if (isStopOverallValidationAtFirstFailure()) { break; } } } // collect validation exceptions, if any if (!failures.isEmpty()) { OverallValidationException validationException = (failures.size() == 1) ? new OverallValidationException(failures.getFirst().getMessage(), failures.getFirst().getMessageCode(), failures.getFirst().getMessageArguments()) : new OverallValidationException(failures.toArray(new ValidationException[failures.size()])); // notify validation status notifyInvalidValidationStatus(validationException, getOverallValueComponent().orElse(null), null); throw validationException; } // notify validation status notifyValidValidationStatus(getOverallValueComponent().orElse(null), null); }