craigmcc 00/11/16 14:04:42 Modified: src/share/org/apache/tomcat/loader Tag: tomcat_32 AdaptiveClassLoader.java Log: Make getResource() and getResourceAsStream() consult the parent class loader (if there is one) before delegating to the system class loader. This more accurately reflects the behavior of Java2 (JDK 1.2 and up) class loader delegation. PR: BugRat Bug Report #395 Submitted by: Rickard Oberg <[EMAIL PROTECTED]> Revision Changes Path No revision No revision 1.9.2.2 +21 -5 jakarta-tomcat/src/share/org/apache/tomcat/loader/Attic/AdaptiveClassLoader.java Index: AdaptiveClassLoader.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/loader/Attic/AdaptiveClassLoader.java,v retrieving revision 1.9.2.1 retrieving revision 1.9.2.2 diff -u -r1.9.2.1 -r1.9.2.2 --- AdaptiveClassLoader.java 2000/07/29 18:20:53 1.9.2.1 +++ AdaptiveClassLoader.java 2000/11/16 22:04:42 1.9.2.2 @@ -118,7 +118,7 @@ * @author Martin Pool * @author Jim Heintz * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> - * @version $Revision: 1.9.2.1 $ $Date: 2000/07/29 18:20:53 $ + * @version $Revision: 1.9.2.2 $ $Date: 2000/11/16 22:04:42 $ * @see java.lang.ClassLoader */ public class AdaptiveClassLoader extends ClassLoader { @@ -661,8 +661,17 @@ public InputStream getResourceAsStream(String name) { // Try to load it from the system class if( debug > 0 ) log( "getResourceAsStream() " + name ); - InputStream s = getSystemResourceAsStream(name); + // First ask the parent class loader to fetch it, if possible + InputStream s = null; + if (parent != null) { + s = parent.getResourceAsStream(name); + if (s != null) + return (s); + } + // Second ask the system class loader to fetch it from the classpath + s = getSystemResourceAsStream(name); + // Third, check our own repositories if (s == null) { // Try to find it from every repository Enumeration repEnum = repository.elements(); @@ -755,8 +764,15 @@ */ public URL getResource(String name) { if( debug > 0 ) log( "getResource() " + name ); - // First ask the primordial class loader to fetch it from the classpath - URL u = getSystemResource(name); + // First ask the parent class loader to fetch it, if possible + URL u = null; + if (parent != null) { + u = parent.getResource(name); + if (u != null) + return (u); + } + // Second ask the system class loader to fetch it from the classpath + u = getSystemResource(name); if (u != null) { return u; } @@ -765,7 +781,7 @@ return null; } - // We got here so we have to look for the resource in our list of repository elements + // Third, check our own repositories Enumeration repEnum = repository.elements(); while (repEnum.hasMoreElements()) { ClassRepository cp = (ClassRepository) repEnum.nextElement();