You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2009/11/08 01:48:19 UTC
svn commit: r833786 -
/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java
Author: adrianc
Date: Sun Nov 8 00:48:19 2009
New Revision: 833786
URL: http://svn.apache.org/viewvc?rev=833786&view=rev
Log:
Modified ObjectType.java to use the new Java object type conversion framework.
Since the new converters aren't finished, I set it up so conversions fall back on the old ObjectType.java conversion code when needed.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java?rev=833786&r1=833785&r2=833786&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java Sun Nov 8 00:48:19 2009
@@ -18,22 +18,32 @@
*******************************************************************************/
package org.ofbiz.base.util;
+import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Array;
import java.math.BigDecimal;
+import java.nio.Buffer;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
-import java.util.*;
-import java.nio.*;
-
-import org.w3c.dom.Node;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
import javolution.util.FastList;
import javolution.util.FastMap;
import javolution.util.FastSet;
+import org.ofbiz.base.conversion.ConversionException;
+import org.ofbiz.base.conversion.Converter;
+import org.ofbiz.base.conversion.Converters;
+import org.ofbiz.base.conversion.LocalizedConverter;
+import org.w3c.dom.Node;
+
/**
* Utilities for analyzing and converting Object types in Java
* Takes advantage of reflection
@@ -469,6 +479,7 @@
* @return the converted value
* @throws GeneralException
*/
+ @SuppressWarnings("unchecked")
public static Object simpleTypeConvert(Object obj, String type, String format, TimeZone timeZone, Locale locale, boolean noTypeFail) throws GeneralException {
if (obj == null) {
return null;
@@ -479,6 +490,39 @@
type = type.substring(0, genericsStart);
}
+ // ----- Try out new conversion code -----
+
+ Class<?> sourceClass = obj.getClass();
+ Class<?> targetClass = null;
+ try {
+ targetClass = loadClass(type);
+ } catch (ClassNotFoundException e) {
+ Debug.logError(e, module);
+ return obj;
+ }
+
+ Converter<Object,Object> converter = null;
+ try {
+ converter = (Converter<Object, Object>) Converters.getConverter(sourceClass, targetClass);
+ } catch (ClassNotFoundException e) {}
+ if (converter != null) {
+ try {
+ LocalizedConverter<Object, Object> localizedConverter = (LocalizedConverter) converter;
+ if (timeZone == null) {
+ timeZone = TimeZone.getDefault();
+ }
+ if (locale == null) {
+ locale = Locale.getDefault();
+ }
+ return localizedConverter.convert(obj, locale, timeZone, format);
+ } catch (Exception e) {}
+ try {
+ return converter.convert(obj);
+ } catch (ConversionException e) {}
+ }
+
+ // ---------------------------------------
+
if (obj.getClass().getName().equals(type)) {
return obj;
}