01: // Copyright 2006 The Apache Software Foundation
02: //
03: // Licensed under the Apache License, Version 2.0 (the "License");
04: // you may not use this file except in compliance with the License.
05: // You may obtain a copy of the License at
06: //
07: // http://www.apache.org/licenses/LICENSE-2.0
08: //
09: // Unless required by applicable law or agreed to in writing, software
10: // distributed under the License is distributed on an "AS IS" BASIS,
11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: // See the License for the specific language governing permissions and
13: // limitations under the License.
14:
15: package org.apache.tapestry.services;
16:
17: import java.util.Locale;
18:
19: import org.apache.tapestry.Field;
20: import org.apache.tapestry.FieldValidator;
21: import org.apache.tapestry.Validator;
22: import org.apache.tapestry.corelib.components.BeanEditForm;
23: import org.apache.tapestry.ioc.Messages;
24:
25: /**
26: * Used to create {@link FieldValidator}s for a particular {@link Field} component.
27: */
28: public interface FieldValidatorSource {
29: /**
30: * Creates the validator. The error message associated with the field validator usually comes
31: * from the {@link ValidationMessagesSource} (using the validator's
32: * {@link Validator#getMessageKey() message key}). However, if the container component of the
33: * field defines a message key <code><i>id</i>-<i>validator</i>
34: * (where id is the simple id of the field component, and validator is the validatorType), then that
35: * message is used instead. This allows you to override the message for a particular validation of a particular field.
36: *
37: * @param field
38: * the field for which a validator is to be created
39: * @param validatorType
40: * used to select the {@link Validator} that forms the core of the
41: * {@link FieldValidator}
42: * @param constraintValue
43: * a value used to configure the validator, or null if the validator is not
44: * configurarable
45: * @return the field validator for the field
46: */
47: FieldValidator createValidator(Field field, String validatorType,
48: String constraintValue);
49:
50: /**
51: * Full featured version of {@link #createValidator(Field, String, String)} used in situations
52: * where the container of the field is not necesarrilly the place to look for override messages,
53: * and the id of the field is not the key to use when checking. The {@link BeanEditForm} is an
54: * example of this.
55: *
56: * @param field
57: * the field for which a validator is to be created
58: * @param validatorType
59: * used to select the {@link Validator} that forms the core of the
60: * {@link FieldValidator}
61: * @param constraintValue
62: * a value used to configure the validator, or null if the validator is not
63: * configurable
64: * @param overrideId
65: * the base id used when searching for validator message overrides (this would
66: * normally be the field component's simple id)
67: * @param overrideMessages
68: * the message catalog to search for override messages (this would normally be the
69: * catalog for the container of the field component)
70: * @param locale
71: * locale used when retrieving default validation messages from the
72: * {@link ValidationMessagesSource}
73: * @return the field validator for the field
74: */
75: FieldValidator createValidator(Field field, String validatorType,
76: String constraintValue, String overrideId,
77: Messages overrideMessages, Locale locale);
78:
79: /**
80: * Creates a set of validators. The specification is a string used to identify and configure the
81: * individual validators. The specification is a comma-separated list of terms. Each term is a
82: * validator type name and an optional constraint value (seperated by an equals sign).
83: *
84: * @param field
85: * @param specification
86: * @return a composite field validator
87: */
88: FieldValidator createValidators(Field field, String specification);
89: }
|