markt 2004/12/18 03:55:37
Modified: catalina/src/conf web.xml
catalina/src/share/org/apache/catalina/servlets
DefaultServlet.java
Log:
Fix bug 31201. When including static files with <jsp:include ...> platform
default file encoding is no longer assumed for the static file. This was
causing i18m issues, particularly for Japanese users.
- Patch supplied (with minor mods) by Takayuki Kaneko
Revision Changes Path
1.60 +3 -0 jakarta-tomcat-4.0/catalina/src/conf/web.xml
Index: web.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/conf/web.xml,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- web.xml 28 Sep 2004 21:51:49 -0000 1.59
+++ web.xml 18 Dec 2004 11:55:37 -0000 1.60
@@ -27,6 +27,9 @@
<!-- debug Debugging detail level for messages logged
-->
<!-- by this servlet. [0]
-->
<!--
-->
+ <!-- fileEncoding Encoding to be used to read static resources
-->
+ <!-- [platform default]
-->
+ <!--
-->
<!-- input Input buffer size (in bytes) when reading
-->
<!-- resources to be served. [2048]
-->
<!--
-->
1.65 +39 -5
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
Index: DefaultServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- DefaultServlet.java 22 Nov 2004 19:37:06 -0000 1.64
+++ DefaultServlet.java 18 Dec 2004 11:55:37 -0000 1.65
@@ -127,6 +127,13 @@
/**
+ * File encoding to be used when reading static files. If none is
specified
+ * the platform default is used.
+ */
+ protected String fileEncoding = null;
+
+
+ /**
* The MD5 helper object for this class.
*/
protected static final MD5Encoder md5Encoder = new MD5Encoder();
@@ -250,6 +257,12 @@
} catch (Throwable t) {
;
}
+ try {
+ value = getServletConfig().getInitParameter("fileEncoding");
+ fileEncoding = value;
+ } catch (Throwable t) {
+ ;
+ }
// Sanity check on the specified buffer sizes
if (input < 256)
@@ -1736,8 +1749,14 @@
IOException exception = null;
InputStream resourceInputStream = resourceInfo.getStream();
- // FIXME : i18n ?
- Reader reader = new InputStreamReader(resourceInputStream);
+
+ Reader reader;
+ if (fileEncoding == null) {
+ reader = new InputStreamReader(resourceInputStream);
+ } else {
+ reader = new InputStreamReader(resourceInputStream,
+ fileEncoding);
+ }
// Copy the input stream to the output stream
exception = copyRange(reader, writer);
@@ -1808,7 +1827,15 @@
IOException exception = null;
InputStream resourceInputStream = resourceInfo.getStream();
- Reader reader = new InputStreamReader(resourceInputStream);
+
+ Reader reader;
+ if (fileEncoding == null) {
+ reader = new InputStreamReader(resourceInputStream);
+ } else {
+ reader = new InputStreamReader(resourceInputStream,
+ fileEncoding);
+ }
+
exception = copyRange(reader, writer, range.start, range.end);
// Clean up the input stream
@@ -1902,7 +1929,14 @@
while ( (exception == null) && (ranges.hasMoreElements()) ) {
InputStream resourceInputStream = resourceInfo.getStream();
- Reader reader = new InputStreamReader(resourceInputStream);
+
+ Reader reader;
+ if (fileEncoding == null) {
+ reader = new InputStreamReader(resourceInputStream);
+ } else {
+ reader = new InputStreamReader(resourceInputStream,
+ fileEncoding);
+ }
Range currentRange = (Range) ranges.nextElement();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]