KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > validation > Validator


1 /*
2  * Copyright 2002-2007 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.validation;
18
19 /**
20  * A validator for application-specific objects.
21  *
22  * <p>This interface is totally divorced from any infrastructure
23  * or context; that is to say it is not coupled to validating
24  * only objects in the web tier, the data-access tier, or the
25  * whatever-tier. As such it is amenable to being used in any layer
26  * of an application, and supports the encapsulation of validation
27  * logic as first-class citizens in their own right.
28  *
29  * <p>Find below a simple but complete <code>Validator</code>
30  * implementation, which validates that the various {@link String}
31  * properties of a <code>UserLogin</code> instance are not empty
32  * (that is they are not <code>null</code> and do not consist
33  * wholly of whitespace), and that any password that is present is
34  * at least <code>'MINIMUM_PASSWORD_LENGTH'</code> characters in length.
35  *
36  * <pre class="code"> public class UserLoginValidator implements Validator {
37  *
38  * private static final int MINIMUM_PASSWORD_LENGTH = 6;
39  *
40  * public boolean supports(Class clazz) {
41  * return UserLogin.class.isAssignableFrom(clazz);
42  * }
43  *
44  * public void validate(Object target, Errors errors) {
45  * ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "field.required");
46  * ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required");
47  * UserLogin login = (UserLogin) target;
48  * if (login.getPassword() != null
49  * && login.getPassword().trim().length() < MINIMUM_PASSWORD_LENGTH) {
50  * errors.rejectValue("password", "field.min.length",
51  * new Object[]{Integer.valueOf(MINIMUM_PASSWORD_LENGTH)},
52  * "The password must be at least [" + MINIMUM_PASSWORD_LENGTH + "] characters in length.");
53  * }
54  * }
55  * }</pre>
56  *
57  * <p>See also the Spring reference manual for a fuller discussion of
58  * the <code>Validator</code> interface and it's role in a enterprise
59  * application.
60  *
61  * @author Rod Johnson
62  * @see Errors
63  * @see ValidationUtils
64  */

65 public interface Validator {
66     
67     /**
68      * Can this {@link Validator} {@link #validate(Object, Errors) validate}
69      * instances of the supplied <code>clazz</code>?
70      * <p>This method is <i>typically</i> implemented like so:
71      * <pre class="code">return Foo.class.isAssignableFrom(clazz);</pre>
72      * (Where <code>Foo</code> is the class (or superclass) of the actual
73      * object instance that is to be {@link #validate(Object, Errors) validated}.)
74      * @param clazz the {@link Class} that this {@link Validator} is
75      * being asked if it can {@link #validate(Object, Errors) validate}
76      * @return <code>true</code> if this {@link Validator} can indeed
77      * {@link #validate(Object, Errors) validate} instances of the
78      * supplied <code>clazz</code>
79      */

80     boolean supports(Class JavaDoc clazz);
81     
82     /**
83      * Validate the supplied <code>target</code> object, which must be
84      * of a {@link Class} for which the {@link #supports(Class)} method
85      * typically has (or would) return <code>true</code>.
86      * <p>The supplied {@link Errors errors} instance can be used to report
87      * any resulting validation errors.
88      * @param target the object that is to be validated (can be <code>null</code>)
89      * @param errors contextual state about the validation process (never <code>null</code>)
90      * @see ValidationUtils
91      */

92     void validate(Object JavaDoc target, Errors errors);
93
94 }
95
Popular Tags