Skip to content

Commit

Permalink
#232 - do not know why Spring 4.2.6 AND 4.3.0 does not work, probably…
Browse files Browse the repository at this point in the history
… cglib version and cache problem. Proxy of class without default constructor NOT supported for theses versions.
  • Loading branch information
Jiří Bubník committed May 16, 2018
1 parent d8558fd commit a55c476
Showing 1 changed file with 32 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.hotswap.agent.javassist.*;
import org.hotswap.agent.logging.AgentLogger;
import org.springframework.core.SpringVersion;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
Expand Down Expand Up @@ -77,28 +78,29 @@ public static Object createProxy(Object beanFactry, Object bean, Class<?>[] para
}

private Object create(Object beanFactry, Object bean, Class<?>[] paramClasses, Object[] paramValues) {
Object proxyBean = null;
if (beanProxies.containsKey(bean)) {
proxyBean = beanProxies.get(bean);
} else {
synchronized (beanProxies) {
if (beanProxies.containsKey(bean)) {
proxyBean = bean;
} else {
proxyBean = doCreate(beanFactry, bean, paramClasses, paramValues);
}
beanProxies.put(bean, proxyBean);
}
}

// in case of HA proxy set the target. It might be cleared by clearProxies
// but the underlying bean did not change. We need this to resolve target bean
// in org.hotswap.agent.plugin.spring.getbean.DetachableBeanHolder.getBean()
if (proxyBean instanceof SpringHotswapAgentProxy) {
((SpringHotswapAgentProxy) proxyBean).$$ha$setTarget(bean);
}

return proxyBean;
return doCreate(beanFactry, bean, paramClasses, paramValues);
// Object proxyBean = null;
// if (beanProxies.containsKey(bean)) {
// proxyBean = beanProxies.get(bean);
// } else {
// synchronized (beanProxies) {
// if (beanProxies.containsKey(bean)) {
// proxyBean = bean;
// } else {
// proxyBean = doCreate(beanFactry, bean, paramClasses, paramValues);
// }
// beanProxies.put(bean, proxyBean);
// }
// }
//
// // in case of HA proxy set the target. It might be cleared by clearProxies
// // but the underlying bean did not change. We need this to resolve target bean
// // in org.hotswap.agent.plugin.spring.getbean.DetachableBeanHolder.getBean()
// if (proxyBean instanceof SpringHotswapAgentProxy) {
// ((SpringHotswapAgentProxy) proxyBean).$$ha$setTarget(bean);
// }
//
// return proxyBean;
}

private Object doCreate(Object beanFactry, Object bean, Class<?>[] paramClasses, Object[] paramValues) {
Expand Down Expand Up @@ -211,6 +213,12 @@ private String tryObjenesisProxyCreation(ClassPool cp) {
return "";
}

// do not know why 4.2.6 AND 4.3.0 does not work, probably cglib version and cache problem
if (SpringVersion.getVersion().startsWith("4.2.6") ||
SpringVersion.getVersion().startsWith("4.3.0")) {
return "";
}

return " org.springframework.objenesis.SpringObjenesis objenesis = new org.springframework.objenesis.SpringObjenesis();\n" +
" if (objenesis.isWorthTrying()) {\n" +
// " try {\n" +
Expand Down Expand Up @@ -297,4 +305,6 @@ private ClassPool getCp(ClassLoader loader) {
cp.appendClassPath(new LoaderClassPath(loader));
return cp;
}


}

0 comments on commit a55c476

Please sign in to comment.