glenn 01/04/25 18:14:04
Modified: catalina/src/share/org/apache/catalina/core
ApplicationContext.java
Log:
Wrap servlet logging with doPrivileged
Revision Changes Path
1.22 +88 -7
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
Index: ApplicationContext.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ApplicationContext.java 2001/04/25 17:17:49 1.21
+++ ApplicationContext.java 2001/04/26 01:14:02 1.22
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
1.21 2001/04/25 17:17:49 craigmcc Exp $
- * $Revision: 1.21 $
- * $Date: 2001/04/25 17:17:49 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
1.22 2001/04/26 01:14:02 glenn Exp $
+ * $Revision: 1.22 $
+ * $Date: 2001/04/26 01:14:02 $
*
* ====================================================================
*
@@ -111,7 +111,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.21 $ $Date: 2001/04/25 17:17:49 $
+ * @version $Revision: 1.22 $ $Date: 2001/04/26 01:14:02 $
*/
public final class ApplicationContext
@@ -158,10 +158,10 @@
protected class PrivilegedGetResource
implements PrivilegedExceptionAction {
-
- private String path;
+
+ private String path;
private String host;
- private DirContext resources;
+ private DirContext resources;
PrivilegedGetResource(String host, String path, DirContext resources) {
this.host = host;
@@ -176,7 +176,59 @@
}
+ protected class PrivilegedLogMessage
+ implements PrivilegedAction {
+
+ private String message;
+
+ PrivilegedLogMessage(String message) {
+ this.message = message;
+ }
+
+ public Object run() {
+ internalLog(message);
+ return null;
+ }
+
+ }
+
+ protected class PrivilegedLogException
+ implements PrivilegedAction {
+
+ private String message;
+ private Exception exception;
+
+ PrivilegedLogException(Exception exception,String message) {
+ this.message = message;
+ this.exception = exception;
+ }
+
+ public Object run() {
+ internalLog(exception,message);
+ return null;
+ }
+
+ }
+
+ protected class PrivilegedLogThrowable
+ implements PrivilegedAction {
+
+ private String message;
+ private Throwable throwable;
+
+ PrivilegedLogThrowable(String message,Throwable throwable) {
+ this.message = message;
+ this.throwable = throwable;
+ }
+
+ public Object run() {
+ internalLog(message,throwable);
+ return null;
+ }
+
+ }
+
// ----------------------------------------------------------- Constructors
@@ -682,7 +734,17 @@
* @param message Message to be written
*/
public void log(String message) {
+ if( System.getSecurityManager() != null ) {
+ PrivilegedLogMessage dp =
+ new PrivilegedLogMessage(message);
+ AccessController.doPrivileged(dp);
+ } else {
+ internalLog(message);
+ }
+ }
+ private void internalLog(String message) {
+
Logger logger = context.getLogger();
if (logger != null)
logger.log(message);
@@ -700,7 +762,16 @@
* <code>log(String, Throwable)</code> instead
*/
public void log(Exception exception, String message) {
+ if( System.getSecurityManager() != null ) {
+ PrivilegedLogException dp =
+ new PrivilegedLogException(exception,message);
+ AccessController.doPrivileged(dp);
+ } else {
+ internalLog(exception,message);
+ }
+ }
+ private void internalLog(Exception exception, String message) {
Logger logger = context.getLogger();
if (logger != null)
logger.log(exception, message);
@@ -715,6 +786,16 @@
* @param throwable Exception to be reported
*/
public void log(String message, Throwable throwable) {
+ if( System.getSecurityManager() != null ) {
+ PrivilegedLogThrowable dp =
+ new PrivilegedLogThrowable(message,throwable);
+ AccessController.doPrivileged(dp);
+ } else {
+ internalLog(message,throwable);
+ }
+ }
+
+ private void internalLog(String message, Throwable throwable) {
Logger logger = context.getLogger();
if (logger != null)