package mock;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.LoaderClassPath;
public class ModifyClass {
private static final String LINE_SEPARATOR = "\n";
private ModifyClass() {
}
public static void dynamicModifyClass() throws Exception {
ClassPool classPool = ClassPool.getDefault();
classPool.appendClassPath(new LoaderClassPath(Thread.currentThread().getContextClassLoader()));
optimizeDependencyManager(classPool);
}
private static void optimizeDependencyManager(ClassPool classPool) throws Exception {
String clsName = "org.apache.axis2.engine.DependencyManager";
CtClass ctClass = classPool.get(clsName);
CtMethod ctMethod = ctClass.getDeclaredMethod("initServiceObject");
ctMethod.setBody("{" + LINE_SEPARATOR + "if ($1 instanceof org.apache.axis2.service.Lifecycle) {"
+ LINE_SEPARATOR + " ((org.apache.axis2.service.Lifecycle)$1).init($2);" + LINE_SEPARATOR
+ " return;" + LINE_SEPARATOR + "}" + "}");
ctClass.toClass();
ctClass.detach();
}
}