Mega Code Archive

 
Categories / Java / Reflection
 

Context ClassLoader

/**************************************************************************************  * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved.                 *  * http://aspectwerkz.codehaus.org                                                    *  * ---------------------------------------------------------------------------------- *  * The software in this package is published under the terms of the LGPL license      *  * a copy of which has been included with this distribution in the license.txt file.  *  **************************************************************************************/ import java.io.InputStream; import java.net.URL; /**  * Utility methods dealing with the context class loader. Fail-over is provided to the default class loader.  *  * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>  */ public final class ContextClassLoader {     /**      * Loads a class starting from the given class loader (can be null, then use default class loader)      *      * @param loader      * @param name   of class to load      * @return      * @throws ClassNotFoundException      */     public static Class forName(final ClassLoader loader, final String name) throws ClassNotFoundException {         Class klass = null;         if (loader != null) {             klass = Class.forName(name, false, loader);         } else {             klass = Class.forName(name, false, ClassLoader.getSystemClassLoader());         }         return klass;     }     /**      * Loads a class from the context class loader or, if that fails, from the default class loader.      *      * @param name is the name of the class to load.      * @return a <code>Class</code> object.      * @throws ClassNotFoundException if the class was not found.      */     public static Class forName(final String name) throws ClassNotFoundException {         Class cls = null;         try {             cls = Class.forName(name, false, Thread.currentThread().getContextClassLoader());         } catch (Exception e) {             cls = Class.forName(name);         }         return cls;     }     /**      * Loads a resource from the context class loader or, if that fails, from the default class loader.      *      * @param name is the name of the resource to load.      * @return a <code>URL</code> object.      */     public static URL loadResource(final String name) {         try {             return Thread.currentThread().getContextClassLoader().getResource(name);         } catch (Exception e) {             return ClassLoader.class.getClassLoader().getResource(name);         }     } //    /** //     * Loads a resource from the context class loader or, if that fails, from the default class loader, as stream //     * //     * @param name is the name of the resource to load. //     * @return a <code>InputStream</code> object. //     */ //    public static InputStream getResourceAsStream(final String name) { //        InputStream stream = null; //        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); //        if (contextClassLoader != null) { //            stream = contextClassLoader.getResourceAsStream(name); //        } //        if (stream == null) { //            ClassLoader classLoader = ClassLoader.class.getClassLoader(); //            if (classLoader != null) { //                stream = classLoader.getResourceAsStream(name); //            } //        } //        return stream; //    }     /**      * Returns the context class loader.      *      * @return the context class loader      */     public static ClassLoader getLoader() {         ClassLoader loader = Thread.currentThread().getContextClassLoader();         if (loader == null) {             loader = ClassLoader.class.getClassLoader();         }         return loader;     } }