Author: markt
Date: Wed Sep 18 13:21:08 2013
New Revision: 1524400
URL: http://svn.apache.org/r1524400
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46727
Refactor default servlet to make it easier to sub-class to implement finer
grained control of the file encoding. Based on a patch by Fred Toth.
Modified:
tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java?rev=1524400&r1=1524399&r2=1524400&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java Wed Sep
18 13:21:08 2013
@@ -387,7 +387,7 @@ public class DefaultServlet
throws IOException, ServletException {
// Serve the requested resource, including the data content
- serveResource(request, response, true);
+ serveResource(request, response, true, fileEncoding);
}
@@ -407,7 +407,7 @@ public class DefaultServlet
throws IOException, ServletException {
// Serve the requested resource, without the data content
- serveResource(request, response, false);
+ serveResource(request, response, false, fileEncoding);
}
@@ -664,16 +664,19 @@ public class DefaultServlet
/**
* Serve the specified resource, optionally including the data content.
*
- * @param request The servlet request we are processing
+ * @param request The servlet request we are processing
* @param response The servlet response we are creating
- * @param content Should the content be included?
+ * @param content Should the content be included?
+ * @param encoding The encoding to use if it is necessary to access the
+ * source as characters rather than as bytes
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet-specified error occurs
*/
protected void serveResource(HttpServletRequest request,
HttpServletResponse response,
- boolean content)
+ boolean content,
+ String encoding)
throws IOException, ServletException {
boolean serveContent = content;
@@ -877,7 +880,7 @@ public class DefaultServlet
contentLength, null))
copy(resource, renderResult, ostream);
} else {
- copy(resource, renderResult, writer);
+ copy(resource, renderResult, writer, encoding);
}
}
@@ -1764,11 +1767,12 @@ public class DefaultServlet
* @param resource The source resource
* @param is The input stream to read the source resource from
* @param writer The writer to write to
+ * @param encoding The encoding to use when reading the source input
stream
*
* @exception IOException if an input/output error occurs
*/
- protected void copy(WebResource resource, InputStream is, PrintWriter
writer)
- throws IOException {
+ protected void copy(WebResource resource, InputStream is, PrintWriter
writer,
+ String encoding) throws IOException {
IOException exception = null;
@@ -1780,11 +1784,10 @@ public class DefaultServlet
}
Reader reader;
- if (fileEncoding == null) {
+ if (encoding == null) {
reader = new InputStreamReader(resourceInputStream);
} else {
- reader = new InputStreamReader(resourceInputStream,
- fileEncoding);
+ reader = new InputStreamReader(resourceInputStream, encoding);
}
// Copy the input stream to the output stream
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1524400&r1=1524399&r2=1524400&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Sep 18 13:21:08 2013
@@ -65,6 +65,11 @@
contributions from Nick Williams, Rossen Stoyanchev and Niki Dokovski.
(markt)
</add>
+ <update>
+ <bug>46727</bug>: Refactor default servlet to make it easier to
+ sub-class to implement finer grained control of the file encoding.
Based
+ on a patch by Fred Toth. (markt)
+ </update>
<add>
<bug>45995</bug>: Align Tomcat with Apache httpd and perform MIME type
mapping based on file extension in a case insensitive manner. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]