nacho       01/06/17 11:09:19

  Modified:    src/share/org/apache/tomcat/util/compat
                        SimpleClassLoader.java Jdk12Support.java
                        Jdk11Compat.java
               src/share/org/apache/tomcat/modules/config
                        LoaderInterceptor11.java
               src/facade22/org/apache/tomcat/facade JspInterceptor.java
               src/share/org/apache/tomcat/util/depend
                        DependClassLoader.java
  Log:
  * Changed the classloader support to construct the right Classpath for
  trusted apps, was not adding the container Jars to the mix.
  
  Revision  Changes    Path
  1.4       +0 -1      
jakarta-tomcat/src/share/org/apache/tomcat/util/compat/SimpleClassLoader.java
  
  Index: SimpleClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/SimpleClassLoader.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SimpleClassLoader.java    2001/03/06 05:39:24     1.3
  +++ SimpleClassLoader.java    2001/06/17 18:09:13     1.4
  @@ -524,7 +524,6 @@
       }
   
       public URL[] getURLs() {
  -        //TODO:  Add custom implementation.
           return urls;
       }
   
  
  
  
  1.3       +14 -8     
jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk12Support.java
  
  Index: Jdk12Support.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk12Support.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Jdk12Support.java 2001/02/06 02:46:30     1.2
  +++ Jdk12Support.java 2001/06/17 18:09:13     1.3
  @@ -62,6 +62,7 @@
   import java.net.*;
   import java.util.*;
   import java.security.*;
  +import org.apache.tomcat.util.depend.*;
   /**
    *  
    */
  @@ -103,16 +104,21 @@
       public ClassLoader getContextClassLoader() {
        return Thread.currentThread().getContextClassLoader();
       }
  -
  -    public URL[] getURLs(ClassLoader cl){
  -        return ((URLClassLoader)cl).getURLs();
  -    }
  -    public URL[] getParentURLs(ClassLoader cl){
  -        URLClassLoader scl=(URLClassLoader)cl;
  -        return ((URLClassLoader)cl.getParent()).getURLs();
  +    
  +    public URL[] getURLs(ClassLoader cl,int depth){
  +        int c=0;
  +        do{
  +            while(! (cl instanceof URLClassLoader) && cl != null )
  +                cl=((DependClassLoader)cl).getParentLoader();
  +            if (cl==null) break;
  +            if (depth==c) return ((URLClassLoader)cl).getURLs();
  +            c++;
  +            cl=((URLClassLoader)cl).getParent();
  +        }while((cl!=null) && ( depth >= c ));
  +        return null;
       }
   
  -    // -------------------- Support -------------------- 
  +    // -------------------- Support --------------------
       static class PrivilegedProxy implements PrivilegedExceptionAction
       {
        Action action;
  
  
  
  1.5       +12 -6     
jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk11Compat.java
  
  Index: Jdk11Compat.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk11Compat.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Jdk11Compat.java  2001/02/10 08:12:42     1.4
  +++ Jdk11Compat.java  2001/06/17 18:09:14     1.5
  @@ -58,6 +58,7 @@
    */
   
   package org.apache.tomcat.util.compat;
  +import org.apache.tomcat.util.depend.*;
   
   import java.net.URL;
   
  @@ -110,13 +111,18 @@
        return null;
       }
   
  -    public URL[] getURLs(ClassLoader cl){
  -        return ((SimpleClassLoader)cl).getURLs();
  +    public URL[] getURLs(ClassLoader cl,int depth){
  +        int c=0;
  +        do{
  +            while(! (cl instanceof SimpleClassLoader))
  +                cl=((DependClassLoader)cl).getParent();
  +            if (depth==c) return ((SimpleClassLoader)cl).getURLs();
  +            c++;
  +            cl=((SimpleClassLoader)cl).getParentLoader();
  +        }while((cl!=null) && ( depth < c ));
  +        return null;
       }
  -    public URL[] getParentURLs(ClassLoader cl){
  -        SimpleClassLoader scl=(SimpleClassLoader)cl;
  -        return ((SimpleClassLoader)scl.getParentLoader()).getURLs();
  -    }
  +
       // Other methods, as needed
           
   
  
  
  
  1.12      +6 -6      
jakarta-tomcat/src/share/org/apache/tomcat/modules/config/LoaderInterceptor11.java
  
  Index: LoaderInterceptor11.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/config/LoaderInterceptor11.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- LoaderInterceptor11.java  2001/06/16 20:18:49     1.11
  +++ LoaderInterceptor11.java  2001/06/17 18:09:15     1.12
  @@ -190,8 +190,8 @@
        if( debug>5 ) {
            log("  Context classpath URLs:");
            for (int i = 0; i < classP.length; i++)
  -             log("    " + classP[i].toString() );
  -     }
  +                log("    " + classP[i].toString() );
  +        }
   
        ClassLoader parent=null;
        if( useAL && !context.isTrusted() ) {
  @@ -246,11 +246,11 @@
        URL classPaths[]=ctx.getClassPath();
        convertClassPath( cpath , classPaths );
   
  -        ClassLoader parentLoader=ctx.getContextManager().getParentLoader();
  -     // apps class path 
  -     convertClassPath(cpath, jdkProxy.getParentURLs(parentLoader));
  +        ClassLoader Loader=ctx.getClassLoader();
  +        // apps class loader
  +     convertClassPath(cpath, jdkProxy.getURLs(Loader,1));
        // common class loader
  -     convertClassPath(cpath, jdkProxy.getURLs(parentLoader));
  +     convertClassPath(cpath, jdkProxy.getURLs(Loader,2));
        if( debug>9 )
            log("Getting classpath " + cpath);
        return cpath.toString();
  
  
  
  1.25      +5 -3      
jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterceptor.java
  
  Index: JspInterceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterceptor.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- JspInterceptor.java       2001/06/02 21:35:01     1.24
  +++ JspInterceptor.java       2001/06/17 18:09:16     1.25
  @@ -789,13 +789,15 @@
           Jdk11Compat jdkProxy=Jdk11Compat.getJdkCompat();
           URL appsCP[];
           URL commonCP[];
  -        ClassLoader parentLoader=ctx.getContextManager().getParentLoader();
  -        appsCP=jdkProxy.getParentURLs(parentLoader);
  -        commonCP=jdkProxy.getURLs(parentLoader);
  +        ClassLoader loader=ctx.getClassLoader();
  +        //The next will be the container classpath in trusted apps
  +        appsCP=jdkProxy.getURLs(loader,1);
  +        commonCP=jdkProxy.getURLs(loader,2);
        if( appsCP!=null ) 
            cpath+=separator+extractClassPath(appsCP);
        if( commonCP!=null ) 
            cpath+=separator+extractClassPath(commonCP);
  +//        System.out.println("classpath: " + cpath );
        return cpath;
       }
       String extractClassPath(URL urls[]){
  
  
  
  1.4       +8 -4      
jakarta-tomcat/src/share/org/apache/tomcat/util/depend/DependClassLoader.java
  
  Index: DependClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/depend/DependClassLoader.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DependClassLoader.java    2001/01/14 20:55:27     1.3
  +++ DependClassLoader.java    2001/06/17 18:09:18     1.4
  @@ -87,12 +87,12 @@
       DependManager dependM;
   
       public DependClassLoader( DependManager depM, ClassLoader parent ) {
  -     super(); // will check permissions 
  +     super(); // will check permissions
        this.parent=parent;
        dependM=depM;
       }
   
  -    // debug only 
  +    // debug only
       final void log( String s ) {
        System.out.println("DependClassLoader: " + s );
       }
  @@ -129,7 +129,7 @@
        if( res==null ) {
            if( debug >0  )  log( "Resource not found !!! " + name + " " + 
classFileName);
        }
  -     
  +
        try {
            c = parent.loadClass(name);
            if (c != null) {
  @@ -175,7 +175,11 @@
        dep.setLastModified( f.lastModified() );
        dep.setTarget( c );
        dep.setOrigin( f );
  -     
  +
        dependM.addDependency( dep );
  +    }
  +
  +    public ClassLoader getParentLoader() {
  +        return parent;
       }
   }
  
  
  

Reply via email to