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(){
+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() {
+ public ELContextImpl run() {
+ return new ELContextImpl(r);
+ }
+ });
+ } else {
+ ctx = new ELContextImpl(r);
+ }
ctx.putContext(JspContext.class, context);
// alert all ELContextLis