All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zeroturnaround.javarebel.integration.catalina.WebappLoaderCBP Maven / Gradle / Ivy

The newest version!
package org.zeroturnaround.javarebel.integration.catalina;

import org.zeroturnaround.bundled.javassist.CannotCompileException;
import org.zeroturnaround.bundled.javassist.ClassPool;
import org.zeroturnaround.bundled.javassist.CtClass;
import org.zeroturnaround.bundled.javassist.CtMethod;
import org.zeroturnaround.bundled.javassist.NotFoundException;
import org.zeroturnaround.bundled.javassist.expr.ExprEditor;
import org.zeroturnaround.bundled.javassist.expr.MethodCall;
import org.zeroturnaround.javarebel.integration.support.JavassistClassBytecodeProcessor;

/**
 * Transforms org.apache.catalina.loader.WebappLoader.
 * 

* ServletContext.getRealPath() invocation is made transparent * so it receives a path not altered by JavaRebel. *

*

* Used for Tomcat, Glassfish and JBoss. * * @author Rein Raudjärv */ public class WebappLoaderCBP extends JavassistClassBytecodeProcessor { public void process(ClassPool cp, ClassLoader cl, CtClass ctClass) throws Exception { CtMethod m = null; try { m = ctClass.getMethod("setRepositories", "()V"); m.instrument(new ExprEditor() { public void edit(MethodCall m) throws CannotCompileException { if (m.getClassName().equals("javax.servlet.ServletContext") && m.getMethodName().equals("getRealPath")) m.replace("{" + " org.zeroturnaround.javarebel.ServletIntegration integration = org.zeroturnaround.javarebel.ServletIntegrationFactory.getInstance();" + " $_ = integration.getTransparentRealPath((org.zeroturnaround.javarebel.RebelServletContext) $0, $1);" + "}"); } }); } catch (NotFoundException e) { } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy