View Javadoc

1   /*
2    * The SmartWeb Framework
3    * Copyright (C) 2004-2006
4    *
5    * This library is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU Lesser General Public
7    * License as published by the Free Software Foundation; either
8    * version 2.1 of the License, or (at your option) any later version.
9    *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public
16   * License along with this library; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18   *
19   * For further informations on the SmartWeb Framework please visit
20   *
21   *                        http://smartweb.sourceforge.net
22   */
23   
24  package net.smartlab.web.bean;
25  
26  import java.util.Locale;
27  
28  import net.smartlab.web.StringEnumeration;
29  
30  /**
31   * TODO documentation
32   * @author rlogiacco
33   */
34  public class StringEnumerationConverter extends Converter {
35  
36  	private final static String NAME = "decode";
37  
38  	private final static Class[] ARGUMENTS = new Class[] {String.class};
39  
40  	/**
41  	 * @see net.smartlab.web.bean.Converter#convert(java.lang.Class,
42  	 *      java.lang.Object, java.util.Locale)
43  	 */
44  	public Object convert(Class type, Object value, Locale locale) throws ConversionException {
45  		try {
46  			if (StringEnumeration.class.isAssignableFrom(type)) {
47  				return type.getMethod(NAME, ARGUMENTS).invoke(type.newInstance(), new Object[] {value});
48  			} else {
49  				return ((StringEnumeration)value).getCode();
50  			}
51  		} catch (Exception e) {
52  			throw new ConversionException("Invalid string enumeration " + value.toString(), e);
53  		}
54  	}
55  
56  }