pierred     00/12/22 06:19:15

  Modified:    src/share/org/apache/jasper Tag: tomcat_32
                        EmbededServletOptions.java JspC.java Options.java
               src/share/org/apache/jasper/compiler Tag: tomcat_32
                        Compiler.java
               src/share/org/apache/jasper/resources Tag: tomcat_32
                        messages.properties
               src/share/org/apache/tomcat/request Tag: tomcat_32
                        JspInterceptor.java
  Log:
  Bug fix: bug report #269 -- java.io.UnsupportedEncodingException when processing JSP
  
  From the bug report:
  
  "A "java.io.UnsupportedEncodingException: UTF8" is thrown when generating
  the servlet for a JSP file when the Kaffe VM is used. The "UTF8" encoding
  name is hardcoded in the Compiler class as the encoding for the generated
  servlet source code file. I believe the reason for using "UTF8" as opposed
  to "UTF-8" (note the dash) is that this is the only name supported in
  JDK 1.1. I suggest adding an init parameter to JspServlet for setting
  the encoding name when "UTF8" doesn't work."
  
  Given that there are several possible representations of Unicode data
  (UTF-8, UTF-16, UTF-32), and given that the supported encodings vary
  between different implementations of the Java platform,
  the best way to tackle this is probably as suggested by Hans.
  
  Submitted by: Hans Bergsten ( [EMAIL PROTECTED] )
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.1   +14 -4     
jakarta-tomcat/src/share/org/apache/jasper/EmbededServletOptions.java
  
  Index: EmbededServletOptions.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/EmbededServletOptions.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- EmbededServletOptions.java        2000/05/26 18:55:09     1.4
  +++ EmbededServletOptions.java        2000/12/22 14:19:10     1.4.2.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/EmbededServletOptions.java,v 1.4 
2000/05/26 18:55:09 costin Exp $
  - * $Revision: 1.4 $
  - * $Date: 2000/05/26 18:55:09 $
  + * $Header: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/EmbededServletOptions.java,v 
1.4.2.1 2000/12/22 14:19:10 pierred Exp $
  + * $Revision: 1.4.2.1 $
  + * $Date: 2000/12/22 14:19:10 $
    *
    * ====================================================================
    * 
  @@ -135,6 +135,11 @@
        */
       public String jspCompilerPath = null;
   
  +    /**
  +     * Java platform encoding to generate the JSP
  +     * page servlet.
  +     */
  +    private String javaEncoding;
   
       /**
        * Are we keeping generated code around?
  @@ -207,6 +212,10 @@
           return jspCompilerPath;
       }
   
  +    public String getJavaEncoding() {
  +     return javaEncoding;
  +    }
  +
       /**
        * Create an EmbededServletOptions object using data available from
        * ServletConfig and ServletContext. 
  @@ -309,7 +318,8 @@
                                     Logger.FATAL);
               }
           }
  -  
  +
  +        this.javaEncoding = config.getInitParameter("javaEncoding");
       }
   }
   
  
  
  
  1.15.2.2  +7 -3      jakarta-tomcat/src/share/org/apache/jasper/JspC.java
  
  Index: JspC.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/JspC.java,v
  retrieving revision 1.15.2.1
  retrieving revision 1.15.2.2
  diff -u -r1.15.2.1 -r1.15.2.2
  --- JspC.java 2000/07/12 16:04:20     1.15.2.1
  +++ JspC.java 2000/12/22 14:19:10     1.15.2.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/JspC.java,v 
1.15.2.1 2000/07/12 16:04:20 shemnon Exp $
  - * $Revision: 1.15.2.1 $
  - * $Date: 2000/07/12 16:04:20 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/JspC.java,v 
1.15.2.2 2000/12/22 14:19:10 pierred Exp $
  + * $Revision: 1.15.2.2 $
  + * $Date: 2000/12/22 14:19:10 $
    *
    * ====================================================================
    * 
  @@ -198,6 +198,10 @@
       public String getJspCompilerPath() {
          // we don't compile, so this is meanlingless
           return null;
  +    }
  +
  +    public String getJavaEncoding() {
  +     return "UTF-8";
       }
   
       public String getClassPath() {
  
  
  
  1.11.2.1  +9 -3      jakarta-tomcat/src/share/org/apache/jasper/Options.java
  
  Index: Options.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/Options.java,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -u -r1.11 -r1.11.2.1
  --- Options.java      2000/05/26 18:55:10     1.11
  +++ Options.java      2000/12/22 14:19:11     1.11.2.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/Options.java,v 
1.11 2000/05/26 18:55:10 costin Exp $
  - * $Revision: 1.11 $
  - * $Date: 2000/05/26 18:55:10 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/Options.java,v 
1.11.2.1 2000/12/22 14:19:11 pierred Exp $
  + * $Revision: 1.11.2.1 $
  + * $Date: 2000/12/22 14:19:11 $
    *
    * ====================================================================
    * 
  @@ -125,4 +125,10 @@
        * ProtectionDomain for this JSP Context when using a SecurityManager
        */
       public Object getProtectionDomain();
  +
  +    /**
  +     * Java platform encoding to generate the JSP
  +     * page servlet.
  +     */
  +    public String getJavaEncoding();
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.3  +36 -9     
jakarta-tomcat/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.19.2.2
  retrieving revision 1.19.2.3
  diff -u -r1.19.2.2 -r1.19.2.3
  --- Compiler.java     2000/08/28 17:48:24     1.19.2.2
  +++ Compiler.java     2000/12/22 14:19:12     1.19.2.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/Compiler.java,v 1.19.2.2 
