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]

Reply via email to