001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.binding.validation; 017 018 import org.springframework.binding.value.PropertyChangePublisher; 019 020 /** 021 * Adds the propertyChange and parent-child aspect to the 022 * {@link ValidationResults} interface. Listeners can be registered on 023 * validation changes of a specific property or on all changes. Additionally a 024 * validationResultsModel has to be aware of its parent-child relationships to 025 * forward these changes in its ValidationResults. 026 * 027 * @author Oliver Hutchison 028 */ 029 public interface ValidationResultsModel extends ValidationResults, PropertyChangePublisher { 030 031 /** The name of the bound property <em>hasErrors</em>. */ 032 String HAS_ERRORS_PROPERTY = "hasErrors"; 033 034 /** The name of the bound property <em>hasWarnings</em>. */ 035 String HAS_WARNINGS_PROPERTY = "hasWarnings"; 036 037 /** The name of the bound property <em>hasInfos</em>. */ 038 String HAS_INFO_PROPERTY = "hasInfo"; 039 040 /** 041 * Adds a listener that will be notified when there is any change to the set 042 * of validation messages. 043 */ 044 void addValidationListener(ValidationListener listener); 045 046 /** 047 * Removes the provided validation listener. 048 */ 049 void removeValidationListener(ValidationListener listener); 050 051 /** 052 * Adds a listener that will be notified when there is any change to the set 053 * validation messages for the specified property. 054 */ 055 void addValidationListener(String propertyName, ValidationListener listener); 056 057 /** 058 * Removes the provided validation listener. 059 */ 060 void removeValidationListener(String propertyName, ValidationListener listener); 061 062 /** 063 * Add a validationResultsModel as a child to this one. Results originating 064 * from child models have to be taken into account by the parent. 065 * 066 * @param validationResultsModel 067 */ 068 void add(ValidationResultsModel validationResultsModel); 069 070 /** 071 * Remove the given validationResultsModel from the list of children. 072 * 073 * @param validationResultsModel 074 */ 075 void remove(ValidationResultsModel validationResultsModel); 076 }