aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/data/Validatable.java
blob: 9bbc4dbe64e4d7f6e15054eff63aec5eefd22c7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* *************************************************************************
 
                               IT Mill Toolkit 

               Development of Browser User Interfaces Made Easy

                    Copyright (C) 2000-2006 IT Mill Ltd
                     
   *************************************************************************

   This product is distributed under commercial license that can be found
   from the product package on license/license.txt. Use of this product might 
   require purchasing a commercial license from IT Mill Ltd. For guidelines 
   on usage, see license/licensing-guidelines.html

   *************************************************************************
   
   For more information, contact:
   
   IT Mill Ltd                           phone: +358 2 4802 7180
   Ruukinkatu 2-4                        fax:   +358 2 4802 7181
   20540, Turku                          email:  info@itmill.com
   Finland                               company www: www.itmill.com
   
   Primary source for information and releases: www.itmill.com

   ********************************************************************** */

package com.itmill.toolkit.data;

import java.util.Collection;

/** <p>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.</p>
 *
 * @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
     * <code>validate</code> method is no longer called in {@link #isValid()}.
     * 
     * @param validator the validator to remove
     */
    void removeValidator(Validator validator);
    
    /** List all validators currently registered for the object. If no
     * validators are registered, returns <code>null</code>.
     * 
     * @return collection of validators or <code>null</code>
     */
    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 <code>false</code>.
     * 
     * @return <code>true</code> if the registered validators concur that
     * the value is valid, <code>false</code> 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
     * <code>Validator.InvalidValueException</code>
     * 
     * @throws Validator.InvalidValueException if the value is not valid
     */
    public void validate()
    throws Validator.InvalidValueException;

	/** Does the validabtable object accept invalid values. The default is true. */
    public boolean isInvalidAllowed();

	/** Should the validabtable object accept invalid values. Supporting
	 * this configuration possibility is optional. By default invalid values are
	 * alloved.
	 */
    public void setInvalidAllowed(boolean invalidValueAllowed)
    throws UnsupportedOperationException;
    
}