1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.dbutils;
18
19 import java.lang.reflect.InvocationHandler;
20 import java.lang.reflect.Method;
21 import java.sql.ResultSetMetaData;
22
23
24
25
26
27 public class MockResultSetMetaData implements InvocationHandler {
28
29
30
31
32
33
34
35
36
37
38
39 public static ResultSetMetaData create(final String[] columnNames) {
40 return ProxyFactory.instance().createResultSetMetaData(
41 new MockResultSetMetaData(columnNames));
42 }
43 private String[] columnNames = null;
44
45 private String[] columnLabels = null;
46
47 public MockResultSetMetaData(final String[] columnNames) {
48 this.columnNames = columnNames;
49 this.columnLabels = new String[columnNames.length];
50
51 }
52
53 public MockResultSetMetaData(final String[] columnNames, final String[] columnLabels) {
54 this.columnNames = columnNames;
55 this.columnLabels = columnLabels;
56
57 }
58
59 @Override
60 public Object invoke(final Object proxy, final Method method, final Object[] args)
61 throws Throwable {
62
63 final String methodName = method.getName();
64
65 if (methodName.equals("getColumnCount")) {
66 return Integer.valueOf(this.columnNames.length);
67
68 }
69 if (
70 methodName.equals("getColumnName")) {
71
72 final int col = ((Integer) args[0]).intValue() - 1;
73 return this.columnNames[col];
74
75 }
76 if (
77 methodName.equals("getColumnLabel")) {
78
79 final int col = ((Integer) args[0]).intValue() - 1;
80 return this.columnLabels[col];
81
82 }
83 if (methodName.equals("hashCode")) {
84 return Integer.valueOf(System.identityHashCode(proxy));
85
86 }
87 if (methodName.equals("toString")) {
88 return "MockResultSetMetaData " + System.identityHashCode(proxy);
89
90 }
91 if (methodName.equals("equals")) {
92 return Boolean.valueOf(proxy == args[0]);
93
94 }
95 throw new UnsupportedOperationException("Unsupported method: " + methodName);
96 }
97 }