Author: markt
Date: Sat Nov 29 11:01:57 2008
New Revision: 721704

URL: http://svn.apache.org/viewvc?rev=721704&view=rev
Log:
Fix some TCK failures when using a security manager.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
    tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
    tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java

Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=721704&r1=721703&r2=721704&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Sat 
Nov 29 11:01:57 2008
@@ -205,14 +205,24 @@
      * @throws java.lang.reflect.InvocationTargetException
      *                                if call fails
      */
-    protected void preDestroy(Object instance, Class<?> clazz)
+    protected void preDestroy(Object instance, final Class<?> clazz)
             throws IllegalAccessException, InvocationTargetException {
         Class<?> superClass = clazz.getSuperclass();
         if (superClass != Object.class) {
             preDestroy(instance, superClass);
         }
 
-        Method[] methods = clazz.getDeclaredMethods();
+        Method[] methods;
+        if (Globals.IS_SECURITY_ENABLED) {
+            methods = AccessController.doPrivileged(
+                    new PrivilegedAction<Method[]>(){
+                public Method[] run(){
+                    return clazz.getDeclaredMethods();
+                }
+            });
+        } else {
+            methods = clazz.getDeclaredMethods();
+        }
         Method preDestroy = null;
         for (Method method : methods) {
             if (method.isAnnotationPresent(PreDestroy.class)) {

Modified: tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=721704&r1=721703&r2=721704&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java Sat 
Nov 29 11:01:57 2008
@@ -64,6 +64,21 @@
              "core.ContainerBase$PrivilegedAddChild");
         loader.loadClass
             (basePackage +
+             "core.DefaultInstanceManager$1");
+        loader.loadClass
+            (basePackage +
+             "core.DefaultInstanceManager$2");
+        loader.loadClass
+            (basePackage +
+             "core.DefaultInstanceManager$3");
+        loader.loadClass
+            (basePackage +
+             "core.DefaultInstanceManager$4");
+        loader.loadClass
+            (basePackage +
+             "core.DefaultInstanceManager$5");
+        loader.loadClass
+            (basePackage +
              "core.ApplicationHttpRequest$AttributeNamesEnumerator");
     }
     

Modified: 
tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java?rev=721704&r1=721703&r2=721704&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java 
(original)
+++ tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java 
Sat Nov 29 11:01:57 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jasper.runtime;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -37,6 +39,7 @@
 import javax.servlet.jsp.el.ScopedAttributeELResolver;
 
 import org.apache.el.ExpressionFactoryImpl;
+import org.apache.jasper.Constants;
 import org.apache.jasper.el.ELContextImpl;
 
 /**
@@ -88,8 +91,18 @@
                }
 
                // create ELContext for JspContext
-               ELResolver r = this.createELResolver();
-               ELContextImpl ctx = new ELContextImpl(r);
+               final ELResolver r = this.createELResolver();
+               ELContextImpl ctx;
+               if (Constants.IS_SECURITY_ENABLED) {
+                   ctx = AccessController.doPrivileged(
+                           new PrivilegedAction<ELContextImpl>() {
+                               public ELContextImpl run() {
+                                   return new ELContextImpl(r);
+                               }
+                           });
+               } else {
+                   ctx = new ELContextImpl(r);
+               }
                ctx.putContext(JspContext.class, context);
 
                // alert all ELContextListeners



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

Reply via email to