/** * Gets both field and bean level validation errors. * * @return a list of all validation errors */ public List<ValidationResult> getValidationErrors() { List<ValidationResult> errors = getFieldValidationErrors().stream() .map(s -> s.getResult().get()).collect(Collectors.toList()); errors.addAll(getBeanValidationErrors()); return errors; }
private BindingValidationStatus<TARGET> toValidationStatus( Result<TARGET> result) { return new BindingValidationStatus<>(result, this); }
/** * Gets the bound field for this status. * * @return the field */ public HasValue<?> getField() { return getBinding().getField(); } }
/** * Default {@link BindingValidationStatusHandler} functional method * implementation. * * @param status * the validation status */ protected void handleValidationStatus(BindingValidationStatus<?> status) { HasValue<?> source = status.getField(); clearError(source); if (status.isError()) { Optional<ValidationResult> firstError = status .getValidationResults().stream() .filter(ValidationResult::isError).findFirst(); if (firstError.isPresent()) { // Failed with a Validation error handleError(source, firstError.get()); } else { // Conversion error status.getResult() .ifPresent(result -> handleError(source, result)); } } else { // Show first non-error ValidationResult message. status.getValidationResults().stream() .filter(result -> result.getErrorLevel().isPresent()) .findFirst() .ifPresent(result -> handleError(source, result)); } }
Label label) { return withValidationStatusHandler(status -> { label.setValue(status.getMessage().orElse("")); label.setVisible(status.isError()); });
status.getFieldValidationErrors() .stream() .map(m -> m.getMessage().orElse("")) .forEach(errors::append);
/** * Gets error validation message if status is {@link Status#ERROR}. * * @return an optional validation error status or an empty optional if * status is not an error */ public Optional<String> getMessage() { if (getStatus() == Status.OK || result == null) { return Optional.empty(); } return result.getMessage(); }
/** * Convenience method for creating a unresolved validation status for the * given binder. * <p> * In practice this status means that the values might not be valid, but * validation errors should be hidden. * * @param source * the source binder * @return a unresolved validation status * @param <BEAN> * the bean type of the binder */ public static <BEAN> BinderValidationStatus<BEAN> createUnresolvedStatus( Binder<BEAN> source) { return new BinderValidationStatus<>(source, source.getBindings().stream().map( b -> BindingValidationStatus.createUnresolvedStatus(b)) .collect(Collectors.toList()), Collections.emptyList()); }
@Override public BindingValidationStatus<TARGET> validate(boolean fireEvent) { Objects.requireNonNull(binder, "This Binding is no longer attached to a Binder"); BindingValidationStatus<TARGET> status = doValidation(); if (fireEvent) { getBinder().getValidationStatusHandler() .statusChange(new BinderValidationStatus<>(getBinder(), Arrays.asList(status), Collections.emptyList())); getBinder().fireStatusChangeEvent(status.isError()); } return status; }
/** * Gets both field and bean level validation errors. * * @return a list of all validation errors */ public List<ValidationResult> getValidationErrors() { List<ValidationResult> errors = getFieldValidationErrors().stream() .map(s -> s.getResult().get()).collect(Collectors.toList()); errors.addAll(getBeanValidationErrors()); return errors; }
/** * Notifies validation status handlers for bindings that pass given filter. * The filter should return {@code true} for each * {@link BindingValidationStatus} that should be delegated to the status * handler in the binding. * * @see #notifyBindingValidationStatusHandlers() * * @param filter * the filter to select bindings to run status handling for * * @since 8.2 */ public void notifyBindingValidationStatusHandlers( SerializablePredicate<BindingValidationStatus<?>> filter) { bindingStatuses.stream().filter(filter).forEach(s -> s.getBinding() .getValidationStatusHandler().statusChange(s)); } }
/** * Convenience method for creating a {@link Status#UNRESOLVED} validation * status for the given binding. * * @param source * the source binding * @return unresolved validation status * @param <TARGET> * the target data type of the binding for which the validation * status was reset */ public static <TARGET> BindingValidationStatus<TARGET> createUnresolvedStatus( Binding<?, TARGET> source) { return new BindingValidationStatus<TARGET>(null, source); }
app.displayNotification(result.getResult().get().getErrorMessage());