View Javadoc

1   /*
2    * Copyright 2004-2009 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.springmodules.validation.bean.conf;
18  
19  import org.springframework.validation.Validator;
20  import org.springmodules.validation.bean.rule.ValidationRule;
21  
22  /**
23   * Holds the various validatoin rules of a bean. This configuration is made out of the following configuration rules:
24   * <ul>
25   * <li>
26   * <code>Global Rules</code> - Rules that are associated with the bean itself. Validation error of this rule will
27   * be associated with the bean as well (see {@link org.springframework.validation.Errors#getGlobalError()}).
28   * </li>
29   * <li>
30   * <code>Property Rules</code> - Rules that are associated with a specific property of the bean. Validation error
31   * of this rule will be associated with the property as well
32   * (see {@link org.springframework.validation.Errors#getFieldError(String)}). Note that the condition of these
33   * rules however sould still be applied on the bean itself.
34   * </li>
35   * <li>
36   * <code>Custom Validator</code> - This is not a validation rule per se, but a custom validator that can be
37   * associated with the bean. This enables associating already exsiting or perhaps very complex validators with
38   * the bean.
39   * </li>
40   * <li>
41   * <code>Required Validatable Properties</code> - These are all the bean properties that need to be valid on their
42   * own in order for the bean itself to be valid. A simple example can be a collection property, where in order
43   * for the bean to be valid, all elements in the collection need to be valid as well.
44   * </li>
45   * </ul>
46   *
47   * @author Uri Boness
48   */
49  public interface BeanValidationConfiguration {
50  
51      /**
52       * Returns the global validation rules for the bean. This method never returns <code>null</code>. If no global rule
53       * is defined, an empty array is returned.
54       *
55       * @return The global validation rules for the bean.
56       */
57      ValidationRule[] getGlobalRules();
58  
59      /**
60       * Returns the property validation rules for the bean that are associated with the given property name. This method
61       * never returns <code>null</code>. If no rule is associated with the given property, an empty array is returned.
62       *
63       * @param propertyName The name of the bean property.
64       * @return The property validation rules for the bean.
65       */
66      ValidationRule[] getPropertyRules(String propertyName);
67  
68      /**
69       * Returns a list of all properties that are associated with validation rules.
70       *
71       * @return A list of all properties that are associated with validation rules.
72       */
73      String[] getValidatedProperties();
74  
75      /**
76       * Returns the custom validator associated with this configuration, <code>null</code> if no custom validator
77       * is associated.
78       *
79       * @return The customer validator associated with this configuration.
80       */
81      Validator getCustomValidator();
82  
83      /**
84       * Returns the configured cascade validations.
85       *
86       * @return The configured cascade validations.
87       */
88      CascadeValidation[] getCascadeValidations();
89  
90  }