You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by jf...@apache.org on 2004/10/01 03:10:17 UTC

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core ApplicationContextFacade.java ApplicationFilterChain.java StandardWrapper.java

jfarcand    2004/09/30 18:10:17

  Modified:    catalina/src/share/org/apache/catalina/core Tag: TOMCAT_5_0
                        ApplicationContextFacade.java
                        ApplicationFilterChain.java StandardWrapper.java
  Log:
  Rollback wrong logic.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.10.2.2  +28 -55    jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationContextFacade.java
  
  Index: ApplicationContextFacade.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationContextFacade.java,v
  retrieving revision 1.10.2.1
  retrieving revision 1.10.2.2
  diff -u -r1.10.2.1 -r1.10.2.2
  --- ApplicationContextFacade.java	30 Sep 2004 15:53:31 -0000	1.10.2.1
  +++ ApplicationContextFacade.java	1 Oct 2004 01:10:17 -0000	1.10.2.2
  @@ -52,13 +52,8 @@
       /**
        * Cache Class object used for reflection.
        */
  -    private static HashMap classCache = new HashMap();
  +    private HashMap classCache;
       
  -    static {
  -        if (System.getSecurityManager() != null) {
  -            initClassCache();
  -        }
  -    }
       
       /**
        * Cache method object.
  @@ -69,13 +64,7 @@
       private static org.apache.commons.logging.Log sysLog=
           org.apache.commons.logging.LogFactory.getLog( ApplicationContextFacade.class );
   
  -    
  -    /**
  -     * Object repository used when the SecurityManager is turned on and
  -     * Filter.doFilter is invoked.
  -     */    
  -    private Object[] objectArg = new Object[1];
  -    private Object[] objectArgs = new Object[2];        
  +        
       // ----------------------------------------------------------- Constructors
   
   
  @@ -89,12 +78,13 @@
           super();
           this.context = context;
           
  +        classCache = new HashMap();
           objectCache = new HashMap();
  -
  +        initClassCache();
       }
       
       
  -    private static void initClassCache(){
  +    private void initClassCache(){
           Class[] clazz = new Class[]{String.class};
           classCache.put("getContext", clazz);
           classCache.put("getMimeType", clazz);
  @@ -129,8 +119,8 @@
       public ServletContext getContext(String uripath) {
           ServletContext theContext = null;
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = uripath; 
  -            theContext = (ServletContext)doPrivileged("getContext", objectArg);
  +            theContext = (ServletContext)
  +                doPrivileged("getContext", new Object[]{uripath});
           } else {
               theContext = context.getContext(uripath);
           }
  @@ -154,8 +144,7 @@
   
       public String getMimeType(String file) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = file;
  -            return (String)doPrivileged("getMimeType", objectArg);
  +            return (String)doPrivileged("getMimeType", new Object[]{file});
           } else {
               return context.getMimeType(file);
           }
  @@ -164,8 +153,7 @@
   
       public Set getResourcePaths(String path) {
           if (System.getSecurityManager() != null){
  -            objectArg[0] = path;
  -            return (Set)doPrivileged("getResourcePaths", objectArg);
  +            return (Set)doPrivileged("getResourcePaths", new Object[]{path});
           } else {
               return context.getResourcePaths(path);
           }
  @@ -176,9 +164,8 @@
           throws MalformedURLException {
           if (System.getSecurityManager() != null) {
               try {
  -                objectArg[0] = path;
                   return (URL) invokeMethod(context, "getResource", 
  -                                          objectArg);
  +                                          new Object[]{path});
               } catch(Throwable t) {
                   if (t instanceof MalformedURLException){
                       throw (MalformedURLException)t;
  @@ -193,9 +180,8 @@
   
       public InputStream getResourceAsStream(String path) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = path;
               return (InputStream) doPrivileged("getResourceAsStream", 
  -                                              objectArg);
  +                                              new Object[]{path});
           } else {
               return context.getResourceAsStream(path);
           }
  @@ -204,9 +190,8 @@
   
       public RequestDispatcher getRequestDispatcher(final String path) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = path;
               return (RequestDispatcher) doPrivileged("getRequestDispatcher", 
  -                                                    objectArg);
  +                                                    new Object[]{path});
           } else {
               return context.getRequestDispatcher(path);
           }
  @@ -215,9 +200,8 @@
   
       public RequestDispatcher getNamedDispatcher(String name) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = name;
               return (RequestDispatcher) doPrivileged("getNamedDispatcher", 
  -                                                    objectArg);
  +                                                    new Object[]{name});
           } else {
               return context.getNamedDispatcher(name);
           }
  @@ -228,9 +212,8 @@
           throws ServletException {
           if (System.getSecurityManager() != null) {
               try {
  -                objectArg[0] = name;
                   return (Servlet) invokeMethod(context, "getServlet", 
  -                                              objectArg);
  +                                              new Object[]{name});
               } catch (Throwable t) {
                   if (t instanceof ServletException) {
                       throw (ServletException) t;
  @@ -263,8 +246,7 @@
   
       public void log(String msg) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = msg;
  -            doPrivileged("log", objectArg );
  +            doPrivileged("log", new Object[]{msg} );
           } else {
               context.log(msg);
           }
  @@ -283,10 +265,8 @@
   
       public void log(String message, Throwable throwable) {
           if (System.getSecurityManager() != null) {
  -            objectArgs[0] = message;
  -            objectArgs[1] = throwable;
               doPrivileged("log", new Class[]{String.class, Throwable.class}, 
  -                         objectArgs);
  +                         new Object[]{message, throwable});
           } else {
               context.log(message, throwable);
           }
  @@ -295,8 +275,7 @@
   
       public String getRealPath(String path) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = path;
  -            return (String) doPrivileged("getRealPath", objectArg);
  +            return (String) doPrivileged("getRealPath", new Object[]{path});
           } else {
               return context.getRealPath(path);
           }
  @@ -314,9 +293,8 @@
   
       public String getInitParameter(String name) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = name;
               return (String) doPrivileged("getInitParameter", 
  -                                         objectArg);
  +                                         new Object[]{name});
           } else {
               return context.getInitParameter(name);
           }
  @@ -334,8 +312,7 @@
   
       public Object getAttribute(String name) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = name;
  -            return doPrivileged("getAttribute", objectArg);
  +            return doPrivileged("getAttribute", new Object[]{name});
           } else {
               return context.getAttribute(name);
           }
  @@ -343,7 +320,7 @@
   
   
       public Enumeration getAttributeNames() {
  -        if (System.getSecurityManager() != null) {           
  +        if (System.getSecurityManager() != null) {
               return (Enumeration) doPrivileged("getAttributeNames", null);
           } else {
               return context.getAttributeNames();
  @@ -353,9 +330,7 @@
   
       public void setAttribute(String name, Object object) {
           if (System.getSecurityManager() != null) {
  -            objectArgs[0] = name;
  -            objectArgs[1] = object;
  -            doPrivileged("setAttribute", objectArgs);
  +            doPrivileged("setAttribute", new Object[]{name,object});
           } else {
               context.setAttribute(name, object);
           }
  @@ -364,8 +339,7 @@
   
       public void removeAttribute(String name) {
           if (System.getSecurityManager() != null) {
  -            objectArg[0] = name;
  -            doPrivileged("removeAttribute", objectArg);
  +            doPrivileged("removeAttribute", new Object[]{name});
           } else {
               context.removeAttribute(name);
           }
  @@ -395,7 +369,7 @@
           try{
               return invokeMethod(appContext, methodName, params );
           } catch (Throwable t){
  -            throw new RuntimeException(t);
  +            throw new RuntimeException(t.getMessage());
           }
   
       }
  @@ -412,7 +386,7 @@
           try{
               return invokeMethod(context, methodName, params);
           }catch(Throwable t){
  -            throw new RuntimeException(t);
  +            throw new RuntimeException(t.getMessage());
           }
       }
   
  @@ -448,9 +422,8 @@
       /**
        * Use reflection to invoke the requested method. Cache the method object 
        * to speed up the process
  -     * @param appContext The AppliationContext object on which the method
  -     *                   will be invoked
  -     * @param methodName The method to call.
  +     * @param methodName The method to invoke.
  +     * @param clazz The class where the method is.
        * @param params The arguments passed to the called method.
        */    
       private Object doPrivileged(final String methodName, 
  @@ -465,7 +438,7 @@
               try{
                   handleException(ex, methodName);
               }catch (Throwable t){
  -                throw new RuntimeException(t);
  +                throw new RuntimeException(t.getMessage());
               }
               return null;
           }
  
  
  
  1.10.2.2  +11 -41    jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java
  
  Index: ApplicationFilterChain.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java,v
  retrieving revision 1.10.2.1
  retrieving revision 1.10.2.2
  diff -u -r1.10.2.1 -r1.10.2.2
  --- ApplicationFilterChain.java	30 Sep 2004 15:53:31 -0000	1.10.2.1
  +++ ApplicationFilterChain.java	1 Oct 2004 01:10:17 -0000	1.10.2.2
  @@ -111,35 +111,6 @@
        */
       private InstanceSupport support = null;
   
  -    
  -    /**
  -     * Static class array used when the SecurityManager is turned on and 
  -     * <code>doFilter</code is invoked.
  -     */
  -    private static Class[] classType = new Class[]{ServletRequest.class, 
  -                                                   ServletResponse.class,
  -                                                   FilterChain.class};
  -                                                   
  -    /**
  -     * Static class array used when the SecurityManager is turned on and 
  -     * <code>service</code is invoked.
  -     */                                                 
  -    private static Class[] classTypeUsedInService = new Class[]{
  -                                                         ServletRequest.class,
  -                                                         ServletResponse.class};
  -                                                   
  -    /**
  -     * Object repository used when the SecurityManager is turned on and
  -     * Filter.doFilter is invoked.
  -     */
  -    private Object[] filterType = new Object[3];
  -    
  -
  -    /**
  -     * Object repository used when the SecurityManager is turned on and
  -     * Filter.doFilter is invoked.
  -     */
  -    private Object[] serviceType = new Object[2];
   
       // ---------------------------------------------------- FilterChain Methods
   
  @@ -205,12 +176,12 @@
                       final ServletResponse res = response;
                       Principal principal = 
                           ((HttpServletRequest) req).getUserPrincipal();
  -
  -                    filterType[0] = req;
  -                    filterType[1] = res;
  -                    filterType[2] = this;
  +                    Class[] classType = new Class[]{ServletRequest.class, 
  +                                                    ServletResponse.class,
  +                                                    FilterChain.class};
  +                    Object[] args = new Object[]{req, res, this};
                       SecurityUtil.doAsPrivilege
  -                        ("doFilter", filter, classType, filterType);
  +                        ("doFilter", filter, classType, args);
                   } else {  
                       filter.doFilter(request, response, this);
                   }
  @@ -254,15 +225,14 @@
                       final ServletResponse res = response;
                       Principal principal = 
                           ((HttpServletRequest) req).getUserPrincipal();
  -
  -                    serviceType[0] = req;
  -                    serviceType[1] = res;
  -                    
  +                    Class[] classType = new Class[]{ServletRequest.class, 
  +                                                     ServletResponse.class};
  +                    Object[] args = new Object[]{req, res};
                       SecurityUtil.doAsPrivilege("service",
                                                  servlet,
  -                                               classTypeUsedInService, 
  -                                               serviceType,
  -                                               principal);                                                          
  +                                               classType, 
  +                                               args,
  +                                               principal);                                                   
                   } else {  
                       servlet.service((HttpServletRequest) request,
                                       (HttpServletResponse) response);
  
  
  
  1.43.2.2  +8 -35     jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
  
  Index: StandardWrapper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v
  retrieving revision 1.43.2.1
  retrieving revision 1.43.2.2
  diff -u -r1.43.2.1 -r1.43.2.2
  --- StandardWrapper.java	30 Sep 2004 15:53:31 -0000	1.43.2.1
  +++ StandardWrapper.java	1 Oct 2004 01:10:17 -0000	1.43.2.2
  @@ -240,35 +240,6 @@
       private long loadTime=0;
       private int classLoadTime=0;
   
  -    
  -    /**
  -     * Static class array used when the SecurityManager is turned on and 
  -     * <code>Servlet.init</code> is invoked.
  -     */
  -    private static Class[] classType = new Class[]{ServletConfig.class};
  -    
  -    
  -    /**
  -     * Object repository used when the SecurityManager is turned on and
  -     * <code>Servlet.init</code> is invoked.
  -     */
  -    private Object[] initType = new Object[1];
  -    
  -    
  -    /**
  -     * Static class array used when the SecurityManager is turned on and 
  -     * <code>Servlet.service</code>  is invoked.
  -     */                                                 
  -    private static Class[] classTypeUsedInService = new Class[]{
  -                                                         ServletRequest.class,
  -                                                         ServletResponse.class};
  -    
  -
  -    /**
  -     * Object repository used when the SecurityManager is turned on and
  -     * <code>Servlet.service</code> is invoked.
  -     */
  -    private Object[] serviceType = new Object[2];
       // ------------------------------------------------------------- Properties
   
   
  @@ -1048,11 +1019,12 @@
                                                     servlet);
   
                   if( System.getSecurityManager() != null) {
  -                    initType[0] = facade;
  +                    Class[] classType = new Class[]{ServletConfig.class};
  +                    Object[] args = new Object[]{((ServletConfig)facade)};
                       SecurityUtil.doAsPrivilege("init",
                                                  servlet,
                                                  classType,
  -                                               initType);
  +                                               args);
                   } else {
                       servlet.init(facade);
                   }
  @@ -1066,12 +1038,13 @@
                       DummyResponse res = new DummyResponse();
   
                       if( System.getSecurityManager() != null) {
  -                        serviceType[0] = req;
  -                        serviceType[1] = res;                
  +                        Class[] classType = new Class[]{ServletRequest.class,
  +                                                        ServletResponse.class};
  +                        Object[] args = new Object[]{req, res};
                           SecurityUtil.doAsPrivilege("service",
                                                      servlet,
  -                                                   classTypeUsedInService,
  -                                                   serviceType);
  +                                                   classType,
  +                                                   args);
                       } else {
                           servlet.service(req, res);
                       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org