Fix regression in previous fix for https://issues.apache.org/bugzilla/show_bug.cgi...
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 22 Jul 2010 21:36:11 +0000 (21:36 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 22 Jul 2010 21:36:11 +0000 (21:36 +0000)
Use TCCL to load webapp classes

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@966863 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/compiler/ELFunctionMapper.java

index 235b402..ce758cd 100644 (file)
 
 package org.apache.jasper.compiler;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.*;
 import javax.servlet.jsp.tagext.FunctionInfo;
+
+import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 
 /**
@@ -296,13 +300,30 @@ public class ELFunctionMapper {
          */
         private String getCanonicalName(String className) throws JasperException {
             Class<?> clazz;
+            
+            ClassLoader tccl;
+            if (Constants.IS_SECURITY_ENABLED) {
+                PrivilegedAction<ClassLoader> pa = new PrivilegedGetTccl();
+                tccl = AccessController.doPrivileged(pa);
+            } else {
+                tccl = Thread.currentThread().getContextClassLoader();
+            }
+
             try {
-                clazz = Class.forName(className);
+                clazz = Class.forName(className, true, tccl);
             } catch (ClassNotFoundException e) {
                 throw new JasperException(e);
             }
             return clazz.getCanonicalName();
         }
     }
+    
+    private static class PrivilegedGetTccl
+            implements PrivilegedAction<ClassLoader> {
+
+        public ClassLoader run() {
+            return Thread.currentThread().getContextClassLoader();
+        }
+    }
 }