/* @ITMillApache2LicenseForJavaFiles@ */ package com.itmill.toolkit.data; import java.util.Collection; /** *

* Interface for validatable objects. Defines methods to verify if the object's * value is valid or not, and to add, remove and list registered validators of * the object. *

* * @author IT Mill Ltd. * @version * @VERSION@ * @since 3.0 * @see com.itmill.toolkit.data.Validator */ public interface Validatable { /** *

* Adds a new validator for this object. The validator's * {@link Validator#validate(Object)} method is activated every time the * object's value needs to be verified, that is, when the {@link #isValid()} * method is called. This usually happens when the object's value changes. *

* * @param validator * the new validator */ void addValidator(Validator validator); /** *

* Removes a previously registered validator from the object. The specified * validator is removed from the object and its validate * method is no longer called in {@link #isValid()}. *

* * @param validator * the validator to remove */ void removeValidator(Validator validator); /** *

* Lists all validators currently registered for the object. If no * validators are registered, returns null. *

* * @return collection of validators or null */ public Collection getValidators(); /** *

* Tests the current value of the object against all registered validators. * The registered validators are iterated and for each the * {@link Validator#validate(Object)} method is called. If any validator * throws the {@link Validator.InvalidValueException} this method returns * false. *

* * @return true if the registered validators concur that the * value is valid, false otherwise */ public boolean isValid(); /** *

* Checks the validity of the validatable. If the validatable is valid this * method should do nothing, and if it's not valid, it should throw * Validator.InvalidValueException *

* * @throws Validator.InvalidValueException * if the value is not valid */ public void validate() throws Validator.InvalidValueException; /** *

* Checks the validabtable object accept invalid values.The default value is * true. *

* */ public boolean isInvalidAllowed(); /** *

* Should the validabtable object accept invalid values. Supporting this * configuration possibility is optional. By default invalid values are * allowed. *

* * @param invalidValueAllowed * * @throws UnsupportedOperationException * if the setInvalidAllowed is not supported. */ public void setInvalidAllowed(boolean invalidValueAllowed) throws UnsupportedOperationException; }