1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.commons.spring.core.config;
18
19 import org.springframework.aop.SpringProxy;
20 import org.springframework.aop.framework.Advised;
21 import org.springframework.util.Assert;
22
23 import java.lang.reflect.Proxy;
24
25
26
27
28 final class ProxyUtils {
29
30 static boolean isJDKDynamicProxy(Class<?> beanClass) {
31 return Proxy.isProxyClass(beanClass);
32 }
33
34 static <T> Class<T> getFirstProxiedInterface(Class<?> proxyClass) {
35 int nonUserInterfaceCount = 0;
36 if (proxyClass.isAssignableFrom(SpringProxy.class)) {
37 ++nonUserInterfaceCount;
38 }
39 if (proxyClass.isAssignableFrom(Advised.class)) {
40 ++nonUserInterfaceCount;
41 }
42 Class[] proxyInterfaces = proxyClass.getInterfaces();
43 Class[] userInterfaces = new Class[proxyInterfaces.length - nonUserInterfaceCount];
44 System.arraycopy(proxyInterfaces, 0, userInterfaces, 0, userInterfaces.length);
45 Assert.notEmpty(userInterfaces, "JDK proxy must implement one or more interfaces");
46 return (Class<T>)userInterfaces[0];
47 }
48
49 }