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