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

org.zeroturnaround.javarebel.integration.IntegrationPlugin Maven / Gradle / Ivy

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


import org.zeroturnaround.javarebel.ClassResourceSource;
import org.zeroturnaround.javarebel.IntegrationFactory;
import org.zeroturnaround.javarebel.Plugin;
import org.zeroturnaround.javarebel.ReloaderFactory;
import org.zeroturnaround.javarebel.integration.classworlds.ClassRealmCBP;
import org.zeroturnaround.javarebel.integration.confluence.JarClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.eclipse301.Eclipse301DefaultClassLoaderClassBytecodeProcessor;
import org.zeroturnaround.javarebel.integration.elcommons.BeanInfoManagerElCommonsCBP;
import org.zeroturnaround.javarebel.integration.elcommons.BeanInfoManagerStandardLangCBP;
import org.zeroturnaround.javarebel.integration.equinox.EquinoxClassPathManagerClassBytecodeProcessor;
import org.zeroturnaround.javarebel.integration.equinox.EquinoxDefaultClassLoaderClassBytecodeProcessor;
import org.zeroturnaround.javarebel.integration.generic.FindClassClassBytecodeProcessor;
import org.zeroturnaround.javarebel.integration.glassfish.FelixContentClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.glassfish.FelixContentLoaderImplCBP;
import org.zeroturnaround.javarebel.integration.glassfish.GlassfishWebappClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.google.GaeCustomSecurityManagerCBP;
import org.zeroturnaround.javarebel.integration.google.GaeProxyPolicyCBP;
import org.zeroturnaround.javarebel.integration.google.RestrictedUrlClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.intellij.IntelliJClassLoaderClassBytecodeProcessor;
import org.zeroturnaround.javarebel.integration.javaxel.BeanELResolverCBP;
import org.zeroturnaround.javarebel.integration.javaxel.BeanELResolverElCommonsCBP;
import org.zeroturnaround.javarebel.integration.jboss4.RepositoryClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.jboss4.UnifiedLoaderRepository3CBP;
import org.zeroturnaround.javarebel.integration.jboss5.BaseClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.jboss5.BaseClassLoaderDomainCBP;
import org.zeroturnaround.javarebel.integration.netbeans.NetbeansJarClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.netbeans.ProxyClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.oc4j.EJBPackageDeploymentCBP;
import org.zeroturnaround.javarebel.integration.oc4j.PolicyClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.resin.LineConfigExceptionCBP;
import org.zeroturnaround.javarebel.integration.resin.ResinCBP;
import org.zeroturnaround.javarebel.integration.resin.ResinDeployControllerConfigCBP;
import org.zeroturnaround.javarebel.integration.resin.ResinDynamicClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.resin.ResinWatchdogCBP;
import org.zeroturnaround.javarebel.integration.resin.WatchdogProcessCBP;
import org.zeroturnaround.javarebel.integration.sap.SapResourceLoaderCBP;
import org.zeroturnaround.javarebel.integration.sap.SapResourceMultiParentClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.sap.SapSystemURLStreamHandlerFactoryCBP;
import org.zeroturnaround.javarebel.integration.streambase.StreamBaseJarClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.tomcat.WebappClassLoaderClassBytecodeProcessor;
import org.zeroturnaround.javarebel.integration.weblogic.BaseLoggerCBP;
import org.zeroturnaround.javarebel.integration.weblogic.ChangeAwareClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.weblogic.CompilerForJDTCBP;
import org.zeroturnaround.javarebel.integration.weblogic.DebugLoggerCBP;
import org.zeroturnaround.javarebel.integration.weblogic.EJBJarCBP;
import org.zeroturnaround.javarebel.integration.weblogic.EarCBP;
import org.zeroturnaround.javarebel.integration.weblogic.GenericClassLoaderCBP;
import org.zeroturnaround.javarebel.integration.websphere.CompoundClassLoaderClassBytecodeProcessor;

/**
 * @author ekabanov
 * @see http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tutorial2.html
 */
public class IntegrationPlugin implements Plugin {
  public void preinit() {    
    ReloaderFactory
    .getInstance()
    .addClassReloadListener(new IntegrationClassEventListener());

    String[] standardIntegrationClassLoaders = new String[]{
        // TOMCAT
        "org.apache.catalina.loader.StandardClassLoader",
        // JETTY
        "org.mortbay.jetty.webapp.WebAppClassLoader",
        // GLASSFISH
        "com.sun.enterprise.loader.EJBClassLoader",
        // GWT
        "com.google.gwt.dev.shell.CompilingClassLoader",
        // Oracle 9.0.4
        "com.evermind.naming.ContextClassLoader",
        // IBM WAS 6.1				
        "com.ibm.ws.bootstrap.ExtClassLoader",
        // JONAS-4.10.3
        "org.objectweb.jonas_lib.loader.EjbJarClassLoader"
    };

    IntegrationFactory.getInstance().addIntegrationProcessor(
        standardIntegrationClassLoaders, 
        new FindClassClassBytecodeProcessor());

    // TOMCAT 5.5

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.apache.catalina.loader.WebappClassLoader", 
        new WebappClassLoaderClassBytecodeProcessor());
    
