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();
  
  
  

Reply via email to