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)
  
  
  

Reply via email to