- Revision
- 744
- Author
- mauro
- Date
- 2008-06-19 11:30:45 -0500 (Thu, 19 Jun 2008)
Log Message
WAFFLE-89: Moved enum conversion to EnumValueConverter.
Modified Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/DelegatingTypeConverter.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlValueConverterFinder.java
Added Paths
Diff
Added: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/EnumValueConverter.java (0 => 744)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/EnumValueConverter.java (rev 0) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/EnumValueConverter.java 2008-06-19 16:30:45 UTC (rev 744) @@ -0,0 +1,35 @@ +/* + * Copyright (c) terms as published in http://waffle.codehaus.org/license.html + */ +package org.codehaus.waffle.bind.converters; + +import java.lang.reflect.Type; + +import org.codehaus.waffle.bind.ValueConverter; + +/** + * <code>ValueConverter</code> that converts Enum values. + * + * @author Michael Ward + * @author Mauro Talevi + */ +public class EnumValueConverter implements ValueConverter { + + private static final String EMPTY = ""; + + public boolean accept(Type type) { + if (type instanceof Class ){ + return ((Class<?>) type).isEnum(); + } + return false; + } + + @SuppressWarnings( { "unchecked" }) + public Object convertValue(String propertyName, String value, Type type) { + if (EMPTY.equals(value)) { + return null; + } + return Enum.valueOf((Class) type, value); + } + +}
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/DelegatingTypeConverter.java (743 => 744)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/DelegatingTypeConverter.java 2008-06-19 16:17:34 UTC (rev 743) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/DelegatingTypeConverter.java 2008-06-19 16:30:45 UTC (rev 744) @@ -16,15 +16,14 @@ import org.codehaus.waffle.monitor.SilentMonitor; /** - * An implementation of Ognl's <code>TypeConverter</code> which handles Java 5 enums and will delegate to custom + * An implementation of Ognl's <code>TypeConverter</code> which delegates to * <code>ValueConverter</code>'s registered per application and retrieved via the the - * <code>ValueConverterFinder</code>. + * <code>ValueConverterFinder</code>. * * @author Michael Ward * @author Mauro Talevi */ public class DelegatingTypeConverter implements TypeConverter { - private static final String EMPTY = ""; private final ValueConverterFinder valueConverterFinder; private final BindMonitor bindMonitor; @@ -74,17 +73,10 @@ * @param propertyName property name being set * @param value value to be converted * @param type Type to which value is converted - * @return Converted value Object for type or the unconvertered value if type is not an enum or no converter found + * @return Converted value Object for type or the unconvertered value if no converter found */ @SuppressWarnings( { "unchecked" }) public Object convertValue(String propertyName, String value, Type type) { - if (type instanceof Class && ((Class) type).isEnum()) { - if (EMPTY.equals(value)) { - return null; - } - return Enum.valueOf((Class) type, value); - } - ValueConverter converter = valueConverterFinder.findConverter(type); if (converter != null) {
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlValueConverterFinder.java (743 => 744)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlValueConverterFinder.java 2008-06-19 16:17:34 UTC (rev 743) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlValueConverterFinder.java 2008-06-19 16:30:45 UTC (rev 744) @@ -13,6 +13,7 @@ import org.codehaus.waffle.bind.ValueConverter; import org.codehaus.waffle.bind.ValueConverterFinder; +import org.codehaus.waffle.bind.converters.EnumValueConverter; /** * <p> @@ -29,7 +30,8 @@ */ public class OgnlValueConverterFinder implements ValueConverterFinder { - private static final ValueConverter OGNL_VALUE_CONVERTER = new OgnlValueConverter(); + private static final List<ValueConverter> DEFAULT_CONVERTERS = asList(new EnumValueConverter(), new OgnlValueConverter()); + private final Map<Type, ValueConverter> cache = new HashMap<Type, ValueConverter>(); private final List<ValueConverter> converters; @@ -41,9 +43,9 @@ this.converters = new ArrayList<ValueConverter>(); if (converters != null) { this.converters.addAll(asList(converters)); - this.converters.add(OGNL_VALUE_CONVERTER); + this.converters.addAll(DEFAULT_CONVERTERS); } else { - this.converters.add(OGNL_VALUE_CONVERTER); + this.converters.addAll(DEFAULT_CONVERTERS); } }
To unsubscribe from this list please visit:
