/** * Default constructor. * * @param propertyValidation * {@link PropertyValidation} object that contains validation errors that caused * exception to be raised. */ public PropertyValidationException(PropertyValidation propertyValidation) { super(propertyValidation.getMessage()); this.propertyValidation = propertyValidation; }
/** * Creates new instance of {@link PropertyValidation} for given {@link AbstractProperty}. * * @param property * {@link AbstractProperty} for validation. * @return New instance of {@link PropertyValidation}. Note that returned object will not * contain any validation errors. */ public static PropertyValidation createFor(AbstractProperty property) { return new PropertyValidation(property); }
/** * Adds {@link ValidationError} to the {@link PropertyValidation}. * * @param property * {@link SingleProperty} being validated. * @param propertyValidation * {@link PropertyValidation} to add error to. * @param message * Message to add to {@link ValidationError}. */ private void addValidationError(SingleProperty<? extends T> property, PropertyValidation propertyValidation, String message) { ValidationError validationError = new ValidationError(Collections.<SingleProperty<?>> singletonList(property), message); propertyValidation.addValidationError(validationError); } }
/** * Validates with the group validators this property, based on the changes of the single * properties reported by update list. * * @param propertyUpdates * Information about updates. * @throws PropertyValidationException * If validation fails. */ public void validateForPropertiesUpdate(Collection<IPropertyUpdate<?>> propertyUpdates) throws PropertyValidationException { PropertyValidation propertyValidation = PropertyValidation.createFor(this); for (IGroupedProperyValidator groupedProperyValidator : validators) { groupedProperyValidator.validateForPropertyUpdates(this, propertyUpdates, propertyValidation); } // if has errors raise exception, otherwise create property update if (propertyValidation.hasErrors()) { throw new PropertyValidationException(propertyValidation); } }
/** * {@inheritDoc} */ @Override public int getValidationErrorsCount() { int count = super.getValidationErrorsCount(); if (null != propertyValidation) { count += propertyValidation.getErrorCount(); } return count; }
/** * Validate current property value(s) and report any validation problems via the * {@link PropertyValidation} that is returned. * * @return {@link PropertyValidation} containing validation errors if found. */ public PropertyValidation validate() { PropertyValidation errors = PropertyValidation.createFor(this); validate(errors); return errors; }
/** * Executes group validation. */ private void executeGroupValidation() { try { groupedProperty.validateForPropertiesUpdate(correctUpdateMap.values()); propertyValidation = null; // NOPMD } catch (PropertyValidationException exception) { propertyValidation = exception.getPropertyValidation(); } } }
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { ValidationError validationError = new ValidationError(Collections.<SingleProperty<?>> singletonList(property), "Value of property '" + property.getName() + "' must be greater than " + against); propertyValidation.addValidationError(validationError); } }
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { ValidationError validationError = new ValidationError(Collections.<SingleProperty<?>> singletonList(property), "Value of property '" + property.getName() + "' must be less than " + against); propertyValidation.addValidationError(validationError); } }
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { ValidationError validationError = new ValidationError(Collections.<SingleProperty<?>> singletonList(property), "Value of property '" + property.getName() + "' must be less or equal than " + against); propertyValidation.addValidationError(validationError); } }
@Override public Object answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); PropertyValidation propertyValidation = (PropertyValidation) args[0]; propertyValidation.addValidationError(new ValidationError()); return null; } }).when(singleProperty1).validate(Matchers.<PropertyValidation> anyObject());
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { ValidationError validationError = new ValidationError(Collections.<SingleProperty<?>> singletonList(property), "Value of property '" + property.getName() + "' must be greater or equal than " + against); propertyValidation.addValidationError(validationError); } }
@Override public Object answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); PropertyValidation propertyValidation = (PropertyValidation) args[0]; propertyValidation.addValidationError(new ValidationError()); return null; } }).when(singleProperty1).validate(Matchers.<PropertyValidation> anyObject());
@Override public Object answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); PropertyValidation propertyValidation = (PropertyValidation) args[1]; propertyValidation.addValidationError(new ValidationError()); return null; } }).when(validator1).validate(eq(groupedProperty), Matchers.<PropertyValidation> anyObject());
/** * Retrieves against value from {@link #than} for given property. If parsing fails the * {@link PropertyValidation} will be filled with error and <code>null</code> will be returned * as value. * * @param property * Property to get against value for. * @param propertyValidation * Validation to report errors. * @return Value or <code>null</code> if parsing fails. */ private T getAgainstValue(SingleProperty<? extends T> property, PropertyValidation propertyValidation) { T against = property.parseLiteral(than); if (null == against) { ValidationError validationError = new ValidationError(Collections.<SingleProperty<?>> singletonList(property), "Validation of property " + property.getName() + " failed because literal (" + than + ") to compare against can not be parsed."); propertyValidation.addValidationError(validationError); } return against; }
@Override public Object answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); PropertyValidation propertyValidation = (PropertyValidation) args[1]; propertyValidation.addValidationError(new ValidationError(Collections.<SingleProperty<?>> singletonList(singleProperty), validationMsg)); return null; } }).when(validator1).validate(eq(singleProperty), Matchers.<PropertyValidation> anyObject());
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, SingleProperty<? extends T> againstProperty, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { List<SingleProperty<?>> properties = new ArrayList<>(2); properties.add(property); properties.add(againstProperty); ValidationError validationError = new ValidationError(properties, "Value of property '" + property.getName() + "' must be less than value of property '" + againstProperty.getName() + "'"); propertyValidation.addValidationError(validationError); } }
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, SingleProperty<? extends T> againstProperty, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { List<SingleProperty<?>> properties = new ArrayList<>(2); properties.add(property); properties.add(againstProperty); ValidationError validationError = new ValidationError(properties, "Value of property '" + property.getName() + "' must be greater or equal than value of property '" + againstProperty.getName() + "'"); propertyValidation.addValidationError(validationError); } }
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, SingleProperty<? extends T> againstProperty, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { List<SingleProperty<?>> properties = new ArrayList<>(2); properties.add(property); properties.add(againstProperty); ValidationError validationError = new ValidationError(properties, "Value of property '" + property.getName() + "' must be less or equal than value of property '" + againstProperty.getName() + "'"); propertyValidation.addValidationError(validationError); } }
/** * {@inheritDoc} */ @Override protected void compare(SingleProperty<? extends T> property, SingleProperty<? extends T> againstProperty, T value, T against, PropertyValidation propertyValidation) { if (!matches(value, against)) { List<SingleProperty<?>> properties = new ArrayList<>(2); properties.add(property); properties.add(againstProperty); ValidationError validationError = new ValidationError(properties, "Value of property '" + property.getName() + "' must be greater than value of property '" + againstProperty.getName() + "'"); propertyValidation.addValidationError(validationError); } }