From: Tim M. <ma...@us...> - 2003-05-06 00:08:53
|
Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic In directory sc8-pr-cvs1:/tmp/cvs-serv6309/core/com/mockobjects/dynamic Modified Files: Tag: DynamicMockExperiment DynamicUtil.java Log Message: Support or primitive array type error reporting in a readable format (e.g. not int[]@3456) Index: DynamicUtil.java =================================================================== RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/dynamic/Attic/DynamicUtil.java,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- DynamicUtil.java 5 May 2003 22:44:33 -0000 1.1.2.2 +++ DynamicUtil.java 6 May 2003 00:08:50 -0000 1.1.2.3 @@ -6,56 +6,125 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import java.util.*; +import java.util.List; + public class DynamicUtil { - + public static Object[] asObjectArray(Object primitiveArray) { + + if (primitiveArray instanceof Object[]) { + return (Object[])primitiveArray; + } + + List result = new ArrayList(); + + if (primitiveArray instanceof boolean[]) { + boolean[] booleanArray = (boolean[]) primitiveArray; + + for (int i = 0; i < booleanArray.length; i++) { + result.add(new Boolean(booleanArray[i])); + } + } else if (primitiveArray instanceof char[]) { + char[] charArray = (char[]) primitiveArray; + + for (int i = 0; i < charArray.length; i++) { + result.add(new Character(charArray[i])); + } + } else if (primitiveArray instanceof byte[]) { + byte[] byteArray = (byte[]) primitiveArray; + + for (int i = 0; i < byteArray.length; i++) { + result.add(new Byte(byteArray[i])); + } + + } else if (primitiveArray instanceof short[]) { + short[] shortArray = (short[]) primitiveArray; + + for (int i = 0; i < shortArray.length; i++) { + result.add(new Short(shortArray[i])); + } + } else if (primitiveArray instanceof int[]) { + int[] intArray = (int[]) primitiveArray; + + for (int i = 0; i < intArray.length; i++) { + result.add(new Integer(intArray[i])); + } + } else if (primitiveArray instanceof long[]) { + long[] longArray = (long[]) primitiveArray; + + for (int i = 0; i < longArray.length; i++) { + result.add(new Long(longArray[i])); + } + } else if (primitiveArray instanceof float[]) { + float[] floatArray = (float[]) primitiveArray; + + for (int i = 0; i < floatArray.length; i++) { + result.add(new Float(floatArray[i])); + } + } else if (primitiveArray instanceof double[]) { + double[] doulbeArray = (double[]) primitiveArray; + + for (int i = 0; i < doulbeArray.length; i++) { + result.add(new Float(doulbeArray[i])); + } + } else { + throw new RuntimeException("Unknown primitive data type for Object[] conversion " + primitiveArray.toString()); + } + + return result.toArray(); + } + //TODO rename to proxyToString public static String getProxyName(Object element) { - if(Proxy.isProxyClass(element.getClass())) { + if (Proxy.isProxyClass(element.getClass())) { try { Method mockNameMethod = Mock.class.getDeclaredMethod("getMockName", new Class[0]); - Object result = Proxy.getInvocationHandler(element).invoke(element, mockNameMethod, new Object[0]); - return result.toString(); + Object debugableResult = Proxy.getInvocationHandler(element).invoke(element, mockNameMethod, new Object[0]); + return debugableResult.toString(); } catch (Throwable e) { - return element.getClass().getName(); - } + return element.getClass().getName(); + } + } + + if (element.getClass().isArray()) { + StringBuffer buf = new StringBuffer(); + buf.append("["); + join(asObjectArray(element),buf); + buf.append("]"); + return buf.toString(); + } else { + return element.toString(); } - - //TODO put in primitive array print handling - return element.toString(); - } - public static String methodToString( String name, Object[] args ) { + public static String methodToString(String name, Object[] args) { StringBuffer buf = new StringBuffer(); - + buf.append(name); buf.append("("); - buf.append(DynamicUtil.join(args)); + join(args,buf); buf.append(")"); - - return buf.toString(); + + return buf.toString(); } - public static String join( Object[] elements ) { - StringBuffer buf = new StringBuffer(); - + public static void join(Object[] elements, StringBuffer buf) { for (int i = 0; i < elements.length; i++) { - if( i > 0 ) buf.append(", "); - + if (i > 0) { + buf.append(", "); + } + Object element = elements[i]; - //TODO put in primitive array print handling - if(element instanceof Object[]) { - buf.append( "[" ); - buf.append(join((Object[])element)); - buf.append( "]" ); + + if (element.getClass().isArray()) { + buf.append("["); + join(asObjectArray(element), buf); + buf.append("]"); } else { - buf.append( "<" ); - buf.append(DynamicUtil.getProxyName(element)); - buf.append( ">" ); + buf.append("<"); + buf.append(getProxyName(element)); + buf.append(">"); } } - return buf.toString(); } - - } |