001: /* *************************************************************************
002:
003: Millstone(TM)
004: Open Sourced User Interface Library for
005: Internet Development with Java
006:
007: Millstone is a registered trademark of IT Mill Ltd
008: Copyright (C) 2000-2005 IT Mill Ltd
009:
010: *************************************************************************
011:
012: This library is free software; you can redistribute it and/or
013: modify it under the terms of the GNU Lesser General Public
014: license version 2.1 as published by the Free Software Foundation.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: *************************************************************************
026:
027: For more information, contact:
028:
029: IT Mill Ltd phone: +358 2 4802 7180
030: Ruukinkatu 2-4 fax: +358 2 4802 7181
031: 20540, Turku email: info@itmill.com
032: Finland company www: www.itmill.com
033:
034: Primary source for MillStone information and releases: www.millstone.org
035:
036: ********************************************************************** */
037:
038: package org.millstone.base.data;
039:
040: import java.util.Collection;
041:
042: /** <p>Interface for validatable objects. Defines methods to verify if the
043: * object's value is valid or not, and to add, remove and list registered
044: * validators of the object.</p>
045: *
046: * @author IT Mill Ltd.
047: * @version 3.1.1
048: * @since 3.0
049: * @see org.millstone.base.data.Validator
050: */
051: public interface Validatable {
052:
053: /** Adds a new validator for this object. The validator's
054: * {@link Validator#validate(Object)} method is activated every time the
055: * object's value needs to be verified, that is, when the
056: * {@link #isValid()} method is called. This usually happens when the
057: * object's value changes.
058: *
059: * @param validator the new validator
060: */
061: void addValidator(Validator validator);
062:
063: /** Removes a previously registered validator from the object. The
064: * specified validator is removed from the object and its
065: * <code>validate</code> method is no longer called in {@link #isValid()}.
066: *
067: * @param validator the validator to remove
068: */
069: void removeValidator(Validator validator);
070:
071: /** List all validators currently registered for the object. If no
072: * validators are registered, returns <code>null</code>.
073: *
074: * @return collection of validators or <code>null</code>
075: */
076: public Collection getValidators();
077:
078: /** Tests the current value of the object against all registered
079: * validators. The registered validators are iterated and for each the
080: * {@link Validator#validate(Object)} method is called. If any validator
081: * throws the {@link Validator.InvalidValueException} this method
082: * returns <code>false</code>.
083: *
084: * @return <code>true</code> if the registered validators concur that
085: * the value is valid, <code>false</code> otherwise
086: */
087: public boolean isValid();
088:
089: /** Checks the validity of the validatable. If the validatable is valid
090: * this method should do nothing, and if it's not valid, it should throw
091: * <code>Validator.InvalidValueException</code>
092: *
093: * @throws Validator.InvalidValueException if the value is not valid
094: */
095: public void validate() throws Validator.InvalidValueException;
096:
097: /** Does the validabtable object accept invalid values. The default is true. */
098: public boolean isInvalidAllowed();
099:
100: /** Should the validabtable object accept invalid values. Supporting
101: * this configuration possibility is optional. By default invalid values are
102: * alloved.
103: */
104: public void setInvalidAllowed(boolean invalidValueAllowed)
105: throws UnsupportedOperationException;
106:
107: }
|