001 // Copyright 2006-2007 Daniel Gredler 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package net.sf.beanform.validator; 016 017 import org.apache.tapestry.form.IFormComponent; 018 import org.apache.tapestry.form.ValidationMessages; 019 import org.apache.tapestry.form.validator.Max; 020 import org.apache.tapestry.valid.ValidatorException; 021 022 /** 023 * Subclass of the {@link Max} validator that doesn't barf all over the 024 * place if it's handed a string instead of a number. Apparently Tapestry 025 * normally does some automatic type conversions depending on a value's 026 * setter and getter, but our setters and getters are for generic objects. 027 * 028 * @author Daniel Gredler 029 */ 030 public class StringMax extends Max { 031 032 public final static String NAME = "smax"; 033 034 public StringMax() { 035 super(); 036 } 037 038 public StringMax( String initializer ) { 039 super( initializer ); 040 } 041 042 @Override 043 public void validate( IFormComponent field, ValidationMessages messages, Object object ) 044 throws ValidatorException { 045 if( object instanceof String ) { 046 object = Double.parseDouble( (String) object ); 047 } 048 super.validate( field, messages, object ); 049 } 050 051 public void setSmax( double smax ) { 052 super.setMax( smax ); 053 } 054 055 }