Author: markt Date: Sun Oct 1 16:17:16 2006 New Revision: 451838 URL: http://svn.apache.org/viewvc?view=rev&rev=451838 Log: Add STRICT_SERVLET_COMPLIANCE option as per 6.x Wrap fix for 34956 in a test for this.
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/Globals.java tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/Globals.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/Globals.java?view=diff&rev=451838&r1=451837&r2=451838 ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/Globals.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/Globals.java Sun Oct 1 16:17:16 2006 @@ -321,4 +321,12 @@ "javax.servlet.context.tempdir"; + /** + * The master flag which controls strict servlet specification + * compliance. + */ + public static final boolean STRICT_SERVLET_COMPLIANCE = + Boolean.valueOf(System.getProperty("org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "false")).booleanValue(); + + } Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java?view=diff&rev=451838&r1=451837&r2=451838 ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java Sun Oct 1 16:17:16 2006 @@ -324,8 +324,10 @@ // Set up to handle the specified request and response setup(request, response, false); - // Check SRV.8.2 / SRV.14.2.5.1 compliance - checkSameObjects(); + if (Globals.STRICT_SERVLET_COMPLIANCE) { + // Check SRV.8.2 / SRV.14.2.5.1 compliance + checkSameObjects(); + } // Identify the HTTP-specific request and response objects (if any) HttpServletRequest hrequest = null; @@ -509,8 +511,10 @@ // Set up to handle the specified request and response setup(request, response, true); - // Check SRV.8.2 / SRV.14.2.5.1 compliance - checkSameObjects(); + if (Globals.STRICT_SERVLET_COMPLIANCE) { + // Check SRV.8.2 / SRV.14.2.5.1 compliance + checkSameObjects(); + } // Create a wrapped response to use for this request // ServletResponse wresponse = null; Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java?view=diff&rev=451838&r1=451837&r2=451838 ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java Sun Oct 1 16:17:16 2006 @@ -31,6 +31,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.catalina.Globals; import org.apache.catalina.InstanceEvent; import org.apache.catalina.security.SecurityUtil; import org.apache.catalina.util.InstanceSupport; @@ -50,8 +51,18 @@ final class ApplicationFilterChain implements FilterChain { // Used to enforce requirements of SRV.8.2 / SRV.14.2.5.1 - private static ThreadLocal lastServicedRequest = new ThreadLocal(); - private static ThreadLocal lastServicedResponse = new ThreadLocal(); + private final static ThreadLocal lastServicedRequest; + private final static ThreadLocal lastServicedResponse; + + static { + if (Globals.STRICT_SERVLET_COMPLIANCE) { + lastServicedRequest = new ThreadLocal(); + lastServicedResponse = new ThreadLocal(); + } else { + lastServicedRequest = null; + lastServicedResponse = null; + } + } // -------------------------------------------------------------- Constants @@ -234,8 +245,10 @@ // We fell off the end of the chain -- call the servlet instance try { - lastServicedRequest.set(request); - lastServicedResponse.set(response); + if (Globals.STRICT_SERVLET_COMPLIANCE) { + lastServicedRequest.set(request); + lastServicedResponse.set(response); + } support.fireInstanceEvent(InstanceEvent.BEFORE_SERVICE_EVENT, servlet, request, response); if ((request instanceof HttpServletRequest) && @@ -280,8 +293,10 @@ throw new ServletException (sm.getString("filterChain.servlet"), e); } finally { - lastServicedRequest.set(null); - lastServicedResponse.set(null); + if (Globals.STRICT_SERVLET_COMPLIANCE) { + lastServicedRequest.set(null); + lastServicedResponse.set(null); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]