jfarcand    2003/03/18 08:23:36

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationDispatcher.java
  Log:
  Properly set the value used to create filter chain under a 
ApplicationDispatcher.forward
  
  Fix for bug: 17783,17784,17785,17787
  
  Revision  Changes    Path
  1.12      +19 -38    
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java
  
  Index: ApplicationDispatcher.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ApplicationDispatcher.java        19 Feb 2003 20:05:33 -0000      1.11
  +++ ApplicationDispatcher.java        18 Mar 2003 16:23:36 -0000      1.12
  @@ -129,7 +129,7 @@
               this.response = response;
           }
   
  -        public Object run() throws ServletException, IOException {
  +        public Object run() throws java.lang.Exception {
               doForward(request,response);
               return null;
           }
  @@ -397,17 +397,10 @@
   
               if ( log.isDebugEnabled() )
                   log.debug(" Non-HTTP Forward");
  -            // only set the Dispatcher Type to Forward if it has not been set. It 
will have
  -            // been set by the ErrorDispatcherValue in the case of an ERROR
  -            // it will be REQUEST coming in from the StandardWrapperValue and 
  -            // ERROR coming from the ErrorDispatcherValue
  -            if (request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR) 
!= null){
  -                Integer disInt = 
(Integer)request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
  -                if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
  -                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
  -                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
  -                }
  -            }
  +            
  +            
outerRequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
  +            
outerRequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
  +
               invoke(request, response);
           }
   
  @@ -416,17 +409,11 @@
   
               if ( log.isDebugEnabled() )
                   log.debug(" Named Dispatcher Forward");
  -            // only set the Dispatcher Type to Forward if it has not been set. It 
will have
  -            // been set by the ErrorDispatcherValue in the case of an ERROR
  -            // it will be REQUEST coming in from the StandardWrapperValue and 
  -            // ERROR coming from the ErrorDispatcherValue
  -            if (request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR) 
!= null){
  -                Integer disInt = 
(Integer)request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
  -                if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
  -                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
  -                    
request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
  -                }
  -            }
  +
  +            
  +            
request.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
  +            request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
  +            
               invoke(request, response);
   
           }
  @@ -468,17 +455,9 @@
                wrequest.setQueryParams(queryString);
               }
   
  -            // only set the Dispatcher Type to Forward if it has not been set. It 
will have
  -            // been set by the ErrorDispatcherValue in the case of an ERROR
  -            // it will be REQUEST coming in from the StandardWrapperValue and 
  -            // ERROR coming from the ErrorDispatcherValue
  -            if 
(wrequest.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR) != null){
  -                Integer disInt = 
(Integer)request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
  -                if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
  -                    
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
  -                    
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
  -                }
  -            }
  +            
outerRequest.setAttribute(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, 
origServletPath);
  +            
outerRequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, new 
Integer(ApplicationFilterFactory.FORWARD));
  + 
               invoke(outerRequest, response);
               unwrapRequest();
   
  @@ -686,6 +665,7 @@
           ServletException servletException = null;
           RuntimeException runtimeException = null;
           boolean unavailable = false;
  +              
   
           // Check for the servlet being marked unavailable
           if (wrapper.isUnavailable()) {
  @@ -727,6 +707,7 @@
                                 wrapper.getName()), e);
               servlet = null;
           }
  +                
           // Get the FilterChain Here
           ApplicationFilterFactory factory = ApplicationFilterFactory.getInstance();
           ApplicationFilterChain filterChain = factory.createFilterChain(request,
  
  
  

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

Reply via email to