package rocks.inspectit.shared.cs.cmr.property.configuration.validator;
import java.util.Collection;
import rocks.inspectit.shared.cs.cmr.property.configuration.GroupedProperty;
import rocks.inspectit.shared.cs.cmr.property.configuration.validation.PropertyValidation;
import rocks.inspectit.shared.cs.cmr.property.update.IPropertyUpdate;
/**
* Validator interface for validating {@link GroupedProperty}.
*
* @author Ivan Senic
*
*/
public interface IGroupedProperyValidator {
/**
* Validates {@link GroupedProperty}.
*
* @param groupProperty
* Property to be validated.
* @param propertyValidation
* {@link PropertyValidation} for reporting validation errors.
*/
void validate(GroupedProperty groupProperty, PropertyValidation propertyValidation);
/**
* Validates {@link GroupedProperty} for given property updates.
*
* @param groupProperty
* Property to be validated.
* @param propertyUpdates
* All updates.
* @param propertyValidation
* {@link PropertyValidation} for reporting validation errors.
*/
void validateForPropertyUpdates(GroupedProperty groupProperty, Collection<IPropertyUpdate<?>> propertyUpdates, PropertyValidation propertyValidation);
}