View Javadoc
1 /* Copyright (c) 2000-2003, jMock.org. See bundled LICENSE.txt */ 2 package org.jmock.dynamic; 3 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Proxy; 6 import java.util.ArrayList; 7 import java.util.List; 8 9 public class DynamicUtil { 10 public static Object[] asObjectArray(Object primitiveArray) { 11 12 if (primitiveArray instanceof Object[]) { 13 return (Object[]) primitiveArray; 14 } 15 16 List result = new ArrayList(); 17 18 if (primitiveArray instanceof boolean[]) { 19 boolean[] booleanArray = (boolean[]) primitiveArray; 20 21 for (int i = 0; i < booleanArray.length; i++) { 22 result.add(new Boolean(booleanArray[i])); 23 } 24 } else if (primitiveArray instanceof char[]) { 25 char[] charArray = (char[]) primitiveArray; 26 27 for (int i = 0; i < charArray.length; i++) { 28 result.add(new Character(charArray[i])); 29 } 30 } else if (primitiveArray instanceof byte[]) { 31 byte[] byteArray = (byte[]) primitiveArray; 32 33 for (int i = 0; i < byteArray.length; i++) { 34 result.add(new Byte(byteArray[i])); 35 } 36 37 } else if (primitiveArray instanceof short[]) { 38 short[] shortArray = (short[]) primitiveArray; 39 40 for (int i = 0; i < shortArray.length; i++) { 41 result.add(new Short(shortArray[i])); 42 } 43 } else if (primitiveArray instanceof int[]) { 44 int[] intArray = (int[]) primitiveArray; 45 46 for (int i = 0; i < intArray.length; i++) { 47 result.add(new Integer(intArray[i])); 48 } 49 } else if (primitiveArray instanceof long[]) { 50 long[] longArray = (long[]) primitiveArray; 51 52 for (int i = 0; i < longArray.length; i++) { 53 result.add(new Long(longArray[i])); 54 } 55 } else if (primitiveArray instanceof float[]) { 56 float[] floatArray = (float[]) primitiveArray; 57 58 for (int i = 0; i < floatArray.length; i++) { 59 result.add(new Float(floatArray[i])); 60 } 61 } else if (primitiveArray instanceof double[]) { 62 double[] doulbeArray = (double[]) primitiveArray; 63 64 for (int i = 0; i < doulbeArray.length; i++) { 65 result.add(new Float(doulbeArray[i])); 66 } 67 } else { 68 throw new RuntimeException("Unknown primitive data type for Object[] conversion " + primitiveArray.toString()); 69 } 70 71 return result.toArray(); 72 } 73 74 public static String proxyToString(Object element) { 75 if (Proxy.isProxyClass(element.getClass())) { 76 try { 77 Method mockNameMethod = CoreMock.class.getDeclaredMethod("getMockName", new Class[0]); 78 Object debugableResult = Proxy.getInvocationHandler(element).invoke(element, mockNameMethod, new Object[0]); 79 return debugableResult.toString(); 80 } catch (Throwable e) { 81 return element.getClass().getName(); 82 } 83 } 84 85 if (element.getClass().isArray()) { 86 StringBuffer buf = new StringBuffer(); 87 buf.append("["); 88 join(asObjectArray(element), buf); 89 buf.append("]"); 90 return buf.toString(); 91 } else { 92 return element.toString(); 93 } 94 } 95 96 public static String methodToString(String name, Object[] args) { 97 StringBuffer buf = new StringBuffer(); 98 99 buf.append(name); 100 buf.append("("); 101 join(args, buf); 102 buf.append(")"); 103 104 return buf.toString(); 105 } 106 107 public static void join(Object[] elements, StringBuffer buf) { 108 for (int i = 0; i < elements.length; i++) { 109 if (i > 0) { 110 buf.append(", "); 111 } 112 113 Object element = elements[i]; 114 115 if (null == element) { 116 buf.append("<null>"); 117 } else if (element.getClass().isArray()) { 118 buf.append("["); 119 join(asObjectArray(element), buf); 120 buf.append("]"); 121 } else { 122 buf.append("<"); 123 buf.append(proxyToString(element)); 124 buf.append(">"); 125 } 126 } 127 } 128 }

This page was automatically generated by Maven