yoavs       2004/11/22 06:54:57

  Modified:    webapps/docs Tag: TOMCAT_5_0 changelog.xml
               jasper2/src/share/org/apache/jasper Tag: TOMCAT_5_0
                        JspC.java
  Log:
  Bugzilla 32330: JspC changes context classloader
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.70.2.80 +3 -0      jakarta-tomcat-catalina/webapps/docs/changelog.xml
  
  Index: changelog.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/changelog.xml,v
  retrieving revision 1.70.2.79
  retrieving revision 1.70.2.80
  diff -u -r1.70.2.79 -r1.70.2.80
  --- changelog.xml     19 Nov 2004 15:17:40 -0000      1.70.2.79
  +++ changelog.xml     22 Nov 2004 14:54:56 -0000      1.70.2.80
  @@ -98,6 +98,9 @@
         <fix>
           <bug>29866</bug>: JspReader#skipUntil may try to read beyond the end 
of the file. (yoavs)
         </fix>
  +      <fix>
  +        <bug>32330</bug>: JspC changes context classloader. (yoavs)
  +      </fix>
       </changelog>
     </subsection>
   
  
  
  
  No                   revision
  No                   revision
  1.80.2.6  +22 -3     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java
  
  Index: JspC.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java,v
  retrieving revision 1.80.2.5
  retrieving revision 1.80.2.6
  diff -u -r1.80.2.5 -r1.80.2.6
  --- JspC.java 19 Nov 2004 14:37:47 -0000      1.80.2.5
  +++ JspC.java 22 Nov 2004 14:54:56 -0000      1.80.2.6
  @@ -813,6 +813,8 @@
       private void processFile(String file)
           throws JasperException
       {
  +        ClassLoader originalClassLoader = null;
  +
           try {
               // set up a scratch/output dir if none is provided
               if (scratchDir == null) {
  @@ -836,8 +838,9 @@
                   clctxt.setServletPackageName(targetPackage);
               }
   
  -            if( loader==null )
  -                initClassLoader( clctxt );
  +            if( loader==null ) {
  +                originalClassLoader = initClassLoader( clctxt );
  +            }
   
               clctxt.setClassLoader(loader);
               clctxt.setClassPath(classPath);
  @@ -877,6 +880,10 @@
                                                 e.getMessage()));
               }
               throw new JasperException(e);
  +        } finally {
  +            if(originalClassLoader != null) {
  +                
Thread.currentThread().setContextClassLoader(originalClassLoader);
  +            }
           }
       }
   
  @@ -1082,7 +1089,15 @@
           tagPluginManager = new TagPluginManager(context);
       }
   
  -    private void initClassLoader(JspCompilationContext clctxt)
  +    /**
  +     * Initializes the classloader for the given compilation
  +     * context.
  +     *
  +     * @param clctxt The compilation context
  +     * @return The original classloader before modifying
  +     * @throws IOException If an error occurs
  +     */
  +    private ClassLoader initClassLoader(JspCompilationContext clctxt)
           throws IOException {
   
           classPath = getClassPath();
  @@ -1159,7 +1174,11 @@
           URL urlsA[]=new URL[urls.size()];
           urls.toArray(urlsA);
           loader = new URLClassLoader(urlsA, this.getClass().getClassLoader());
  +
  +        ClassLoader originalClassLoader = 
Thread.currentThread().getContextClassLoader();
           Thread.currentThread().setContextClassLoader(loader);
  +
  +        return originalClassLoader;
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to