Author: doogie
Date: Sun Feb 14 22:41:52 2010
New Revision: 910111
URL:
http://svn.apache.org/viewvc?rev=910111&view=revLog:
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() {