svn commit: r910111 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r910111 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java

doogie-3
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() {