Skip to content

Commit

Permalink
fix #357
Browse files Browse the repository at this point in the history
  • Loading branch information
skybber committed Jun 26, 2020
1 parent 9fcdae6 commit dc49878
Showing 1 changed file with 15 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@
package org.hotswap.agent.plugin.hibernate;

import org.hotswap.agent.annotation.OnClassLoadEvent;
import org.hotswap.agent.javassist.*;
import org.hotswap.agent.javassist.CannotCompileException;
import org.hotswap.agent.javassist.ClassPool;
import org.hotswap.agent.javassist.CtClass;
import org.hotswap.agent.javassist.CtConstructor;
import org.hotswap.agent.javassist.CtMethod;
import org.hotswap.agent.javassist.CtNewMethod;
import org.hotswap.agent.javassist.NotFoundException;
import org.hotswap.agent.javassist.bytecode.AccessFlag;
import org.hotswap.agent.logging.AgentLogger;
import org.hotswap.agent.plugin.hibernate.proxy.SessionFactoryProxy;
Expand Down Expand Up @@ -110,7 +116,7 @@ private static boolean checkHibernateEjb(ClassLoader classLoader) {
}
}

@OnClassLoadEvent(classNameRegexp = "org.hibernate.validator.internal.metadata.BeanMetaDataManager")
@OnClassLoadEvent(classNameRegexp = "(org.hibernate.validator.internal.metadata.BeanMetaDataManager)|(org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl)")
public static void beanMetaDataManagerRegisterVariable(CtClass ctClass) throws CannotCompileException {
StringBuilder src = new StringBuilder("{");
src.append(PluginManagerInvoker.buildInitializePlugin(HibernatePlugin.class));
Expand All @@ -120,10 +126,13 @@ public static void beanMetaDataManagerRegisterVariable(CtClass ctClass) throws C
for (CtConstructor constructor : ctClass.getDeclaredConstructors()) {
constructor.insertAfter(src.toString());
}

ctClass.addMethod(CtNewMethod.make("public void __resetCache() {" +
" this.beanMetaDataCache.clear(); " +
"}", ctClass));
try {
ctClass.addMethod(CtNewMethod.make("public void __resetCache() {" +
" this.beanMetaDataCache.clear(); " +
"}", ctClass));
} catch (org.hotswap.agent.javassist.CannotCompileException e) {
LOGGER.trace("Field beanMetaDataCache not found on " + ctClass.getName() + ". Is Ok for BeanMetaDataManager interface.", e);
}

LOGGER.debug("org.hibernate.validator.internal.metadata.BeanMetaDataManager - added method __resetCache().");
}
Expand Down

0 comments on commit dc49878

Please sign in to comment.