2000/08/28 17:48:24 rubys Exp $
  - * $Revision: 1.19.2.2 $
  - * $Date: 2000/08/28 17:48:24 $
  + * $Header: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/Compiler.java,v 1.19.2.3 
2000/12/22 14:19:12 pierred Exp $
  + * $Revision: 1.19.2.3 $
  + * $Date: 2000/12/22 14:19:12 $
    *
    * ====================================================================
    * 
  @@ -66,6 +66,7 @@
   import java.io.PrintWriter;
   import java.io.ByteArrayOutputStream;
   import java.io.FileOutputStream;
  +import java.io.OutputStreamWriter;
   
   import org.apache.jasper.JspCompilationContext;
   import org.apache.jasper.Constants;
  @@ -143,8 +144,11 @@
           // XXX - There are really three encodings of interest.
   
           String jspEncoding = "8859_1";          // default per JSP spec
  -        String javaEncoding = "UTF8";           // perhaps debatable?
   
  +     // We try UTF8 by default. If it fails, we use the java encoding 
  +     // specified for JspServlet init parameter "javaEncoding".
  +        String javaEncoding = "UTF8";
  +
        // This seems to be a reasonable point to scan the JSP file
        // for a 'contentType' directive. If it found then the set
        // the value of 'jspEncoding to reflect the value specified.
  @@ -166,11 +170,34 @@
               jspEncoding
           );
   
  -        ServletWriter writer = 
  -            (new ServletWriter
  -                (new PrintWriter
  -                    (new java.io.OutputStreamWriter(
  -                        new FileOutputStream(javaFileName),javaEncoding))));
  +     OutputStreamWriter osw; 
  +     try {
  +         osw = new OutputStreamWriter(
  +                   new FileOutputStream(javaFileName),javaEncoding);
  +     } catch (java.io.UnsupportedEncodingException ex) {
  +         // Try to get the java encoding from the "javaEncoding"
  +         // init parameter for JspServlet.
  +         javaEncoding = ctxt.getOptions().getJavaEncoding();
  +         if (javaEncoding != null) {
  +             try {
  +                 osw = new OutputStreamWriter(
  +                           new FileOutputStream(javaFileName),javaEncoding);
  +             } catch (java.io.UnsupportedEncodingException ex2) {
  +                 // no luck :-(
  +                 throw new JasperException(
  +                     Constants.getString("jsp.error.invalid.javaEncoding",
  +                                         new Object[] { 
  +                                             "UTF8", 
  +                                             javaEncoding,
  +                                         }));
  +             }
  +         } else {
  +             throw new JasperException(
  +                 Constants.getString("jsp.error.needAlternateJavaEncoding",
  +                                     new Object[] { "UTF8" }));              
  +         }
  +     }
  +     ServletWriter writer = new ServletWriter(new PrintWriter(osw));
   
           ctxt.setReader(reader);
           ctxt.setWriter(writer);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.17.2.7  +3 -1      
jakarta-tomcat/src/share/org/apache/jasper/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/resources/messages.properties,v
  retrieving revision 1.17.2.6
  retrieving revision 1.17.2.7
  diff -u -r1.17.2.6 -r1.17.2.7
  --- messages.properties       2000/11/06 04:08:15     1.17.2.6
  +++ messages.properties       2000/12/22 14:19:13     1.17.2.7
  @@ -1,4 +1,4 @@
  -# $Id: messages.properties,v 1.17.2.6 2000/11/06 04:08:15 larryi Exp $
  +# $Id: messages.properties,v 1.17.2.7 2000/12/22 14:19:13 pierred Exp $
   #
   # Default localized string information
   # Localized this the Default Locale as is en_US
  @@ -211,3 +211,5 @@
   jspc.error.emptyWebApp=-webapp requires a trailing file argument
   jsp.error.no.more.content=End of content reached while more parsing required: 
unterminated tag or tag nesting error?
   jsp.error.unterminated.user.tag=Unterminated user-defined tag: ending tag {0} not 
found or incorrectly nested 
  +jsp.error.invalid.javaEncoding=Invalid java encodings. Tried {0} and then {1}. Both 
failed.
  +jsp.error.needAlternateJavaEncoding=Default java encoding {0} is invalid on your 
java platform. An alternate can be specified via the 'javaEncoding' parameter of 
JspServlet.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +10 -0     
jakarta-tomcat/src/share/org/apache/tomcat/request/Attic/JspInterceptor.java
  
  Index: JspInterceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/Attic/JspInterceptor.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- JspInterceptor.java       2000/06/30 20:21:41     1.3
  +++ JspInterceptor.java       2000/12/22 14:19:14     1.3.2.1
  @@ -524,6 +524,16 @@
       public String getJspCompilerPath() {
           return jspCompilerPath;
       }
  +
  +    /**
  +     * FIXME: see how compiler.Compiler handles javaEncoding
  +     * and implement that behavior in this class when it 
  +     * is 'enabled' (pierred). This has been added only so the
  +     * code compiles.
  +     */
  +    public String getJavaEncoding() {
  +     return "FIXME: NOT IMPLEMENTED";
  +    }
   }
   
   
  
  
  

Reply via email to