Author: adrianc
Date: Fri Mar 30 17:48:32 2012 New Revision: 1307551 URL: http://svn.apache.org/viewvc?rev=1307551&view=rev Log: Small code cleanup in ObjectType.simpleTypeConvert, added support for null target type (returns original object). Updated unit tests. Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.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=1307551&r1=1307550&r2=1307551&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 Fri Mar 30 17:48:32 2012 @@ -471,28 +471,12 @@ public class ObjectType { @SourceMonitored @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; - } - - int genericsStart = type.indexOf("<"); - if (genericsStart != -1) { - type = type.substring(0, genericsStart); + if (obj == null || type == null || "Object".equals(type) || "java.lang.Object".equals(type)) { + return obj; } - if ("PlainString".equals(type)) { return obj.toString(); } - Class<?> sourceClass = obj.getClass(); - if (sourceClass.getName().equals(type)) { - return obj; - } - if ("Object".equals(type) || "java.lang.Object".equals(type)) { - return obj; - } - if (obj instanceof String && UtilValidate.isEmpty(obj)) { - return null; - } if (obj instanceof Node) { Node node = (Node) obj; String nodeValue = node.getTextContent(); @@ -502,13 +486,24 @@ public class ObjectType { return simpleTypeConvert(nodeValue, type, format, timeZone, locale, noTypeFail); } } + int genericsStart = type.indexOf("<"); + if (genericsStart != -1) { + type = type.substring(0, genericsStart); + } + Class<?> sourceClass = obj.getClass(); Class<?> targetClass = null; try { targetClass = loadClass(type); } catch (ClassNotFoundException e) { throw new GeneralException("Conversion from " + sourceClass.getName() + " to " + type + " not currently supported", e); } - Converter<Object,Object> converter = null; + if (sourceClass.equals(targetClass)) { + return obj; + } + if (obj instanceof String && ((String) obj).length() == 0) { + return null; + } + Converter<Object, Object> converter = null; try { converter = (Converter<Object, Object>) Converters.getConverter(sourceClass, targetClass); } catch (ClassNotFoundException e) {} Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java?rev=1307551&r1=1307550&r2=1307551&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java Fri Mar 30 17:48:32 2012 @@ -94,7 +94,8 @@ public class ObjectTypeTests extends Gen public static void simpleTypeConvertTest(String label, Object toConvert, String type, Object wanted) throws GeneralException { basicTest(label, toConvert); - assertEquals(label + ":null", (Object) null, simpleTypeConvert(null, type, null, null, null, true)); + assertEquals(label + ":null target type", toConvert, simpleTypeConvert(toConvert, null, null, null, null, true)); + assertEquals(label + ":null source object", (Object) null, simpleTypeConvert(null, type, null, null, null, true)); assertEquals(label, wanted, simpleTypeConvert(toConvert, type, null, null, null, true)); if (toConvert instanceof String) { String str = (String) toConvert; @@ -208,7 +209,6 @@ public class ObjectTypeTests extends Gen simpleTypeConvertTest("String->String", "one", "String", "one"); simpleTypeConvertTest("String->String", "one", "java.lang.String", "one"); simpleTypeConvertTestSingleMulti("empty-String->anything", "", new String[] {"List", "Map"}, null); - simpleTypeConvertTestSingleMulti("empty-String->bad-class", "", new String[] {"no-class"}, null); simpleTypeConvertTestError("String->error", "one", new String[] {}); simpleTypeConvertTestMultiMulti("String->Boolean(true)", new String[] {"true", " true ", " TrUe"}, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.TRUE); simpleTypeConvertTestMultiMulti("String->Boolean(false)", new String[] {"false", " false ", " FaLsE"}, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.FALSE); |
Free forum by Nabble | Edit this page |