Author: doogie
Date: Sun Feb 14 22:41:52 2010
New Revision: 910111

URL: http://svn.apache.org/viewvc?rev=910111&view=rev
Log:
StringToEnum conversions now go thru the creation system.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java

Modified: 
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java?rev=910111&r1=910110&r2=910111&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java 
(original)
+++ 
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java 
Sun Feb 14 22:41:52 2010
@@ -157,7 +157,25 @@
         }
     }
 
-    public static class StringToEnum extends AbstractConverter<String, Enum> {
+    public static class StringToEnumConverterCreator implements 
ConverterCreater, ConverterLoader {
+        public void loadConverters() {
+            Converters.registerCreater(this);
+        }
+
+        public <S, T> Converter<S, T> createConverter(Class<S> sourceClass, 
Class<T> targetClass) {
+            if (String.class == sourceClass && 
Enum.class.isAssignableFrom(targetClass)) {
+                return UtilGenerics.cast(new StringToEnum());
+            } else {
+                return null;
+            }
+        }
+
+        private <E extends Enum<E>> StringToEnum<E> 
createConverter(Class<Enum<E>> targetClass) {
+            return new StringToEnum<E>();
+        }
+    }
+
+    private static class StringToEnum<E extends Enum<E>> extends 
AbstractConverter<String, E> {
         public StringToEnum() {
             super(String.class, Enum.class);
         }
@@ -166,13 +184,12 @@
             return String.class.isAssignableFrom(sourceClass) && 
Enum.class.isAssignableFrom(targetClass);
         }
 
-        public Enum convert(String obj) throws ConversionException {
+        public E convert(String obj) throws ConversionException {
             throw new UnsupportedOperationException();
         }
 
-        @SuppressWarnings("unchecked")
-        public Enum convert(Class<? extends Enum> targetClass, String obj) 
throws ConversionException {
-            return Enum.valueOf(targetClass, obj);
+        public E convert(Class<? extends E> targetClass, String obj) throws 
ConversionException {
+            return Enum.valueOf(UtilGenerics.<Class<E>>cast(targetClass), obj);
         }
 
         public Class<? super Enum> getTargetClass() {


Reply via email to