/* * Copyright 2000-2014 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.data; import java.io.Serializable; 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 Vaadin Ltd. * @since 3.0 * @see com.vaadin.data.Validator */ public interface Validatable extends Serializable { /** *

* 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); /** * Removes all validators from this object, as if * {@link #removeValidator(Validator) removeValidator} was called for each * registered validator. */ void removeAllValidators(); /** *

* Returns a collection of all validators currently registered for the * object. The collection may be immutable. Calling * removeValidator for this Validatable while iterating over * the collection may be unsafe (e.g. may throw * ConcurrentModificationException.) *

* * @return A collection of validators */ 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; }