1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.pool2.proxy;
18
19 import java.lang.reflect.Proxy;
20 import java.util.Arrays;
21
22 import org.apache.commons.pool2.UsageTracking;
23
24
25
26
27
28
29
30
31 public class JdkProxySource<T> implements ProxySource<T> {
32
33 private final ClassLoader classLoader;
34 private final Class<?>[] interfaces;
35
36
37
38
39
40
41
42 public JdkProxySource(final ClassLoader classLoader, final Class<?>[] interfaces) {
43 this.classLoader = classLoader;
44
45 this.interfaces = Arrays.copyOf(interfaces, interfaces.length);
46 }
47
48 @SuppressWarnings("unchecked")
49 @Override
50 public T createProxy(final T pooledObject, final UsageTracking<T> usageTracking) {
51 return (T) Proxy.newProxyInstance(classLoader, interfaces,
52 new JdkProxyHandler<>(pooledObject, usageTracking));
53 }
54
55 @SuppressWarnings("unchecked")
56 @Override
57 public T resolveProxy(final T proxy) {
58 return ((JdkProxyHandler<T>) Proxy.getInvocationHandler(proxy)).disableProxy();
59 }
60
61
62
63
64 @Override
65 public String toString() {
66 final StringBuilder builder = new StringBuilder();
67 builder.append("JdkProxySource [classLoader=");
68 builder.append(classLoader);
69 builder.append(", interfaces=");
70 builder.append(Arrays.toString(interfaces));
71 builder.append("]");
72 return builder.toString();
73 }
74 }