Author: doogie
Date: Mon Mar 1 18:12:35 2010 New Revision: 917623 URL: http://svn.apache.org/viewvc?rev=917623&view=rev Log: BUG FIX: Actually implement proper simple array testing; the previously added ArrayObjectToList converter was never actually used. Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/CollectionConverters.java ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/CollectionConverters.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/CollectionConverters.java?rev=917623&r1=917622&r2=917623&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/CollectionConverters.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/CollectionConverters.java Mon Mar 1 18:12:35 2010 @@ -27,7 +27,6 @@ import javolution.util.FastList; import javolution.util.FastSet; -import org.ofbiz.base.util.ObjectType; import org.ofbiz.base.util.StringUtil; import org.ofbiz.base.util.UtilGenerics; import org.ofbiz.base.util.UtilValidate; @@ -40,7 +39,13 @@ } public <S, T> Converter<S, T> createConverter(Class<S> sourceClass, Class<T> targetClass) { - if (!sourceClass.isArray() || targetClass != List.class) { + if (!sourceClass.isArray()) { + return null; + } + if (targetClass != List.class) { + return null; + } + if (!(sourceClass.getComponentType() instanceof Object)) { return null; } return UtilGenerics.cast(new ArrayClassToList<S, T>(sourceClass, targetClass)); @@ -52,6 +57,10 @@ super(sourceClass, targetClass); } + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public T convert(S obj) throws ConversionException { List<Object> list = FastList.newInstance(); int len = Array.getLength(obj); @@ -69,7 +78,16 @@ @Override public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { - return sourceClass.isArray() && ObjectType.instanceOf(targetClass, this.getTargetClass()); + if (!sourceClass.isArray()) { + return false; + } + if (!List.class.isAssignableFrom(targetClass)) { + return false; + } + if (Object[].class.isAssignableFrom(sourceClass)) { + return true; + } + return false; } public List<T> convert(T[] obj) throws ConversionException { 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=917623&r1=917622&r2=917623&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 Mon Mar 1 18:12:35 2010 @@ -192,7 +192,10 @@ } public void testArray() throws GeneralException { - simpleTypeConvertTestSingleMulti("array->List", new Object[] {"one", "two", "three"}, new String[] {"List", "java.util.List"}, list); + simpleTypeConvertTestSingleMulti("Object[]->List", new Object[] {"one", "two", "three"}, new String[] {"List", "java.util.List"}, list); + simpleTypeConvertTestSingleMulti("int[]->List", new int[] {1, 2, 3}, new String[] {"List", "java.util.List"}, list(1, 2, 3)); + simpleTypeConvertTestError("Object[]->error", new Object[] {"one", "two", "three"}, new String[] {"Map"}); + simpleTypeConvertTestError("int[]->error", new int[] {1, 2, 3}, new String[] {"java.util.ArrayList", "Map"}); } public void testString() throws GeneralException, Exception { |
Free forum by Nabble | Edit this page |