private static Object valueToArray(Class<?> arrayComponentType, Object value) throws Exception { if (value instanceof Array) { Array valueArray = (Array)value; int arraySize = valueArray.size(); Object newArray = java.lang.reflect.Array.newInstance(arrayComponentType, arraySize); for (int i = 0; i < ((Array)value).size(); i++) { Object element = valueArray.get(i); element = convertValueToType(arrayComponentType, element); java.lang.reflect.Array.set(newArray, i, element); } return newArray; } else if (value instanceof String) { // Parse the string into a comma-separated set of values (this works if it's just a single value) ... String strValue = (String)value; if (strValue.length() > 0) { String[] stringValues = strValue.split(","); Object newArray = java.lang.reflect.Array.newInstance(arrayComponentType, stringValues.length); for (int i = 0; i < stringValues.length; i++) { Object element = convertValueToType(arrayComponentType, stringValues[i]); java.lang.reflect.Array.set(newArray, i, element); } return newArray; } } // Otherwise, just initialize it to an empty array ... return java.lang.reflect.Array.newInstance(arrayComponentType, 0); }
private static Object valueToArray(Class<?> arrayComponentType, Object value) throws Exception { if (value instanceof Array) { Array valueArray = (Array)value; int arraySize = valueArray.size(); Object newArray = java.lang.reflect.Array.newInstance(arrayComponentType, arraySize); for (int i = 0; i < ((Array)value).size(); i++) { Object element = valueArray.get(i); element = convertValueToType(arrayComponentType, element); java.lang.reflect.Array.set(newArray, i, element); } return newArray; } else if (value instanceof String) { // Parse the string into a comma-separated set of values (this works if it's just a single value) ... String strValue = (String)value; if (strValue.length() > 0) { String[] stringValues = strValue.split(","); Object newArray = java.lang.reflect.Array.newInstance(arrayComponentType, stringValues.length); for (int i = 0; i < stringValues.length; i++) { Object element = convertValueToType(arrayComponentType, stringValues[i]); java.lang.reflect.Array.set(newArray, i, element); } return newArray; } } // Otherwise, just initialize it to an empty array ... return java.lang.reflect.Array.newInstance(arrayComponentType, 0); }
protected void assertEquals( Array array1, Array array2 ) { assertTrue(array1 != array2); Assert.assertEquals(array1, array2); for (int i = 0; i != array1.size(); ++i) { Object value1 = array1.get(i); Object value2 = array2.get(i); Assert.assertEquals(value1, value2); if (value2 instanceof Array) { assertTrue(value1 != value2); assertEquals((Array) value1, (Array) value2); } else if (value2 instanceof Document) { assertTrue(value1 != value2); assertEquals((Document)value1, (Document)value2); } else { // The values can actually be the same instances since they're immutable ... } } } }