    // GLASSFISH 3-PRELUDE
    
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.glassfish.web.loader.WebappClassLoader", 
        new GlassfishWebappClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.apache.felix.framework.searchpolicy.ContentClassLoader", 
        new FelixContentClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.apache.felix.framework.searchpolicy.ContentLoaderImpl", 
        new FelixContentLoaderImplCBP());

    //	IBM WAS 6.1	

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.ibm.ws.classloader.CompoundClassLoader", 
        new CompoundClassLoaderClassBytecodeProcessor());

    // Equinox (and Eclipse)

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader", 
        new EquinoxDefaultClassLoaderClassBytecodeProcessor());     

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.eclipse.osgi.baseadaptor.loader.ClasspathManager", 
        new EquinoxClassPathManagerClassBytecodeProcessor()); 

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.eclipse.osgi.framework.internal.defaultadaptor.DefaultClassLoader", 
        new Eclipse301DefaultClassLoaderClassBytecodeProcessor());

    // JBOSS 4
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.jboss.mx.loading.RepositoryClassLoader", 
        new RepositoryClassLoaderCBP());

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.jboss.mx.loading.UnifiedLoaderRepository3", 
        new UnifiedLoaderRepository3CBP());    

    // JBOSS 5
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.jboss.classloader.spi.base.BaseClassLoader", 
        new BaseClassLoaderCBP());

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.jboss.classloader.spi.base.BaseClassLoaderDomain", 
        new BaseClassLoaderDomainCBP());

    /*
     * Oracle 10.1.3+
     * 
     * PolicyClassLoader is used: 10.1.3.3.0, 10.1.3.4.0
     * PolicyClassLoader is not used: 9.0.4, 10.1.2.0.2
     */
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "oracle.classloader.PolicyClassLoader", 
        new PolicyClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.evermind.server.ejb.EJBPackageDeployment", 
        new EJBPackageDeploymentCBP());

    // Weblogic

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "weblogic.utils.classloaders.GenericClassLoader", 
        new GenericClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "weblogic.utils.classloaders.ChangeAwareClassLoader", 
        new ChangeAwareClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "weblogic.application.io.Ear", 
        new EarCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "weblogic.ejb.spi.EJBJar", 
        new EJBJarCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "weblogic.ejb.container.ejbc.CompilerForJDT", 
        new CompilerForJDTCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.bea.logging.BaseLogger", 
        new BaseLoggerCBP());    
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "weblogic.diagnostics.debug.DebugLogger", 
        new DebugLoggerCBP());    

    // Caucho Resin (Tested on 3.0.27, 3.1.3 and 3.2.1)
    
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.caucho.server.resin.Resin",
        new ResinCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.caucho.loader.DynamicClassLoader",
        new ResinDynamicClassLoaderCBP());      // Resin 3.0.x (since Resin 3.1.x see ResinPatchHelper)
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.caucho.boot.ResinWatchdog",
        new ResinWatchdogCBP());                // Resin 3.1.0 - Resin 3.1.4
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.caucho.boot.WatchdogProcess",
        new WatchdogProcessCBP());              // Since Resin 3.1.5
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.caucho.server.deploy.DeployController",
        new ResinDeployControllerConfigCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.caucho.config.LineConfigException",
        new LineConfigExceptionCBP());
        
    // Google App Engine 1.x

       IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.google.appengine.tools.development.DevAppServerClassLoader", 
        new RestrictedUrlClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.google.appengine.tools.development.IsolatedAppClassLoader", 
        new RestrictedUrlClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.google.appengine.tools.development.IsolatedAppClassLoader$ProxyPolicy", 
        new GaeProxyPolicyCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager", 
        new GaeCustomSecurityManagerCBP());
    
    // SAP NetWeaver 7.0

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.sap.engine.frame.core.load.ResourceLoader",
        new SapResourceLoaderCBP());

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.sap.engine.services.deploy.server.ApplicationLoader",
        new SapResourceLoaderCBP());
    
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.sap.engine.system.SystemURLStreamHandlerFactory",
        new SapSystemURLStreamHandlerFactoryCBP());
    
    // SAP NetWeaver 7.1
    
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.sap.engine.boot.loader.ResourceMultiParentClassLoader",
        new SapResourceMultiParentClassLoaderCBP());    

    // IntelliJ IDEA

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.intellij.util.lang.UrlClassLoader", 
        new IntelliJClassLoaderClassBytecodeProcessor());

    // Atlassian Confluence
    IntegrationFactory.getInstance()
    .addIntegrationProcessor(
        "com.atlassian.plugin.loaders.classloading.JarClassLoader", 
        new JarClassLoaderCBP());

    // Classworlds
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.codehaus.plexus.classworlds.realm.ClassRealm",
        new ClassRealmCBP());

    // Netbeans
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.netbeans.JarClassLoader",
        new NetbeansJarClassLoaderCBP());
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.netbeans.ProxyClassLoader",
        new ProxyClassLoaderCBP());

    // commons-el
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.apache.taglibs.standard.lang.jstl.BeanInfoManager",
        new BeanInfoManagerStandardLangCBP());

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "org.apache.commons.el.BeanInfoManager",
        new BeanInfoManagerElCommonsCBP());

    // javax.el
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "javax.el.BeanELResolver",
        new BeanELResolverCBP());

    IntegrationFactory.getInstance().addIntegrationProcessor(
        "javax.el.BeanELResolver$BeanProperties",
        new BeanELResolverElCommonsCBP());
    
    // StreamBase
    IntegrationFactory.getInstance().addIntegrationProcessor(
        "com.streambase.sb.runtime.JarClassLoader",
        new StreamBaseJarClassLoaderCBP());
  }

  public boolean checkDependencies(ClassLoader cl, ClassResourceSource crs) {
    return false;
  }

  public String getDescription() {
    return null;
  }

  public String getId() {
    return null;
  }

  public String getName() {
    return null;
  }

  public String getAuthor() {
    return null;
  }

  public String getWebsite() {
    return null;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy