com.vaadin.data.Validatable Maven / Gradle / Ivy
/*
* 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;
}