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]