package org.hotswap.agent.util.classloader; import java.security.ProtectionDomain; /** * Add agent classloader plugin classes to the application classloader. * <p/> * This is necessary to allow direct call of app classes (typically library classes like Spring and Hibernate). * It is not possible to call class in child classloader from parent classloader. Hence this patch redefines * necessary classes in child classloader itself directly. * * @author Jiri Bubnik */ public interface ClassLoaderPatcher { /** * Check if the classloader can be patched. * Typically skip synthetic classloaders. * * @param classLoader classloader to check * @return if true, call patch() */ boolean isPatchAvailable(ClassLoader classLoader); /** * Patch the classloader. * * @param classLoaderFrom classloader to load classes from * @param path path to copy * @param classLoaderTo classloader to copy classes to * @param protectionDomain required protection in target classloader */ void patch(ClassLoader classLoaderFrom, String path, ClassLoader classLoaderTo, ProtectionDomain protectionDomain); }