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

org.zeroturnaround.javarebel.integration.log4j.cbp.Log4jCBP Maven / Gradle / Ivy

The newest version!
package org.zeroturnaround.javarebel.integration.log4j.cbp;

import org.zeroturnaround.bundled.javassist.ClassPool;
import org.zeroturnaround.bundled.javassist.CtClass;
import org.zeroturnaround.bundled.javassist.CtMethod;
import org.zeroturnaround.javarebel.integration.support.JavassistClassBytecodeProcessor;

/**
 * Log4jCBP
 * 
 * @author Richard Julien
 * @version 1.0
 */
public class Log4jCBP extends JavassistClassBytecodeProcessor {

    public void process(ClassPool classPool, ClassLoader classLoader, CtClass ctClass) throws Exception {
        //Inserting package to log
        classPool.importPackage("org.zeroturnaround.javarebel");
        classPool.importPackage("org.apache.log4j.helpers");
        
        //Inser after in resetConfiguration function
        CtMethod m = ctClass.getDeclaredMethod("resetConfiguration");
        m.insertAfter(
                "String override = OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_KEY, null);\n" +
                "if(override == null || \"false\".equalsIgnoreCase(override)) {" +
                    "String configurationOptionStr = OptionConverter.getSystemProperty(DEFAULT_CONFIGURATION_KEY, null);\n" +
                    "String configuratorClassName = OptionConverter.getSystemProperty( CONFIGURATOR_CLASS_KEY, null);\n" +
                    "java.net.URL url = null;\n" +
                    "if(configurationOptionStr == null) {\n" +
                        "url = Loader.getResource(DEFAULT_XML_CONFIGURATION_FILE);\n" +
                        "if(url == null) {\n" +
                            "url = Loader.getResource(DEFAULT_CONFIGURATION_FILE);\n" +
                        "}\n" +
                    "} else {\n" +
                        "try {\n" +
                            "url = new java.net.URL(configurationOptionStr);\n" +
                        "} catch (java.net.MalformedURLException ex) {\n" +
                            "url = Loader.getResource(configurationOptionStr);\n" +
                        "}\n" +
                    "}\n" +
                    "if(url != null) {" +
                        "try {" +
                            "OptionConverter.selectAndConfigure(url, configuratorClassName, getLoggerRepository());" +
                        "} catch (java.lang.NoClassDefFoundError e) {" +
                            "LoggerFactory.getInstance().echo(\"******* jRebel Log4j warn : \" + e);\n" +
                        "}" +
                    "}\n" +
                "}"
        );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy