package rocks.inspectit.shared.cs.cmr.property.configuration.validator;
import rocks.inspectit.shared.cs.cmr.property.configuration.SingleProperty;
import rocks.inspectit.shared.cs.cmr.property.configuration.validation.PropertyValidation;
/**
* Validator interface working on the {@link SingleProperty}.
*
* @author Ivan Senic
*
* @param <T>
* Type of the value validator can validate on.
*/
public interface ISinglePropertyValidator<T> {
/**
* Performs validation of the property and adds any found error to the
* {@link PropertyValidation}.
*
* @param property
* {@link SingleProperty} to validate.
* @param propertyValidation
* {@link PropertyValidation} to report errors to.
*/
void validate(SingleProperty<? extends T> property, PropertyValidation propertyValidation);
/**
* Performs the validation of the property but takes the given value as the value to validate
* against.
*
* @param property
* {@link SingleProperty} to validate.
* @param propertyValidation
* {@link PropertyValidation} to report errors to.
* @param value
* Value to validate against.
*/
void validateForValue(SingleProperty<? extends T> property, PropertyValidation propertyValidation, T value);
}